<?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>22061</bug_id>
          
          <creation_ts>2008-11-03 18:16:21 -0800</creation_ts>
          <short_desc>create script to check for exit-time destructors</short_desc>
          <delta_ts>2016-07-28 11:06:47 -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>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=160195</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=160302</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>21810</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>bolsinga</cc>
    
    <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>97526</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-03 18:16:21 -0800</bug_when>
    <thetext>We&apos;d like to eliminate all exit-time destructors from WebKit for faster process exit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97527</commentid>
    <comment_count>1</comment_count>
      <attachid>24876</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-03 18:25:08 -0800</bug_when>
    <thetext>Created attachment 24876
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97559</commentid>
    <comment_count>2</comment_count>
      <attachid>24876</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-11-04 05:26:59 -0800</bug_when>
    <thetext>Comment on attachment 24876
patch

&gt; +void lockAtomicallyInitializedStaticMutex() {}
&gt; +void unlockAtomicallyInitializedStaticMutex() { }

Space between the braces vs no space in the previous function.

&gt; +    static String&amp; key =  *new String(&quot;WebKitDatabaseVersionKey&quot;);

Extra space between the assignment.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97586</commentid>
    <comment_count>3</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 11:09:56 -0800</bug_when>
    <thetext>I think this fixes Bug 21810</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97588</commentid>
    <comment_count>4</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-11-04 11:11:44 -0800</bug_when>
    <thetext>*** Bug 21810 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97592</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-04 11:19:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I think this fixes Bug 21810

No, it doesn&apos;t fix it. It&apos;s just the tool to help us track the additional work needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215276</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-07-28 11:06:05 -0700</bug_when>
    <thetext>Landed in r38100.  &lt;https://trac.webkit.org/r38100&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24876</attachid>
            <date>2008-11-03 18:25:08 -0800</date>
            <delta_ts>2008-11-04 05:26:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>DestructorPatch.txt</filename>
            <type>text/plain</type>
            <size>49392</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MDgxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAKKzIwMDgtMTEtMDMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMDYxCisgICAgICAgICAgY3JlYXRlIHNjcmlwdCB0byBjaGVjayBmb3IgZXhpdC10aW1lIGRl
c3RydWN0b3JzCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6IENoYW5nZWQgdG8gZXhw
b3J0IGZ1bmN0aW9ucyByYXRoZXIgdGhhbgorICAgICAgICBhIGdsb2JhbCBmb3IgdGhlIGF0b21p
Y2FsbHkgaW5pdGlhbGl6ZWQgc3RhdGljIG11dGV4LgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgYSBzY3JpcHQKKyAgICAgICAgcGhh
c2UgdGhhdCBydW5zIHRoZSBjaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzIHNjcmlwdC4K
KworICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAgICAgICAgKFdURjo6bWFpblRocmVh
ZEZ1bmN0aW9uUXVldWVNdXRleCk6IENoYW5nZWQgdG8gbGVhayBhbiBvYmplY3QKKyAgICAgICAg
cmF0aGVyIHRoYW4gdXNpbmcgYW4gZXhpdCB0aW1lIGRlc3RydWN0b3IuCisgICAgICAgIChXVEY6
OmZ1bmN0aW9uUXVldWUpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvdW5pY29kZS9pY3UvQ29sbGF0
b3JJQ1UuY3BwOgorICAgICAgICAoV1RGOjpjYWNoZWRDb2xsYXRvck11dGV4KTogRGl0dG8uCisK
KyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6IENoYW5nZWQgb3RoZXIgcGxhdGZvcm1zIHRvIHNo
YXJlIHRoZSBXaW5kb3dzCisgICAgICAgIGFwcHJvYWNoIHdoZXJlIHRoZSBtdXRleCBpcyBpbnRl
cm5hbCBhbmQgdGhlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQuCisgICAgICAgICogd3RmL1RocmVh
ZGluZ0d0ay5jcHA6CisgICAgICAgIChXVEY6OmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWNNdXRleCk6IERpdHRvLgorICAgICAgICAoV1RGOjp1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6
ZWRTdGF0aWNNdXRleCk6IERpdHRvLgorICAgICAgICAqIHd0Zi9UaHJlYWRpbmdOb25lLmNwcDoK
KyAgICAgICAgKFdURjo6bG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KTogRGl0
dG8uCisgICAgICAgIChXVEY6OnVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4
KTogRGl0dG8uCisgICAgICAgICogd3RmL1RocmVhZGluZ1B0aHJlYWRzLmNwcDoKKyAgICAgICAg
KFdURjo6dGhyZWFkTWFwTXV0ZXgpOiBDaGFuZ2VkIHRvIGxlYWsgYW4gb2JqZWN0IHJhdGhlciB0
aGFuIHVzaW5nCisgICAgICAgIGFuIGV4aXQgdGltZSBkZXN0cnVjdG9yLgorICAgICAgICAoV1RG
Ojpsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgpOiBNdXRleCBjaGFuZ2UuCisg
ICAgICAgIChXVEY6OnVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KTogRGl0
dG8uCisgICAgICAgIChXVEY6OnRocmVhZE1hcCk6IENoYW5nZWQgdG8gbGVhayBhbiBvYmplY3Qg
cmF0aGVyIHRoYW4gdXNpbmcKKyAgICAgICAgYW4gZXhpdCB0aW1lIGRlc3RydWN0b3IuCisgICAg
ICAgICogd3RmL1RocmVhZGluZ1F0LmNwcDoKKyAgICAgICAgKFdURjo6bG9ja0F0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpY011dGV4KTogTXV0ZXggY2hhbmdlLgorICAgICAgICAoV1RGOjp1bmxv
Y2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCk6IERpdHRvLgorICAgICAgICAqIHd0
Zi9UaHJlYWRpbmdXaW4uY3BwOgorICAgICAgICAoV1RGOjpsb2NrQXRvbWljYWxseUluaXRpYWxp
emVkU3RhdGljTXV0ZXgpOiBBZGRlZCBhbiBhc3NlcnRpb24uCisKIDIwMDgtMTEtMDMgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2Uu
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCShyZXZpc2lvbiAzODA4MSkKKysrIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcg
KzI4OSw4IEBAIF9fWk4zV1RGMjFSZWZDb3VudGVkTGVha0NvdW50ZXJEMUV2CiBfX1pOM1dURjIz
d2FpdEZvclRocmVhZENvbXBsZXRpb25FalBQdgogX19aTjNXVEYyN3JlbGVhc2VGYXN0TWFsbG9j
RnJlZU1lbW9yeUV2CiBfX1pOM1dURjI4c2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZEViCi1f
X1pOM1dURjMyYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXhFCitfX1pOM1dURjM2bG9j
a0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4RXYKK19fWk4zV1RGMzh1bmxvY2tBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEV2CiBfX1pOM1dURjVNdXRleDRsb2NrRXYKIF9f
Wk4zV1RGNU11dGV4NnVubG9ja0V2CiBfX1pOM1dURjVNdXRleDd0cnlMb2NrRXYKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMzgwODEpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEzLDYg
KzE2MTMsNyBAQAogCQkJCTkzMkY1QjNGMDgyMkExQzcwMDczNjk3NSAvKiBIZWFkZXJzICovLAog
CQkJCTkzMkY1QjkxMDgyMkExQzcwMDczNjk3NSAvKiBTb3VyY2VzICovLAogCQkJCTkzMTk1ODZC
MDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVycyAqLywKKwkJ
CQk5MzM0NTcyMDBFQkZEQzNGMDBCODA4OTQgLyogQ2hlY2sgRm9yIEV4aXQgVGltZSBEZXN0cnVj
dG9ycyAqLywKIAkJCQk1RDI5RDhCRTBFOTg2MEI0MDBDM0QyRDAgLyogQ2hlY2sgRm9yIFdlYWsg
VlRhYmxlcyAqLywKIAkJCQk5MzJGNUJEMjA4MjJBMUM3MDA3MzY5NzUgLyogRnJhbWV3b3JrcyAq
LywKIAkJCQkxQzM5NUNCQzBDNkJDQzE2MDAwRDFFNTIgLyogR2VuZXJhdGUgNjQtYml0IEV4cG9y
dCBGaWxlICovLApAQCAtMTgwMyw2ICsxODA0LDIwIEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3No
OwogCQkJc2hlbGxTY3JpcHQgPSAiaWYgWyAtZiAuLi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNr
LWZvci1nbG9iYWwtaW5pdGlhbGl6ZXJzIF07IHRoZW5cbiAgICAuLi9XZWJLaXRUb29scy9TY3Jp
cHRzL2NoZWNrLWZvci1nbG9iYWwtaW5pdGlhbGl6ZXJzIHx8IGV4aXQgJD9cbmZpIjsKIAkJfTsK
KwkJOTMzNDU3MjAwRUJGREMzRjAwQjgwODk0IC8qIENoZWNrIEZvciBFeGl0IFRpbWUgRGVzdHJ1
Y3RvcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQ
YXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkNoZWNrIEZvciBFeGl0IFRpbWUgRGVzdHJ1Y3Rv
cnMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3Jp
cHQgPSAiaWYgWyAtZiAuLi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUt
ZGVzdHJ1Y3RvcnMgXTsgdGhlblxuICAgIC4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9y
LWV4aXQtdGltZS1kZXN0cnVjdG9ycyB8fCBleGl0ICQ/XG5maSI7CisJCX07CiAvKiBFbmQgUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL01haW5UaHJlYWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9NYWluVGhyZWFkLmNwcAkocmV2
aXNpb24gMzgwODEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTWFpblRocmVhZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDE3ICs0OSwxNyBAQCBzdHJ1Y3QgRnVuY3Rpb25XaXRoQ29udGV4dCB7
CiAKIHR5cGVkZWYgVmVjdG9yPEZ1bmN0aW9uV2l0aENvbnRleHQ+IEZ1bmN0aW9uUXVldWU7CiAK
LXN0YXRpYyBib29sIGNhbGxiYWNrc1BhdXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFsYmxlIGlz
IG9ubHkgYWNjZXNzZWQgZnJvbSBtYWluIHRocmVhZC4KK3N0YXRpYyBib29sIGNhbGxiYWNrc1Bh
dXNlZDsgLy8gVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgb25seSBhY2Nlc3NlZCBmcm9tIG1haW4g
dGhyZWFkLgogCiBNdXRleCYgbWFpblRocmVhZEZ1bmN0aW9uUXVldWVNdXRleCgpCiB7Ci0gICAg
c3RhdGljIE11dGV4IHN0YXRpY011dGV4OworICAgIHN0YXRpYyBNdXRleCYgc3RhdGljTXV0ZXgg
PSAqbmV3IE11dGV4OwogICAgIHJldHVybiBzdGF0aWNNdXRleDsKIH0KIAogc3RhdGljIEZ1bmN0
aW9uUXVldWUmIGZ1bmN0aW9uUXVldWUoKQogewotICAgIHN0YXRpYyBGdW5jdGlvblF1ZXVlIHN0
YXRpY0Z1bmN0aW9uUXVldWU7CisgICAgc3RhdGljIEZ1bmN0aW9uUXVldWUmIHN0YXRpY0Z1bmN0
aW9uUXVldWUgPSAqbmV3IEZ1bmN0aW9uUXVldWU7CiAgICAgcmV0dXJuIHN0YXRpY0Z1bmN0aW9u
UXVldWU7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHJldmlzaW9uIDM4MDgxKQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEs
MTQgKzI1MSw4IEBAIHByaXZhdGU6CiAvLyBEYXJ3aW4gaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMg
cnVsZTogaXQgaXMgT0sgdG8gY2FsbCBpdCBmcm9tIGFueSB0aHJlYWQsIHRoZSBvbmx5IHJlcXVp
cmVtZW50IGlzIHRoYXQgdGhlIGNhbGxzIGFyZSBub3QgcmVlbnRyYW50Lgogdm9pZCBpbml0aWFs
aXplVGhyZWFkaW5nKCk7CiAKLSNpZiAhUExBVEZPUk0oV0lOX09TKSB8fCBQTEFURk9STShXWCkK
LWV4dGVybiBNdXRleCogYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXg7Ci1pbmxpbmUg
dm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKSB7IGF0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpY011dGV4LT5sb2NrKCk7IH0KLWlubGluZSB2b2lkIHVubG9ja0F0b21p
Y2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KCkgeyBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWNNdXRleC0+dW5sb2NrKCk7IH0KLSNlbHNlCiB2b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6
ZWRTdGF0aWNNdXRleCgpOwogdm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNN
dXRleCgpOwotI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS93dGYvVGhyZWFkaW5nR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nR3RrLmNwcAkocmV2aXNpb24gMzgwODEpCisrKyBKYXZhU2NyaXB0Q29yZS93
dGYvVGhyZWFkaW5nR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogCiBu
YW1lc3BhY2UgV1RGIHsKIAotTXV0ZXgqIGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4
Oworc3RhdGljIE11dGV4KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleDsKIAogc3Rh
dGljIFRocmVhZElkZW50aWZpZXIgbWFpblRocmVhZElkZW50aWZpZXI7CiAKQEAgLTY1LDYgKzY1
LDE3IEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAgICAgfQogfQogCit2b2lkIGxvY2tB
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpCit7CisgICAgQVNTRVJUKGF0b21pY2Fs
bHlJbml0aWFsaXplZFN0YXRpY011dGV4KTsKKyAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0
aWNNdXRleC0+bG9jaygpOworfQorCit2b2lkIHVubG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0
YXRpY011dGV4KCkKK3sKKyAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleC0+dW5s
b2NrKCk7Cit9CisKIHN0YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIEdUaHJlYWQqPiYg
dGhyZWFkTWFwKCkKIHsKICAgICBzdGF0aWMgSGFzaE1hcDxUaHJlYWRJZGVudGlmaWVyLCBHVGhy
ZWFkKj4gbWFwOwpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ05vbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdOb25lLmNwcAkocmV2aXNp
b24gMzgwODEpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nTm9uZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDEzICsyNiwxMiBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUaHJlYWRpbmcuaCIK
IAogbmFtZXNwYWNlIFdURiB7CiAKLU11dGV4KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNN
dXRleDsKLQogdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nKCkge30KIFRocmVhZElkZW50aWZpZXIg
Y3JlYXRlVGhyZWFkKFRocmVhZEZ1bmN0aW9uLCB2b2lkKiwgY29uc3QgY2hhciopIHsgcmV0dXJu
IDA7IH0KIGludCB3YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyLCB2b2lk
KiopIHsgcmV0dXJuIDA7IH0KQEAgLTQ0LDcgKzQzLDcgQEAgTXV0ZXg6Ok11dGV4KCkge30KIE11
dGV4Ojp+TXV0ZXgoKSB7fQogdm9pZCBNdXRleDo6bG9jaygpIHt9CiBib29sIE11dGV4Ojp0cnlM
b2NrKCkgeyByZXR1cm4gZmFsc2U7IH0KLXZvaWQgTXV0ZXg6OnVubG9jaygpIHt9Owordm9pZCBN
dXRleDo6dW5sb2NrKCkge30KIAogVGhyZWFkQ29uZGl0aW9uOjpUaHJlYWRDb25kaXRpb24oKSB7
fQogVGhyZWFkQ29uZGl0aW9uOjp+VGhyZWFkQ29uZGl0aW9uKCkge30KQEAgLTUzLDQgKzUyLDcg
QEAgYm9vbCBUaHJlYWRDb25kaXRpb246OnRpbWVkV2FpdChNdXRleCYgbQogdm9pZCBUaHJlYWRD
b25kaXRpb246OnNpZ25hbCgpIHt9CiB2b2lkIFRocmVhZENvbmRpdGlvbjo6YnJvYWRjYXN0KCkg
e30KIAordm9pZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKSB7fQordm9p
ZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpIHsgfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUHRocmVh
ZHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdQdGhyZWFk
cy5jcHAJKHJldmlzaW9uIDM4MDgxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZ1B0
aHJlYWRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotTXV0ZXgqIGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4Oworc3RhdGlj
IE11dGV4KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleDsKIAogI2lmICFQTEFURk9S
TShEQVJXSU4pCiBzdGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpZmllcjsg
Ly8gVGhlIHRocmVhZCB0aGF0IHdhcyB0aGUgZmlyc3QgdG8gY2FsbCBpbml0aWFsaXplVGhyZWFk
aW5nKCksIHdoaWNoIG11c3QgYmUgdGhlIG1haW4gdGhyZWFkLgpAQCAtNDgsNyArNDgsNyBAQCBz
dGF0aWMgVGhyZWFkSWRlbnRpZmllciBtYWluVGhyZWFkSWRlbnRpCiAKIHN0YXRpYyBNdXRleCYg
dGhyZWFkTWFwTXV0ZXgoKQogewotICAgIHN0YXRpYyBNdXRleCBtdXRleDsKKyAgICBzdGF0aWMg
TXV0ZXgmIG11dGV4ID0gKm5ldyBNdXRleDsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKQEAgLTY1
LDkgKzY1LDIwIEBAIHZvaWQgaW5pdGlhbGl6ZVRocmVhZGluZygpCiAgICAgfQogfQogCit2b2lk
IGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpCit7CisgICAgQVNTRVJUKGF0
b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KTsKKyAgICBhdG9taWNhbGx5SW5pdGlhbGl6
ZWRTdGF0aWNNdXRleC0+bG9jaygpOworfQorCit2b2lkIHVubG9ja0F0b21pY2FsbHlJbml0aWFs
aXplZFN0YXRpY011dGV4KCkKK3sKKyAgICBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRl
eC0+dW5sb2NrKCk7Cit9CisKIHN0YXRpYyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIHB0aHJl
YWRfdD4mIHRocmVhZE1hcCgpCiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmll
ciwgcHRocmVhZF90PiBtYXA7CisgICAgc3RhdGljIEhhc2hNYXA8VGhyZWFkSWRlbnRpZmllciwg
cHRocmVhZF90PiYgbWFwID0gKm5ldyBIYXNoTWFwPFRocmVhZElkZW50aWZpZXIsIHB0aHJlYWRf
dD47CiAgICAgcmV0dXJuIG1hcDsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZ1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nUXQu
Y3BwCShyZXZpc2lvbiAzODA4MSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBUaHJlYWRQcml2YXRlOjpy
dW4oKQogfQogCiAKLU11dGV4KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleDsKK3N0
YXRpYyBNdXRleCogYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXg7CiAKIHN0YXRpYyBU
aHJlYWRJZGVudGlmaWVyIG1haW5UaHJlYWRJZGVudGlmaWVyOwogCkBAIC0xMjIsNyArMTIyLDcg
QEAgc3RhdGljIFFUaHJlYWQqIHRocmVhZEZvcklkZW50aWZpZXIoVGhyZQogCiB2b2lkIGluaXRp
YWxpemVUaHJlYWRpbmcoKQogewotICAgIGlmKCFhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNN
dXRleCkgeworICAgIGlmICghYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgpIHsKICAg
ICAgICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXggPSBuZXcgTXV0ZXg7CiAgICAg
ICAgIHRocmVhZE1hcE11dGV4KCk7CiAgICAgICAgIHd0Zl9yYW5kb21faW5pdCgpOwpAQCAtMTM0
LDYgKzEzNCwxNyBAQCB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKQogICAgIH0KIH0KIAordm9p
ZCBsb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXgoKQoreworICAgIEFTU0VSVChh
dG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCk7CisgICAgYXRvbWljYWxseUluaXRpYWxp
emVkU3RhdGljTXV0ZXgtPmxvY2soKTsKK30KKwordm9pZCB1bmxvY2tBdG9taWNhbGx5SW5pdGlh
bGl6ZWRTdGF0aWNNdXRleCgpCit7CisgICAgYXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0
ZXgtPnVubG9jaygpOworfQorCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRG
dW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKikKIHsKICAgICBUaHJl
YWRQcml2YXRlKiB0aHJlYWQgPSBuZXcgVGhyZWFkUHJpdmF0ZShlbnRyeVBvaW50LCBkYXRhKTsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCShyZXZpc2lvbiAzODA4MSkKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsNiArMTExLDcgQEAgc3RhdGljIE11dGV4KiBhdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aQog
CiB2b2lkIGxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleCgpCiB7CisgICAgQVNT
RVJUKGF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4KTsKICAgICBhdG9taWNhbGx5SW5p
dGlhbGl6ZWRTdGF0aWNNdXRleC0+bG9jaygpOwogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93
dGYvdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3d0Zi91bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAJKHJldmlzaW9uIDM4MDgxKQorKysg
SmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvaWN1L0NvbGxhdG9ySUNVLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHN0YXRpYyBVQ29sbGF0b3Iq
IGNhY2hlZENvbGxhdG9yOwogc3RhdGljIE11dGV4JiBjYWNoZWRDb2xsYXRvck11dGV4KCkKIHsK
LSAgICBBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoTXV0ZXgsIG11dGV4KTsKKyAgICBBdG9t
aWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWMoTXV0ZXgmLCBtdXRleCA9ICpuZXcgTXV0ZXgpOwogICAg
IHJldHVybiBtdXRleDsKIH0KIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MDgxKQorKysgV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NSBAQAorMjAwOC0xMS0wMyAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNjEKKyAgICAgICAgICBjcmVhdGUgc2NyaXB0IHRvIGNoZWNrIGZvciBleGl0LXRpbWUgZGVz
dHJ1Y3RvcnMKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajog
QWRkZWQgYSBzY3JpcHQKKyAgICAgICAgcGhhc2UgdGhhdCBydW5zIHRoZSBjaGVjay1mb3ItZXhp
dC10aW1lLWRlc3RydWN0b3JzIHNjcmlwdC4KKworICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluOiBSZW1vdmVkIHNvbWUgdW51c2VkIGF0dHJpYnV0ZSBuYW1lcy4KKworICAgICAg
ICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRW1i
ZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFJlbW92ZWQgY29kZSB0aGF0CisgICAg
ICAgIHNldHMgdGhlIHdyaXRlLW9ubHkgbV9wbHVnaW5QYWdlLgorICAgICAgICAqIGh0bWwvSFRN
TEVtYmVkRWxlbWVudC5oOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9DdXJzb3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpsZWFrTmFtZWRDdXJzb3IpOiBDaGFuZ2VkIHRvIHJl
dHVybiBhIEN1cnNvciYuCisgICAgICAgIChXZWJDb3JlOjpwb2ludGVyQ3Vyc29yKTogQ2hhbmdl
ZCB0byBsZWFrIGFuIG9iamVjdCB0byBhdm9pZCBhbgorICAgICAgICBleGl0LXRpbWUgZGVzdHJ1
Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OmNyb3NzQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpoYW5kQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjptb3ZlQ3Vyc29y
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2ZXJ0aWNhbFRleHRDdXJzb3IpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmNlbGxDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbnRleHRNZW51Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjphbGlhc0N1cnNv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6em9vbUluQ3Vyc29yKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjp6b29tT3V0Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpj
b3B5Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpub25lQ3Vyc29yKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVzc0N1cnNvcik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6bm9Ecm9wQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpub3RBbGxvd2Vk
Q3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppQmVhbUN1cnNvcik6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6d2FpdEN1cnNvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
aGVscEN1cnNvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZWFzdFJlc2l6ZUN1cnNvcik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bm9ydGhSZXNpemVDdXJzb3IpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6Om5vcnRoRWFzdFJlc2l6ZUN1cnNvcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6bm9ydGhXZXN0UmVzaXplQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojpzb3V0aFJlc2l6ZUN1cnNvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c291dGhFYXN0
UmVzaXplQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzb3V0aFdlc3RSZXNpemVD
dXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ondlc3RSZXNpemVDdXJzb3IpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6Om5vcnRoU291dGhSZXNpemVDdXJzb3IpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmVhc3RXZXN0UmVzaXplQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpub3J0aEVhc3RTb3V0aFdlc3RSZXNpemVDdXJzb3IpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6Om5vcnRoV2VzdFNvdXRoRWFzdFJlc2l6ZUN1cnNvcik6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Y29sdW1uUmVzaXplQ3Vyc29yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojpyb3dSZXNpemVDdXJzb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmdyYWJDdXJzb3Ip
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmdyYWJiaW5nQ3Vyc29yKTogRGl0dG8uCisKKyAg
ICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omd1aWRNdXRl
eCk6IENoYW5nZWQgdG8gbGVhayBhbiBvYmplY3QgdG8gYXZvaWQgYW4KKyAgICAgICAgZXhpdC10
aW1lIGRlc3RydWN0b3IuIEFsc28gYWRkZWQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IGl0J3MK
KyAgICAgICAgdGhyZWFkIHNhZmUuCisgICAgICAgIChXZWJDb3JlOjpndWlkVG9WZXJzaW9uTWFw
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpndWlkVG9EYXRhYmFzZU1hcCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6ZGF0YWJhc2VWZXJzaW9uS2V5KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZTo6Z2V0VmVyc2lvbkZyb21EYXRhYmFzZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNldFZlcnNpb25JbkRhdGFiYXNlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpndWlkRm9yT3JpZ2luQW5kTmFtZSk6IERpdHRvLgorICAgICAgICAq
IHN0b3JhZ2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bm90aWZpY2F0aW9u
TXV0ZXgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om5vdGlmaWNhdGlvblF1ZXVlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6Om5vdGlmeURhdGFiYXNlc0No
YW5nZWQpOiBEaXR0by4KKwogMjAwOC0xMS0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0CkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzgwODEpCisr
KyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTYxODAsNiArMTYxODAsNyBAQAogCQkJCTFDNUY5RDc2MEUwOUExQjQwMEU5MUQwQSAv
KiBTdHJlYW1saW5lIEluc3BlY3RvciBTb3VyY2UgKi8sCiAJCQkJOTNGMTlBMEMwODI0NUU1OTAw
MUU5QUJDIC8qIFNvdXJjZXMgKi8sCiAJCQkJOTM5RDA1MDEwOUQ5RkY2QjAwOTg0OTk2IC8qIENo
ZWNrIEZvciBHbG9iYWwgSW5pdGlhbGl6ZXJzICovLAorCQkJCTkzMzQ1N0U2MEVCRkRGNkIwMEI4
MDg5NCAvKiBDaGVjayBGb3IgRXhpdCBUaW1lIERlc3RydWN0b3JzICovLAogCQkJCTVEMEQ1NDBE
MEU5ODYyRjYwMDI5RTIyMyAvKiBDaGVjayBGb3IgV2VhayBWVGFibGVzICovLAogCQkJCTkzRjE5
QjEyMDgyNDVFNTkwMDFFOUFCQyAvKiBGcmFtZXdvcmtzICovLAogCQkJCTFDQjcxRDRBMEIwMjY1
OEQwMDYxRUE0NSAvKiBHZW5lcmF0ZSA2NC1iaXQgRXhwb3J0IEZpbGUgKi8sCkBAIC0xNjM3Nyw2
ICsxNjM3OCwyMCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0g
IiMgVG91Y2ggSW5mby5wbGlzdCB0byBsZXQgWGNvZGUga25vdyBpdCBuZWVkcyB0byBjb3B5IGl0
IGludG8gdGhlIGJ1aWx0IHByb2R1Y3RcbnRvdWNoIFwiJFNSQ1JPT1QvSW5mby5wbGlzdFwiXG4i
OwogCQl9OworCQk5MzM0NTdFNjBFQkZERjZCMDBCODA4OTQgLyogQ2hlY2sgRm9yIEV4aXQgVGlt
ZSBEZXN0cnVjdG9ycyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ2hlY2sgRm9yIEV4aXQgVGltZSBE
ZXN0cnVjdG9ycyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlz
aGVsbFNjcmlwdCA9ICJpZiBbIC1mIC4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4
aXQtdGltZS1kZXN0cnVjdG9ycyBdOyB0aGVuXG4gICAgLi4vV2ViS2l0VG9vbHMvU2NyaXB0cy9j
aGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzIHx8IGV4aXQgJD9cbmZpIjsKKwkJfTsKIAkJ
OTM5RDA1MDEwOUQ5RkY2QjAwOTg0OTk2IC8qIENoZWNrIEZvciBHbG9iYWwgSW5pdGlhbGl6ZXJz
ICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgko
cmV2aXNpb24gMzgwODEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw2IEBAIGtleXR5cGUKIGxhYmVsCiBsYW5nCiBsYW5n
dWFnZQotbGVmdAogbGVmdG1hcmdpbgogbGluawogbG9uZ2Rlc2MKQEAgLTE1NSwxMiArMTU0LDcg
QEAgb253ZWJraXRhbmltYXRpb25zdGFydAogb253ZWJraXRhbmltYXRpb25pdGVyYXRpb24KIG9u
d2Via2l0YW5pbWF0aW9uZW5kCiBvbndlYmtpdHRyYW5zaXRpb25lbmQKLXBhZ2V4Ci1wYWdleQog
cGxhY2Vob2xkZXIKLXBsYWluCi1wbHVnaW5wYWdlCi1wbHVnaW5zcGFnZQogcGx1Z2ludXJsCiBw
b3N0ZXIKIHByZWNpc2lvbgpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAkocmV2aXNp
b24gMzgwODEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMyw5ICsxMDMsNyBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmliCiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci5zZXQobmV3IEhUTUxJbWFn
ZUxvYWRlcih0aGlzKSk7CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxl
bWVudCgpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGx1Z2lu
cGFnZUF0dHIgfHwgYXR0ci0+bmFtZSgpID09IHBsdWdpbnNwYWdlQXR0cikKLSAgICAgICAgbV9w
bHVnaW5QYWdlID0gdmFsdWU7Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGhpZGRlbkF0
dHIpIHsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBoaWRkZW5BdHRyKSB7CiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZS5zdHJpbmcoKSwgInllcyIpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKHZhbHVlLnN0cmluZygpLCAidHJ1ZSIpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogTm90IGR5bmFtaWMsIHNpbmNlIHdlIGFkZCB0aGlzIGJ1dCBkb24ndCByZW1vdmUgaXQs
IGJ1dCBpdCBtYXkgYmUgT0sgZm9yIG5vdwogICAgICAgICAgICAgLy8gdGhhdCB0aGlzIHJhcmVs
eS11c2VkIGF0dHJpYnV0ZSB3b24ndCB3b3JrIHByb3Blcmx5IGlmIHlvdSByZW1vdmUgaXQuCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmgJKHJldmlzaW9uIDM4MDgxKQorKysgV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN1YnJlc291cmNlQXR0cmlidXRlU3RyaW5ncyhW
ZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIFN0cmluZyBtX3BsdWdpblBh
Z2U7CiAgICAgYm9vbCBtX25lZWRXaWRnZXRVcGRhdGU7CiB9OwogCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9DdXJzb3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQ3Vyc29yTWFjLm1tCShyZXZpc2lvbiAzODA4MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFj
L0N1cnNvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgTlND
dXJzb3IqIGNyZWF0ZUN1c3RvbUN1cnNvcihJbWFnCiAKIC8vIExlYWsgdGhlc2UgY3Vyc29ycyBp
bnRlbnRpb25hbGx5LCB0aGF0IHdheSB3ZSB3b24ndCB3YXN0ZSB0aW1lIHRyeWluZyB0byBjbGVh
biB0aGVtCiAvLyB1cCBhdCBwcm9jZXNzIGV4aXQgdGltZS4KLXN0YXRpYyBOU0N1cnNvciogbGVh
a05hbWVkQ3Vyc29yKGNvbnN0IGNoYXIqIG5hbWUsIGludCB4LCBpbnQgeSkKK3N0YXRpYyBDdXJz
b3ImIGxlYWtOYW1lZEN1cnNvcihjb25zdCBjaGFyKiBuYW1lLCBpbnQgeCwgaW50IHkpCiB7CiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIE5TU3RyaW5nKiByZXNvdXJjZU5h
bWUgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6bmFtZV07CkBAIC03MCw5
ICs3MCw5IEBAIHN0YXRpYyBOU0N1cnNvciogbGVha05hbWVkQ3Vyc29yKGNvbnN0IGMKICAgICAg
ICAgY3Vyc29yID0gW1tOU0N1cnNvciBhbGxvY10gaW5pdFdpdGhJbWFnZTpjdXJzb3JJbWFnZSBo
b3RTcG90OmhvdFNwb3RQb2ludF07CiAgICAgICAgIFtjdXJzb3JJbWFnZSByZWxlYXNlXTsKICAg
ICB9Ci0gICAgcmV0dXJuIGN1cnNvcjsKKyAgICByZXR1cm4gKm5ldyBDdXJzb3IoY3Vyc29yKTsK
ICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiAwOworICAgIHJldHVy
biAqbmV3IEN1cnNvcjsKIH0KIAogQ3Vyc29yOjpDdXJzb3IoSW1hZ2UqIGltYWdlLCBjb25zdCBJ
bnRQb2ludCYgaG90c3BvdCkKQEAgLTEwNSwxOTMgKzEwNSwxOTMgQEAgQ3Vyc29yOjpDdXJzb3Io
TlNDdXJzb3IqIGMpCiAKIGNvbnN0IEN1cnNvciYgcG9pbnRlckN1cnNvcigpCiB7Ci0gICAgc3Rh
dGljIEN1cnNvciBjID0gW05TQ3Vyc29yIGFycm93Q3Vyc29yXTsKKyAgICBzdGF0aWMgQ3Vyc29y
JiBjID0gKm5ldyBDdXJzb3IoW05TQ3Vyc29yIGFycm93Q3Vyc29yXSk7CiAgICAgcmV0dXJuIGM7
CiB9CiAKIGNvbnN0IEN1cnNvciYgY3Jvc3NDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3Ig
YyA9IGxlYWtOYW1lZEN1cnNvcigiY3Jvc3NIYWlyQ3Vyc29yIiwgMTEsIDExKTsKKyAgICBzdGF0
aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJjcm9zc0hhaXJDdXJzb3IiLCAxMSwgMTEp
OwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGhhbmRDdXJzb3IoKQogewotICAg
IHN0YXRpYyBDdXJzb3IgYyA9IGxlYWtOYW1lZEN1cnNvcigibGlua0N1cnNvciIsIDYsIDEpOwor
ICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoImxpbmtDdXJzb3IiLCA2LCAx
KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBtb3ZlQ3Vyc29yKCkKIHsKLSAg
ICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3IoIm1vdmVDdXJzb3IiLCA3LCA3KTsK
KyAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJtb3ZlQ3Vyc29yIiwgNywg
Nyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgdmVydGljYWxUZXh0Q3Vyc29y
KCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3IoInZlcnRpY2FsVGV4
dEN1cnNvciIsIDcsIDcpOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3Io
InZlcnRpY2FsVGV4dEN1cnNvciIsIDcsIDcpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBD
dXJzb3ImIGNlbGxDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3IgYyA9IGxlYWtOYW1lZEN1
cnNvcigiY2VsbEN1cnNvciIsIDcsIDcpOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFt
ZWRDdXJzb3IoImNlbGxDdXJzb3IiLCA3LCA3KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3Qg
Q3Vyc29yJiBjb250ZXh0TWVudUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciBjID0gbGVh
a05hbWVkQ3Vyc29yKCJjb250ZXh0TWVudUN1cnNvciIsIDMsIDIpOworICAgIHN0YXRpYyBDdXJz
b3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoImNvbnRleHRNZW51Q3Vyc29yIiwgMywgMik7CiAgICAg
cmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgYWxpYXNDdXJzb3IoKQogewotICAgIHN0YXRp
YyBDdXJzb3IgYyA9IGxlYWtOYW1lZEN1cnNvcigiYWxpYXNDdXJzb3IiLCAxMSwgMyk7CisgICAg
c3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiYWxpYXNDdXJzb3IiLCAxMSwgMyk7
CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgem9vbUluQ3Vyc29yKCkKIHsKLSAg
ICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3IoInpvb21JbkN1cnNvciIsIDcsIDcp
OworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoInpvb21JbkN1cnNvciIs
IDcsIDcpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHpvb21PdXRDdXJzb3Io
KQogewotICAgIHN0YXRpYyBDdXJzb3IgYyA9IGxlYWtOYW1lZEN1cnNvcigiem9vbU91dEN1cnNv
ciIsIDcsIDcpOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoInpvb21P
dXRDdXJzb3IiLCA3LCA3KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjb3B5
Q3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3IoImNvcHlD
dXJzb3IiLCAzLCAyKTsKKyAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJj
b3B5Q3Vyc29yIiwgMywgMik7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9u
ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciBjID0gbGVha05hbWVkQ3Vyc29yKCJub25l
Q3Vyc29yIiwgNywgNyk7CisgICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigi
bm9uZUN1cnNvciIsIDcsIDcpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHBy
b2dyZXNzQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3Io
InByb2dyZXNzQ3Vyc29yIiwgMywgMik7CisgICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1l
ZEN1cnNvcigicHJvZ3Jlc3NDdXJzb3IiLCAzLCAyKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29u
c3QgQ3Vyc29yJiBub0Ryb3BDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3IgYyA9IGxlYWtO
YW1lZEN1cnNvcigibm9Ecm9wQ3Vyc29yIiwgMywgMSk7CisgICAgc3RhdGljIEN1cnNvciYgYyA9
IGxlYWtOYW1lZEN1cnNvcigibm9Ecm9wQ3Vyc29yIiwgMywgMSk7CiAgICAgcmV0dXJuIGM7CiB9
CiAKIGNvbnN0IEN1cnNvciYgbm90QWxsb3dlZEN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNv
ciBjID0gbGVha05hbWVkQ3Vyc29yKCJub3RBbGxvd2VkQ3Vyc29yIiwgMTEsIDExKTsKKyAgICBz
dGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJub3RBbGxvd2VkQ3Vyc29yIiwgMTEs
IDExKTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBpQmVhbUN1cnNvcigpCiB7
Ci0gICAgc3RhdGljIEN1cnNvciBjID0gW05TQ3Vyc29yIElCZWFtQ3Vyc29yXTsKKyAgICBzdGF0
aWMgQ3Vyc29yJiBjID0gKm5ldyBDdXJzb3IoW05TQ3Vyc29yIElCZWFtQ3Vyc29yXSk7CiAgICAg
cmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgd2FpdEN1cnNvcigpCiB7Ci0gICAgc3RhdGlj
IEN1cnNvciBjID0gbGVha05hbWVkQ3Vyc29yKCJ3YWl0Q3Vyc29yIiwgNywgNyk7CisgICAgc3Rh
dGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigid2FpdEN1cnNvciIsIDcsIDcpOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIGhlbHBDdXJzb3IoKQogewotICAgIHN0YXRp
YyBDdXJzb3IgYyA9IGxlYWtOYW1lZEN1cnNvcigiaGVscEN1cnNvciIsIDgsIDgpOworICAgIHN0
YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoImhlbHBDdXJzb3IiLCA4LCA4KTsKICAg
ICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBlYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAg
ICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3IoImVhc3RSZXNpemVDdXJzb3IiLCAx
NCwgNyk7CisgICAgc3RhdGljIEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigiZWFzdFJlc2l6
ZUN1cnNvciIsIDE0LCA3KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBub3J0
aFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciBjID0gbGVha05hbWVkQ3Vyc29y
KCJub3J0aFJlc2l6ZUN1cnNvciIsIDcsIDEpOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFr
TmFtZWRDdXJzb3IoIm5vcnRoUmVzaXplQ3Vyc29yIiwgNywgMSk7CiAgICAgcmV0dXJuIGM7CiB9
CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhFYXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMg
Q3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3IoIm5vcnRoRWFzdFJlc2l6ZUN1cnNvciIsIDE0LCAx
KTsKKyAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJub3J0aEVhc3RSZXNp
emVDdXJzb3IiLCAxNCwgMSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9y
dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRD
dXJzb3IoIm5vcnRoV2VzdFJlc2l6ZUN1cnNvciIsIDAsIDApOworICAgIHN0YXRpYyBDdXJzb3Im
IGMgPSBsZWFrTmFtZWRDdXJzb3IoIm5vcnRoV2VzdFJlc2l6ZUN1cnNvciIsIDAsIDApOwogICAg
IHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNvdXRoUmVzaXplQ3Vyc29yKCkKIHsKLSAg
ICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3IoInNvdXRoUmVzaXplQ3Vyc29yIiwg
NywgMTQpOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoInNvdXRoUmVz
aXplQ3Vyc29yIiwgNywgMTQpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIHNv
dXRoRWFzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciBjID0gbGVha05hbWVk
Q3Vyc29yKCJzb3V0aEVhc3RSZXNpemVDdXJzb3IiLCAxNCwgMTQpOworICAgIHN0YXRpYyBDdXJz
b3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoInNvdXRoRWFzdFJlc2l6ZUN1cnNvciIsIDE0LCAxNCk7
CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgc291dGhXZXN0UmVzaXplQ3Vyc29y
KCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRDdXJzb3IoInNvdXRoV2VzdFJl
c2l6ZUN1cnNvciIsIDEsIDE0KTsKKyAgICBzdGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vy
c29yKCJzb3V0aFdlc3RSZXNpemVDdXJzb3IiLCAxLCAxNCk7CiAgICAgcmV0dXJuIGM7CiB9CiAK
IGNvbnN0IEN1cnNvciYgd2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciBj
ID0gbGVha05hbWVkQ3Vyc29yKCJ3ZXN0UmVzaXplQ3Vyc29yIiwgMSwgNyk7CisgICAgc3RhdGlj
IEN1cnNvciYgYyA9IGxlYWtOYW1lZEN1cnNvcigid2VzdFJlc2l6ZUN1cnNvciIsIDEsIDcpOwog
ICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoU291dGhSZXNpemVDdXJzb3Io
KQogewotICAgIHN0YXRpYyBDdXJzb3IgYyA9IGxlYWtOYW1lZEN1cnNvcigibm9ydGhTb3V0aFJl
c2l6ZUN1cnNvciIsIDcsIDcpOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJz
b3IoIm5vcnRoU291dGhSZXNpemVDdXJzb3IiLCA3LCA3KTsKICAgICByZXR1cm4gYzsKIH0KIAog
Y29uc3QgQ3Vyc29yJiBlYXN0V2VzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNv
ciBjID0gbGVha05hbWVkQ3Vyc29yKCJlYXN0V2VzdFJlc2l6ZUN1cnNvciIsIDcsIDcpOworICAg
IHN0YXRpYyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoImVhc3RXZXN0UmVzaXplQ3Vyc29y
IiwgNywgNyk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNvbnN0IEN1cnNvciYgbm9ydGhFYXN0U291
dGhXZXN0UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yIGMgPSBsZWFrTmFtZWRD
dXJzb3IoIm5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1cnNvciIsIDcsIDcpOworICAgIHN0YXRp
YyBDdXJzb3ImIGMgPSBsZWFrTmFtZWRDdXJzb3IoIm5vcnRoRWFzdFNvdXRoV2VzdFJlc2l6ZUN1
cnNvciIsIDcsIDcpOwogICAgIHJldHVybiBjOwogfQogCiBjb25zdCBDdXJzb3ImIG5vcnRoV2Vz
dFNvdXRoRWFzdFJlc2l6ZUN1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciBjID0gbGVha05h
bWVkQ3Vyc29yKCJub3J0aFdlc3RTb3V0aEVhc3RSZXNpemVDdXJzb3IiLCA3LCA3KTsKKyAgICBz
dGF0aWMgQ3Vyc29yJiBjID0gbGVha05hbWVkQ3Vyc29yKCJub3J0aFdlc3RTb3V0aEVhc3RSZXNp
emVDdXJzb3IiLCA3LCA3KTsKICAgICByZXR1cm4gYzsKIH0KIAogY29uc3QgQ3Vyc29yJiBjb2x1
bW5SZXNpemVDdXJzb3IoKQogewotICAgIHN0YXRpYyBDdXJzb3IgYyA9IFtOU0N1cnNvciByZXNp
emVMZWZ0UmlnaHRDdXJzb3JdOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSAqbmV3IEN1cnNvcihb
TlNDdXJzb3IgcmVzaXplTGVmdFJpZ2h0Q3Vyc29yXSk7CiAgICAgcmV0dXJuIGM7CiB9CiAKIGNv
bnN0IEN1cnNvciYgcm93UmVzaXplQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yIGMgPSBb
TlNDdXJzb3IgcmVzaXplVXBEb3duQ3Vyc29yXTsKKyAgICBzdGF0aWMgQ3Vyc29yJiBjID0gKm5l
dyBDdXJzb3IoW05TQ3Vyc29yIHJlc2l6ZVVwRG93bkN1cnNvcl0pOwogICAgIHJldHVybiBjOwog
fQogCkBAIC0zNDIsMTMgKzM0MiwxMyBAQCBjb25zdCBDdXJzb3ImIHdlc3RQYW5uaW5nQ3Vyc29y
KCkKIAogY29uc3QgQ3Vyc29yJiBncmFiQ3Vyc29yKCkKIHsKLSAgICBzdGF0aWMgQ3Vyc29yIGMg
PSBbTlNDdXJzb3Igb3BlbkhhbmRDdXJzb3JdOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSAqbmV3
IEN1cnNvcihbTlNDdXJzb3Igb3BlbkhhbmRDdXJzb3JdKTsKICAgICByZXR1cm4gYzsKIH0KIAog
Y29uc3QgQ3Vyc29yJiBncmFiYmluZ0N1cnNvcigpCiB7Ci0gICAgc3RhdGljIEN1cnNvciBjID0g
W05TQ3Vyc29yIGNsb3NlZEhhbmRDdXJzb3JdOworICAgIHN0YXRpYyBDdXJzb3ImIGMgPSAqbmV3
IEN1cnNvcihbTlNDdXJzb3IgY2xvc2VkSGFuZEN1cnNvcl0pOwogICAgIHJldHVybiBjOwogfQog
CkluZGV4OiBXZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZS5jcHAJKHJldmlzaW9uIDM4MDgxKQorKysgV2ViQ29yZS9zdG9y
YWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMzIgKzU1LDM0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIE11dGV4JiBndWlkTXV0ZXgoKQogewotICAgIC8vIEZJ
WE1FOiB0aGlzIGlzIG5vdCBhIHRocmVhZC1zYWZlIHdheSB0byBpbml0aWFsaXplIGEgc2hhcmVk
IGdsb2JhbC4KLSAgICBzdGF0aWMgTXV0ZXggbXV0ZXg7CisgICAgLy8gTm90ZTogV2UgZG9uJ3Qg
aGF2ZSB0byB1c2UgQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljIGhlcmUgYmVjYXVzZQorICAg
IC8vIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgaW4gdGhlIGNvbnN0cnVjdG9yIG9uIHRo
ZSBtYWluIHRocmVhZAorICAgIC8vIGJlZm9yZSBhbnkgb3RoZXIgdGhyZWFkcyB0aGF0IGNhbGwg
dGhpcyBmdW5jdGlvbiBhcmUgdXNlZC4KKyAgICBzdGF0aWMgTXV0ZXgmIG11dGV4ID0gKm5ldyBN
dXRleDsKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKIHN0YXRpYyBIYXNoTWFwPGludCwgU3RyaW5n
PiYgZ3VpZFRvVmVyc2lvbk1hcCgpCiB7Ci0gICAgc3RhdGljIEhhc2hNYXA8aW50LCBTdHJpbmc+
IG1hcDsKKyAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIFN0cmluZz4mIG1hcCA9ICpuZXcgSGFzaE1h
cDxpbnQsIFN0cmluZz47CiAgICAgcmV0dXJuIG1hcDsKIH0KIAogc3RhdGljIEhhc2hNYXA8aW50
LCBIYXNoU2V0PERhdGFiYXNlKj4qPiYgZ3VpZFRvRGF0YWJhc2VNYXAoKQogewotICAgIHN0YXRp
YyBIYXNoTWFwPGludCwgSGFzaFNldDxEYXRhYmFzZSo+Kj4gbWFwOworICAgIHN0YXRpYyBIYXNo
TWFwPGludCwgSGFzaFNldDxEYXRhYmFzZSo+Kj4mIG1hcCA9ICpuZXcgSGFzaE1hcDxpbnQsIEhh
c2hTZXQ8RGF0YWJhc2UqPio+OwogICAgIHJldHVybiBtYXA7CiB9CiAKIGNvbnN0IFN0cmluZyYg
RGF0YWJhc2U6OmRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBu
YW1lID0gIl9fV2ViS2l0RGF0YWJhc2VJbmZvVGFibGVfXyI7CisgICAgc3RhdGljIFN0cmluZyYg
bmFtZSA9ICpuZXcgU3RyaW5nKCJfX1dlYktpdERhdGFiYXNlSW5mb1RhYmxlX18iKTsKICAgICBy
ZXR1cm4gbmFtZTsKIH0KIAogc3RhdGljIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VWZXJzaW9uS2V5
KCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIGtleSA9ICJXZWJLaXREYXRhYmFzZVZlcnNpb25LZXki
OworICAgIHN0YXRpYyBTdHJpbmcmIGtleSA9ICAqbmV3IFN0cmluZygiV2ViS2l0RGF0YWJhc2VW
ZXJzaW9uS2V5Iik7CiAgICAgcmV0dXJuIGtleTsKIH0KIApAQCAtMjE2LDcgKzIxOCw3IEBAIHN0
YXRpYyBib29sIHJldHJpZXZlVGV4dFJlc3VsdEZyb21EYXRhYmEKIAogYm9vbCBEYXRhYmFzZTo6
Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgc3RhdGljIFN0
cmluZyBnZXRWZXJzaW9uUXVlcnkgPSAiU0VMRUNUIHZhbHVlIEZST00gIiArIGRhdGFiYXNlSW5m
b1RhYmxlTmFtZSgpICsgIiBXSEVSRSBrZXkgPSAnIiArIGRhdGFiYXNlVmVyc2lvbktleSgpICsg
Iic7IjsKKyAgICBzdGF0aWMgU3RyaW5nJiBnZXRWZXJzaW9uUXVlcnkgPSAqbmV3IFN0cmluZygi
U0VMRUNUIHZhbHVlIEZST00gIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgpICsgIiBXSEVSRSBr
ZXkgPSAnIiArIGRhdGFiYXNlVmVyc2lvbktleSgpICsgIic7Iik7CiAKICAgICBtX2RhdGFiYXNl
QXV0aG9yaXplci0+ZGlzYWJsZSgpOwogCkBAIC0yNTIsNyArMjU0LDcgQEAgc3RhdGljIGJvb2wg
c2V0VGV4dFZhbHVlSW5EYXRhYmFzZShTUUxpdAogCiBib29sIERhdGFiYXNlOjpzZXRWZXJzaW9u
SW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgc3RhdGljIFN0cmluZyBz
ZXRWZXJzaW9uUXVlcnkgPSAiSU5TRVJUIElOVE8gIiArIGRhdGFiYXNlSW5mb1RhYmxlTmFtZSgp
ICsgIiAoa2V5LCB2YWx1ZSkgVkFMVUVTICgnIiArIGRhdGFiYXNlVmVyc2lvbktleSgpICsgIics
ID8pOyI7CisgICAgc3RhdGljIFN0cmluZyYgc2V0VmVyc2lvblF1ZXJ5ID0gKm5ldyBTdHJpbmco
IklOU0VSVCBJTlRPICIgKyBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKSArICIgKGtleSwgdmFsdWUp
IFZBTFVFUyAoJyIgKyBkYXRhYmFzZVZlcnNpb25LZXkoKSArICInLCA/KTsiKTsKIAogICAgIG1f
ZGF0YWJhc2VBdXRob3JpemVyLT5kaXNhYmxlKCk7CiAKQEAgLTM1MiwxOSArMzU0LDIxIEBAIHZv
aWQgRGF0YWJhc2U6OmVuYWJsZUF1dGhvcml6ZXIoKQogCiBzdGF0aWMgaW50IGd1aWRGb3JPcmln
aW5BbmROYW1lKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0g
ICAgc3RhdGljIGludCBjdXJyZW50TmV3R1VJRCA9IDE7Ci0gICAgc3RhdGljIE11dGV4IHN0cmlu
Z0lkZW50aWZpZXJNdXRleDsKLSAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIGludD4gc3RyaW5n
SWRlbnRpZmllclRvR1VJRE1hcDsKLQogICAgIFN0cmluZyBzdHJpbmdJRDsKICAgICBpZiAob3Jp
Z2luLmVuZHNXaXRoKCIvIikpCiAgICAgICAgIHN0cmluZ0lEID0gb3JpZ2luICsgbmFtZTsKICAg
ICBlbHNlCiAgICAgICAgIHN0cmluZ0lEID0gb3JpZ2luICsgIi8iICsgbmFtZTsKIAorICAgIC8v
IE5vdGU6IFdlIGRvbid0IGhhdmUgdG8gdXNlIEF0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpYyBo
ZXJlIGJlY2F1c2UKKyAgICAvLyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNlIGluIHRoZSBj
b25zdHJ1Y3RvciBvbiB0aGUgbWFpbiB0aHJlYWQKKyAgICAvLyBiZWZvcmUgYW55IG90aGVyIHRo
cmVhZHMgdGhhdCBjYWxsIHRoaXMgZnVuY3Rpb24gYXJlIHVzZWQuCisgICAgc3RhdGljIE11dGV4
JiBzdHJpbmdJZGVudGlmaWVyTXV0ZXggPSAqbmV3IE11dGV4OwogICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihzdHJpbmdJZGVudGlmaWVyTXV0ZXgpOworICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywg
aW50PiYgc3RyaW5nSWRlbnRpZmllclRvR1VJRE1hcCA9ICpuZXcgSGFzaE1hcDxTdHJpbmcsIGlu
dD47CiAgICAgaW50IGd1aWQgPSBzdHJpbmdJZGVudGlmaWVyVG9HVUlETWFwLmdldChzdHJpbmdJ
RCk7CiAgICAgaWYgKCFndWlkKSB7CisgICAgICAgIHN0YXRpYyBpbnQgY3VycmVudE5ld0dVSUQg
PSAxOwogICAgICAgICBndWlkID0gY3VycmVudE5ld0dVSUQrKzsKICAgICAgICAgc3RyaW5nSWRl
bnRpZmllclRvR1VJRE1hcC5zZXQoc3RyaW5nSUQsIGd1aWQpOwogICAgIH0KSW5kZXg6IFdlYkNv
cmUvc3RvcmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCShyZXZpc2lvbiAzODA4MSkKKysrIFdlYkNvcmUvc3Rv
cmFnZS9EYXRhYmFzZVRyYWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBA
IE9yaWdpblF1b3RhTWFuYWdlciYgRGF0YWJhc2VUcmFja2VyOjpvcmkKIAogRGF0YWJhc2VUcmFj
a2VyJiBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKQogewotICAgIHN0YXRpYyBEYXRhYmFzZVRy
YWNrZXIgdHJhY2tlcjsKKyAgICBzdGF0aWMgRGF0YWJhc2VUcmFja2VyJiB0cmFja2VyID0gKm5l
dyBEYXRhYmFzZVRyYWNrZXI7CiAgICAgcmV0dXJuIHRyYWNrZXI7CiB9CiAKQEAgLTc3MSwxMyAr
NzcxLDE1IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpzZXRDbGllbnQoRGF0YWJhc2UKIAogc3Rh
dGljIE11dGV4JiBub3RpZmljYXRpb25NdXRleCgpCiB7Ci0gICAgc3RhdGljIE11dGV4IG11dGV4
OworICAgIHN0YXRpYyBNdXRleCYgbXV0ZXggPSAqbmV3IE11dGV4OwogICAgIHJldHVybiBtdXRl
eDsKIH0KIAotc3RhdGljIFZlY3RvcjxwYWlyPFNlY3VyaXR5T3JpZ2luKiwgU3RyaW5nPiA+JiBu
b3RpZmljYXRpb25RdWV1ZSgpCit0eXBlZGVmIFZlY3RvcjxwYWlyPFNlY3VyaXR5T3JpZ2luKiwg
U3RyaW5nPiA+IE5vdGlmaWNhdGlvblF1ZXVlOworCitzdGF0aWMgTm90aWZpY2F0aW9uUXVldWUm
IG5vdGlmaWNhdGlvblF1ZXVlKCkKIHsKLSAgICBzdGF0aWMgVmVjdG9yPHBhaXI8U2VjdXJpdHlP
cmlnaW4qLCBTdHJpbmc+ID4gcXVldWU7CisgICAgc3RhdGljIE5vdGlmaWNhdGlvblF1ZXVlJiBx
dWV1ZSA9ICpuZXcgTm90aWZpY2F0aW9uUXVldWU7CiAgICAgcmV0dXJuIHF1ZXVlOwogfQogCkBA
IC04MDcsNyArODA5LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6Om5vdGlmeURhdGFiYXNlc0No
YQogICAgIC8vIG1lY2hhbmlzbSB0byBpbmNsdWRlIHdoaWNoIHRyYWNrZXIgdGhlIG5vdGlmaWNh
dGlvbiBnb2VzIG91dCBvbiBhcyB3ZWxsLgogICAgIERhdGFiYXNlVHJhY2tlciYgdGhlVHJhY2tl
cih0cmFja2VyKCkpOwogCi0gICAgVmVjdG9yPHBhaXI8U2VjdXJpdHlPcmlnaW4qLCBTdHJpbmc+
ID4gbm90aWZpY2F0aW9uczsKKyAgICBOb3RpZmljYXRpb25RdWV1ZSBub3RpZmljYXRpb25zOwog
ICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG5vdGlmaWNhdGlvbk11dGV4KCkpOwog
CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDM4MDgxKQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDA4LTExLTAzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA2MQorICAgICAgICAgIGNyZWF0
ZSBzY3JpcHQgdG8gY2hlY2sgZm9yIGV4aXQtdGltZSBkZXN0cnVjdG9ycworCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIGEgc2NyaXB0CisgICAgICAg
IHBoYXNlIHRoYXQgcnVucyB0aGUgY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9ycyBzY3Jp
cHQuCisKIDIwMDgtMTAtMzEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBEZWNrZXIuCkluZGV4OiBXZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzODA4MSkKKysrIFdlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTMxNSw2ICsx
MzE1LDcgQEAKIAkJCQk5Mzk4MTBCMjA4MjRCRjAxMDA4REYwMzggLyogUmVzb3VyY2VzICovLAog
CQkJCTkzOTgxMEJCMDgyNEJGMDEwMDhERjAzOCAvKiBTb3VyY2VzICovLAogCQkJCTkzOUQwNTRG
MDlEQTAyRDUwMDk4NDk5NiAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVycyAqLywKKwkJ
CQk5MzM3RDY1NDBFQkZFNTREMDBEQTNDQjUgLyogQ2hlY2sgRm9yIEV4aXQgVGltZSBEZXN0cnVj
dG9ycyAqLywKIAkJCQk1RDBENTQyMTBFOTg2MzFEMDAyOUUyMjMgLyogQ2hlY2sgRm9yIFdlYWsg
VlRhYmxlcyAqLywKIAkJCQk5Mzk4MTEyNzA4MjRCRjAxMDA4REYwMzggLyogRnJhbWV3b3JrcyAq
LywKIAkJCQkxQzM5NURFMjBDNkJFOEUwMDAwRDFFNTIgLyogR2VuZXJhdGUgNjQtYml0IEV4cG9y
dCBGaWxlICovLApAQCAtMTQzNiw2ICsxNDM3LDIwIEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3No
OwogCQkJc2hlbGxTY3JpcHQgPSAiIyBUb3VjaCBJbmZvLnBsaXN0IHRvIGxldCBYY29kZSBrbm93
IGl0IG5lZWRzIHRvIGNvcHkgaXQgaW50byB0aGUgYnVpbHQgcHJvZHVjdFxudG91Y2ggXCIkUFJP
SkVDVF9ESVIvbWFjL0luZm8ucGxpc3RcIlxuIjsKIAkJfTsKKwkJOTMzN0Q2NTQwRUJGRTU0RDAw
REEzQ0I1IC8qIENoZWNrIEZvciBFeGl0IFRpbWUgRGVzdHJ1Y3RvcnMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQlu
YW1lID0gIkNoZWNrIEZvciBFeGl0IFRpbWUgRGVzdHJ1Y3RvcnMiOworCQkJb3V0cHV0UGF0aHMg
PSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiaWYgWyAtZiAuLi9XZWJL
aXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMgXTsgdGhlblxu
ICAgIC4uL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9y
cyB8fCBleGl0ICQ/XG5maSI7CisJCX07CiAJCTkzOTgxMTMwMDgyNEJGMDEwMDhERjAzOCAvKiBN
YWtlIEZyYW1ld29ya3MgU3ltYm9saWMgTGluayAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDg7CkluZGV4OiBXZWJLaXRUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAzODA4MSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDA4LTExLTAzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA2MQorICAgICAgICAgIGNyZWF0ZSBz
Y3JpcHQgdG8gY2hlY2sgZm9yIGV4aXQtdGltZSBkZXN0cnVjdG9ycworCisgICAgICAgICogU2Ny
aXB0cy9jaGVjay1mb3ItZXhpdC10aW1lLWRlc3RydWN0b3JzOiBBZGRlZC4KKyAgICAgICAgU3Rh
cnRlZCBhcyBhIGNvcHkgb2YgY2hlY2stZm9yLWdsb2JhbC1pbml0aWFsaXplcnMuCisKKyAgICAg
ICAgKiBTY3JpcHRzL2NoZWNrLWZvci1nbG9iYWwtaW5pdGlhbGl6ZXJzOiBBZGRlZCBjb2RlIHRv
IG1ha2UKKyAgICAgICAgdGhpcyBzY3JpcHQgcmVydW4gYW55IHRpbWUgaXQncyBtb2RpZmllZCwg
YW5kIGFsc28gdG8gcHJvcGVybHkKKyAgICAgICAgcnVuIGFnYWluIGFmdGVyIHRoZSBmaXJzdCB0
aW1lIGl0IHJlcG9ydHMgYW4gZXJyb3IuCisKIDIwMDgtMTAtMzEgIENhbWVyb24gWndhcmljaCAg
PHp3YXJpY2hAYXBwbGUuY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4KSW5kZXg6IFdlYktp
dFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9ycwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMJ
KHJldmlzaW9uIDM4MDQ1KQkoZnJvbSBXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1nbG9i
YWwtaW5pdGlhbGl6ZXJzOjM4MDQ1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay1mb3It
ZXhpdC10aW1lLWRlc3RydWN0b3JzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTM1IEBACisj
IS91c3IvYmluL3BlcmwKKworIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMgMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMg
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
ICJjaGVjay1mb3ItZ2xvYmFsLWluaXRpYWxpemVycyIgc2NyaXB0IGZvciBXZWJLaXQgT3BlbiBT
b3VyY2UgUHJvamVjdAorCisjIEludGVuZGVkIHRvIGJlIGludm9rZWQgZnJvbSBhbiBYY29kZSBi
dWlsZCBzdGVwIHRvIGNoZWNrIGlmIHRoZXJlIGFyZQorIyBhbnkgZ2xvYmFsIGluaXRpYWxpemVy
cyBpbiBhIHRhcmdldC4KKwordXNlIHdhcm5pbmdzOwordXNlIHN0cmljdDsKKwordXNlIEZpbGU6
OkJhc2VuYW1lOworCitzdWIgdG91Y2goJCk7CisKK215ICRhcmNoID0gJEVOVnsnQ1VSUkVOVF9B
UkNIJ307CitteSAkY29uZmlndXJhdGlvbiA9ICRFTlZ7J0NPTkZJR1VSQVRJT04nfTsKK215ICR0
YXJnZXQgPSAkRU5WeydUQVJHRVRfTkFNRSd9OworbXkgJHZhcmlhbnQgPSAkRU5WeydDVVJSRU5U
X1ZBUklBTlQnfTsKK215ICRjb3ZlcmFnZUJ1aWxkID0gJEVOVnsnV0VCS0lUX0NPVkVSQUdFX0JV
SUxEJ307CitteSAkZGVidWdSb290ID0gJEVOVnsnV0VCS0lUX0RFQlVHX1JPT1QnfTsKKworJGFy
Y2ggPSAkRU5WeydOQVRJVkVfQVJDSCd9IGlmICEkYXJjaDsgIyBmb3IgWGNvZGUgMi4xLCB3aGlj
aCBkb2VzIG5vdCBoYXZlIENVUlJFTlRfQVJDSAorJHZhcmlhbnQgPSAibm9ybWFsIiBpZiAhJHZh
cmlhbnQ7ICMgZm9yIFhjb2RlIDIuMSwgd2hpY2ggZG9lcyBub3QgaGF2ZSBDVVJSRU5UX1ZBUklB
TlQKKworbXkgJGV4ZWN1dGFibGVQYXRoID0gIiRFTlZ7J1RBUkdFVF9CVUlMRF9ESVInfS8kRU5W
eydFWEVDVVRBQkxFX1BBVEgnfSI7CisKK215ICRidWlsZFRpbWVzdGFtcFBhdGggPSAkRU5WeydU
QVJHRVRfVEVNUF9ESVInfSAuICIvIiAuIGJhc2VuYW1lKCQwKSAuICIudGltZXN0YW1wIjsKK215
ICRidWlsZFRpbWVzdGFtcEFnZSA9IC1NICRidWlsZFRpbWVzdGFtcFBhdGg7CisKK3RvdWNoKCRi
dWlsZFRpbWVzdGFtcFBhdGgpOworCitteSAkbGlzdCA9ICRFTlZ7IkxJTktfRklMRV9MSVNUXyR7
dmFyaWFudH1fJHthcmNofSJ9OworCitpZiAoIW9wZW4gTElTVCwgJGxpc3QpIHsKKyAgICBwcmlu
dCAiQ291bGQgbm90IG9wZW4gJGxpc3RcbiI7CisgICAgZXhpdCAxOworfQorCitteSBAZmlsZXMg
PSA8TElTVD47CitjaG9tcCBAZmlsZXM7CitjbG9zZSBMSVNUOworCitteSAkc2F3RXJyb3IgPSAw
OworCitmb3IgbXkgJGZpbGUgKHNvcnQgQGZpbGVzKSB7CisgICAgaWYgKGRlZmluZWQgJGJ1aWxk
VGltZXN0YW1wQWdlKSB7CisgICAgICAgIG15ICRmaWxlQWdlID0gLU0gJGZpbGU7CisgICAgICAg
IG5leHQgaWYgZGVmaW5lZCAkZmlsZUFnZSAmJiAkZmlsZUFnZSA+ICRidWlsZFRpbWVzdGFtcEFn
ZTsKKyAgICB9CisgICAgaWYgKCFvcGVuIE5NLCAiKG5tICckZmlsZScgfCBzZWQgJ3MvXi9TVERP
VVQ6LycpIDI+JjEgfCIpIHsKKyAgICAgICAgcHJpbnQgIkNvdWxkIG5vdCBvcGVuICRmaWxlXG4i
OworICAgICAgICAkc2F3RXJyb3IgPSAxOworICAgICAgICBuZXh0OworICAgIH0KKyAgICBteSAk
c2F3R2xvYmFsID0gMDsKKyAgICB3aGlsZSAoPE5NPikgeworICAgICAgICBpZiAoL15TVERPVVQ6
LykgeworICAgICAgICAgICAgJHNhd0dsb2JhbCA9IDEgaWYgL19fR0xPQkFMX19JLzsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiBpZiAkXyBuZSAibm06IG5vIG5h
bWUgbGlzdFxuIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZSBOTTsKKyAgICBpZiAoJHNh
d0dsb2JhbCkgeworICAgICAgICBteSAkc2hvcnROYW1lID0gJGZpbGU7CisgICAgICAgICRzaG9y
dE5hbWUgPX4gcy8uKlwvLy87CisKKyAgICAgICAgIyBTcGVjaWFsIGNhc2VzIGZvciBmaWxlcyB0
aGF0IGhhdmUgaW5pdGlhbGl6ZXJzIGluIGRlYnVnIGJ1aWxkcy4KKyAgICAgICAgaWYgKCRjb25m
aWd1cmF0aW9uIGVxICJEZWJ1ZyIgb3IgJHZhcmlhbnQgZXEgImRlYnVnIiBvciAkZGVidWdSb290
KSB7CisgICAgICAgICAgICBpZiAoJHRhcmdldCBlcSAiSmF2YVNjcmlwdENvcmUiKSB7CisgICAg
ICAgICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJBbGxJbk9uZUZpbGUubyI7CisgICAg
ICAgICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJPcGNvZGUubyI7CisgICAgICAgICAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTdHJ1Y3R1cmVJRC5vIjsKKyAgICAgICAgICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIm5vZGVzLm8iOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCR0YXJnZXQgZXEgIldlYkNvcmUiKSB7CisgICAgICAgICAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJDYWNoZWRQYWdlLm8iOworICAgICAgICAgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiQ2FjaGVkUmVzb3VyY2UubyI7CisgICAgICAgICAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJGcmFtZS5vIjsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5vIjsKKyAgICAgICAg
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTRXZlbnRMaXN0ZW5lci5vIjsKKyAgICAg
ICAgICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIk5vZGUubyI7CisgICAgICAgICAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJQYWdlLm8iOworICAgICAgICAgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiUmFuZ2UubyI7CisgICAgICAgICAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJSZW5kZXJPYmplY3QubyI7CisgICAgICAgICAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJTdWJyZXNvdXJjZUxvYWRlci5vIjsKKyAgICAgICAgICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIlNWR0VsZW1lbnRJbnN0YW5jZS5vIjsKKyAgICAgICAgICAgICAgICBu
ZXh0IGlmICRzaG9ydE5hbWUgZXEgImJpZGkubyI7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBwcmludCAiJHNob3J0TmFtZSBoYXMgYSBnbG9iYWwgaW5pdGlhbGl6ZXIgaW4g
aXQhICgkZmlsZSlcbiI7CisgICAgICAgICRzYXdFcnJvciA9IDE7CisgICAgfQorfQorCitpZiAo
JHNhd0Vycm9yIGFuZCAhJGNvdmVyYWdlQnVpbGQpIHsKKyAgICB1bmxpbmsgJGV4ZWN1dGFibGVQ
YXRoOworICAgIGV4aXQgMTsKK30KKworZXhpdCAwOworCitzdWIgdG91Y2goJCkKK3sKKyAgICBt
eSAoJHBhdGgpID0gQF87CisgICAgb3BlbihUT1VDSCwgIj4iLCAkcGF0aCkgb3IgZGllICIkISI7
CisgICAgY2xvc2UoVE9VQ0gpOworfQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay1m
b3ItZXhpdC10aW1lLWRlc3RydWN0b3JzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1Njcmlw
dHMvY2hlY2stZm9yLWV4aXQtdGltZS1kZXN0cnVjdG9ycwkocmV2aXNpb24gMzgwNDEpCisrKyBX
ZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDEwICsyNiwxMCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICMgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotIyAiY2hlY2stZm9yLWdsb2JhbC1pbml0aWFsaXplcnMiIHNjcmlwdCBmb3IgV2ViS2l0
IE9wZW4gU291cmNlIFByb2plY3QKKyMgImNoZWNrLWZvci1leGl0LXRpbWUtZGVzdHJ1Y3RvcnMi
IHNjcmlwdCBmb3IgV2ViS2l0IE9wZW4gU291cmNlIFByb2plY3QKIAogIyBJbnRlbmRlZCB0byBi
ZSBpbnZva2VkIGZyb20gYW4gWGNvZGUgYnVpbGQgc3RlcCB0byBjaGVjayBpZiB0aGVyZSBhcmUK
LSMgYW55IGdsb2JhbCBpbml0aWFsaXplcnMgaW4gYSB0YXJnZXQuCisjIGFueSBleGl0LXRpbWUg
ZGVzdHJ1Y3RvcnMgaW4gYSB0YXJnZXQuCiAKIHVzZSB3YXJuaW5nczsKIHVzZSBzdHJpY3Q7CkBA
IC0zNyw2ICszNyw3IEBAIHVzZSBzdHJpY3Q7CiB1c2UgRmlsZTo6QmFzZW5hbWU7CiAKIHN1YiB0
b3VjaCgkKTsKK3N1YiBwcmludEZ1bmN0aW9ucygkJCk7CiAKIG15ICRhcmNoID0gJEVOVnsnQ1VS
UkVOVF9BUkNIJ307CiBteSAkY29uZmlndXJhdGlvbiA9ICRFTlZ7J0NPTkZJR1VSQVRJT04nfTsK
QEAgLTUyLDggKzUzLDcgQEAgbXkgJGV4ZWN1dGFibGVQYXRoID0gIiRFTlZ7J1RBUkdFVF9CVUlM
RAogCiBteSAkYnVpbGRUaW1lc3RhbXBQYXRoID0gJEVOVnsnVEFSR0VUX1RFTVBfRElSJ30gLiAi
LyIgLiBiYXNlbmFtZSgkMCkgLiAiLnRpbWVzdGFtcCI7CiBteSAkYnVpbGRUaW1lc3RhbXBBZ2Ug
PSAtTSAkYnVpbGRUaW1lc3RhbXBQYXRoOwotCi10b3VjaCgkYnVpbGRUaW1lc3RhbXBQYXRoKTsK
K215ICRzY3JpcHRBZ2UgPSAtTSAkMDsKIAogbXkgJGxpc3QgPSAkRU5WeyJMSU5LX0ZJTEVfTElT
VF8ke3ZhcmlhbnR9XyR7YXJjaH0ifTsKIApAQCAtNjksNyArNjksNyBAQCBjbG9zZSBMSVNUOwog
bXkgJHNhd0Vycm9yID0gMDsKIAogZm9yIG15ICRmaWxlIChzb3J0IEBmaWxlcykgewotICAgIGlm
IChkZWZpbmVkICRidWlsZFRpbWVzdGFtcEFnZSkgeworICAgIGlmIChkZWZpbmVkICRidWlsZFRp
bWVzdGFtcEFnZSAmJiAkYnVpbGRUaW1lc3RhbXBBZ2UgPCAkc2NyaXB0QWdlKSB7CiAgICAgICAg
IG15ICRmaWxlQWdlID0gLU0gJGZpbGU7CiAgICAgICAgIG5leHQgaWYgZGVmaW5lZCAkZmlsZUFn
ZSAmJiAkZmlsZUFnZSA+ICRidWlsZFRpbWVzdGFtcEFnZTsKICAgICB9CkBAIC03OCw0NiArNzgs
MTI1IEBAIGZvciBteSAkZmlsZSAoc29ydCBAZmlsZXMpIHsKICAgICAgICAgJHNhd0Vycm9yID0g
MTsKICAgICAgICAgbmV4dDsKICAgICB9Ci0gICAgbXkgJHNhd0dsb2JhbCA9IDA7CisgICAgbXkg
JHNhd0F0RXhpdCA9IDA7CiAgICAgd2hpbGUgKDxOTT4pIHsKICAgICAgICAgaWYgKC9eU1RET1VU
Oi8pIHsKLSAgICAgICAgICAgICRzYXdHbG9iYWwgPSAxIGlmIC9fX0dMT0JBTF9fSS87CisgICAg
ICAgICAgICAkc2F3QXRFeGl0ID0gMSBpZiAvX19fY3hhX2F0ZXhpdC87CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBwcmludCBTVERFUlIgaWYgJF8gbmUgIm5tOiBubyBuYW1lIGxpc3Rc
biI7CiAgICAgICAgIH0KICAgICB9CiAgICAgY2xvc2UgTk07Ci0gICAgaWYgKCRzYXdHbG9iYWwp
IHsKLSAgICAgICAgbXkgJHNob3J0TmFtZSA9ICRmaWxlOwotICAgICAgICAkc2hvcnROYW1lID1+
IHMvLipcLy8vOwotCi0gICAgICAgICMgU3BlY2lhbCBjYXNlcyBmb3IgZmlsZXMgdGhhdCBoYXZl
IGluaXRpYWxpemVycyBpbiBkZWJ1ZyBidWlsZHMuCi0gICAgICAgIGlmICgkY29uZmlndXJhdGlv
biBlcSAiRGVidWciIG9yICR2YXJpYW50IGVxICJkZWJ1ZyIgb3IgJGRlYnVnUm9vdCkgewotICAg
ICAgICAgICAgaWYgKCR0YXJnZXQgZXEgIkphdmFTY3JpcHRDb3JlIikgewotICAgICAgICAgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiQWxsSW5PbmVGaWxlLm8iOwotICAgICAgICAgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiT3Bjb2RlLm8iOwotICAgICAgICAgICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiU3RydWN0dXJlSUQubyI7Ci0gICAgICAgICAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJub2Rlcy5vIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICgkdGFyZ2V0IGVxICJXZWJDb3JlIikgewotICAgICAgICAgICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiQ2FjaGVkUGFnZS5vIjsKLSAgICAgICAgICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkNhY2hlZFJlc291cmNlLm8iOwotICAgICAgICAgICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiRnJhbWUubyI7Ci0gICAgICAgICAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJKU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2subyI7Ci0gICAgICAgICAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU0V2ZW50TGlzdGVuZXIubyI7Ci0gICAgICAgICAgICAg
ICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJOb2RlLm8iOwotICAgICAgICAgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiUGFnZS5vIjsKLSAgICAgICAgICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIlJhbmdlLm8iOwotICAgICAgICAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiUmVuZGVyT2JqZWN0Lm8iOwotICAgICAgICAgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBl
cSAiU3VicmVzb3VyY2VMb2FkZXIubyI7Ci0gICAgICAgICAgICAgICAgbmV4dCBpZiAkc2hvcnRO
YW1lIGVxICJTVkdFbGVtZW50SW5zdGFuY2UubyI7Ci0gICAgICAgICAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJiaWRpLm8iOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgbmV4
dCB1bmxlc3MgJHNhd0F0RXhpdDsKIAotICAgICAgICBwcmludCAiJHNob3J0TmFtZSBoYXMgYSBn
bG9iYWwgaW5pdGlhbGl6ZXIgaW4gaXQhICgkZmlsZSlcbiI7Ci0gICAgICAgICRzYXdFcnJvciA9
IDE7CisgICAgbXkgJHNob3J0TmFtZSA9ICRmaWxlOworICAgICRzaG9ydE5hbWUgPX4gcy8uKlwv
Ly87CisKKyAgICBpZiAoJHRhcmdldCBlcSAiV2ViQ29yZSIpIHsKKyAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lm8iOworICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QubyI7CisgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UubyI7CisgICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiQXBwbHlTdHlsZUNvbW1hbmQubyI7CisgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiQXJjaGl2ZUZhY3RvcnkubyI7CisgICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24ubyI7CisgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiQ1NTUHJpbWl0aXZlVmFsdWUubyI7CisgICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiQ1NTU2VsZWN0b3IubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiQ1NTU3R5bGVTZWxlY3Rvci5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJDYWNoZWRJbWFnZS5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJDb2xvck1h
Yy5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJET01JbXBsZW1lbnRhdGlvbi5v
IjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJEb2N1bWVudC5vIjsKKyAgICAgICAg
bmV4dCBpZiAkc2hvcnROYW1lIGVxICJFdmVudEhhbmRsZXIubyI7CisgICAgICAgIG5leHQgaWYg
JHNob3J0TmFtZSBlcSAiRXZlbnRIYW5kbGVyTWFjLm8iOworICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkZUUERpcmVjdG9yeURvY3VtZW50Lm8iOworICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIkZvbnRDYWNoZS5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJG
b250Q2FjaGVNYWMubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRm9ybURhdGFT
dHJlYW1NYWMubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWUubyI7Cisg
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWVMb2FkZXIubyI7CisgICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiRnJhbWVNYWMubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiR0NDb250cm9sbGVyLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IkdyYXBoaWNzQ29udGV4dE1hYy5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJI
VE1MQnV0dG9uRWxlbWVudC5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1M
RWxlbWVudC5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJIVE1MRmllbGRTZXRF
bGVtZW50Lm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxJbnB1dEVsZW1l
bnQubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTEludGVyY2hhbmdlLm8i
OworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxLZXlnZW5FbGVtZW50Lm8iOwor
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxMZWdlbmRFbGVtZW50Lm8iOworICAg
ICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkhUTUxPcHRHcm91cEVsZW1lbnQubyI7CisgICAg
ICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTE9wdGlvbkVsZW1lbnQubyI7CisgICAgICAg
IG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSFRNTFBhcnNlci5vIjsKKyAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJIVE1MU2VsZWN0RWxlbWVudC5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJIVE1MVGFibGVFbGVtZW50Lm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5h
bWUgZXEgIkhUTUxUZXh0QXJlYUVsZW1lbnQubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiSWNvbkRhdGFiYXNlLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIklt
YWdlLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkluZGVudE91dGRlbnRDb21t
YW5kLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkluc3BlY3RvckNvbnRyb2xs
ZXIubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNET01CaW5kaW5nLm8iOwor
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkpTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJKU0luc3BlY3RlZE9iamVjdFdy
YXBwZXIubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNJbnNwZWN0b3JDYWxs
YmFja1dyYXBwZXIubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSlNTVkdFbGVt
ZW50V3JhcHBlckZhY3RvcnkubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiSmF2
YVNjcmlwdERlYnVnU2VydmVyLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkph
dmFTY3JpcHRQcm9maWxlLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkphdmFT
Y3JpcHRQcm9maWxlTm9kZS5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJLVVJM
Lm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIkxvY2FsU3RvcmFnZS5vIjsKKyAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJOZXR3b3JrU3RhdGVOb3RpZmllci5vIjsKKyAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJQYWdlLm8iOworICAgICAgICBuZXh0IGlmICRz
aG9ydE5hbWUgZXEgIlBhc3RlYm9hcmRNYWMubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFt
ZSBlcSAiUmVuZGVyQmxvY2subyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiUmVu
ZGVyQ291bnRlci5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJGbGV4
aWJsZUJveC5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJMYXllci5v
IjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJMaXN0SXRlbS5vIjsKKyAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5vIjsKKyAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJTdHlsZS5vIjsKKyAgICAgICAgbmV4
dCBpZiAkc2hvcnROYW1lIGVxICJSZW5kZXJUaGVtZU1hYy5vIjsKKyAgICAgICAgbmV4dCBpZiAk
c2hvcnROYW1lIGVxICJSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5vIjsKKyAgICAgICAgbmV4dCBp
ZiAkc2hvcnROYW1lIGVxICJSZXNvdXJjZVJlc3BvbnNlTWFjLm8iOworICAgICAgICBuZXh0IGlm
ICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Lm8iOworICAgICAgICBuZXh0
IGlmICRzaG9ydE5hbWUgZXEgIlNWR0FuaW1hdGlvbkVsZW1lbnQubyI7CisgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiU1ZHTGFuZ1NwYWNlLm8iOworICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIlNWR1Jlc291cmNlLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IlNWR1Jlc291cmNlTWFya2VyLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNW
R1NNSUxFbGVtZW50Lm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1NWR0Vs
ZW1lbnQubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiU1ZHU3R5bGVFbGVtZW50
Lm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNWR1RleHRDb250ZW50RWxlbWVu
dC5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJTY3JpcHRFbGVtZW50Lm8iOwor
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlNjcm9sbFZpZXcubyI7CisgICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiU2Nyb2xsYmFyVGhlbWVNYWMubyI7CisgICAgICAgIG5leHQg
aWYgJHNob3J0TmFtZSBlcSAiU2VjdXJpdHlPcmlnaW4ubyI7CisgICAgICAgIG5leHQgaWYgJHNo
b3J0TmFtZSBlcSAiU2ltcGxlRm9udERhdGFNYWMubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiVGV4dEVuY29kaW5nLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEg
IlRoZW1lTWFjLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlRocmVhZENoZWNr
Lm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhNTEh0dHBSZXF1ZXN0Lm8iOwor
ICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIlhQYXRoRXhwcmVzc2lvbk5vZGUubyI7Cisg
ICAgICAgIG5leHQgaWYgJHNob3J0TmFtZSBlcSAiWFBhdGhQYXJzZXIubyI7CisgICAgICAgIG5l
eHQgaWYgJHNob3J0TmFtZSBlcSAiWFBhdGhWYWx1ZS5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hv
cnROYW1lIGVxICJiaWRpLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgImh0bWxl
ZGl0aW5nLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUgZXEgIm1hcmt1cC5vIjsKKyAg
ICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVxICJydW50aW1lX3Jvb3QubyI7CiAgICAgfQorCisg
ICAgaWYgKCR0YXJnZXQgZXEgIldlYktpdCIpIHsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIldlYkJhY2tGb3J3YXJkTGlzdC5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJXZWJCYXNlTmV0c2NhcGVQbHVnaW5TdHJlYW0ubyI7CisgICAgICAgIG5leHQgaWYgJHNob3J0
TmFtZSBlcSAiV2ViSFRNTFJlcHJlc2VudGF0aW9uLm8iOworICAgICAgICBuZXh0IGlmICRzaG9y
dE5hbWUgZXEgIldlYkhpc3RvcnlJdGVtLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIldlYk5TUGFzdGVib2FyZEV4dHJhcy5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1l
IGVxICJXZWJQYXN0ZWJvYXJkSGVscGVyLm8iOworICAgICAgICBuZXh0IGlmICRzaG9ydE5hbWUg
ZXEgIldlYlN0cmluZ1RydW5jYXRvci5vIjsKKyAgICAgICAgbmV4dCBpZiAkc2hvcnROYW1lIGVx
ICJXZWJWaWV3Lm8iOworICAgIH0KKworICAgICRzYXdFcnJvciA9IDEgaWYgcHJpbnRGdW5jdGlv
bnMoJHNob3J0TmFtZSwgJGZpbGUpOwogfQogCiBpZiAoJHNhd0Vycm9yIGFuZCAhJGNvdmVyYWdl
QnVpbGQpIHsKQEAgLTEyNSw2ICsyMDQsNyBAQCBpZiAoJHNhd0Vycm9yIGFuZCAhJGNvdmVyYWdl
QnVpbGQpIHsKICAgICBleGl0IDE7CiB9CiAKK3RvdWNoKCRidWlsZFRpbWVzdGFtcFBhdGgpOwog
ZXhpdCAwOwogCiBzdWIgdG91Y2goJCkKQEAgLTEzMywzICsyMTMsNDEgQEAgc3ViIHRvdWNoKCQp
CiAgICAgb3BlbihUT1VDSCwgIj4iLCAkcGF0aCkgb3IgZGllICIkISI7CiAgICAgY2xvc2UoVE9V
Q0gpOwogfQorCitzdWIgZGVtYW5nbGUoJCkKK3sKKyAgICBteSAoJHN5bWJvbCkgPSBAXzsKKyAg
ICBpZiAoIW9wZW4gRklMVCwgImMrK2ZpbHQgJHN5bWJvbCB8IikgeworICAgICAgICBwcmludCAi
Q291bGQgbm90IG9wZW4gYysrZmlsdFxuIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBt
eSAkcmVzdWx0ID0gPEZJTFQ+OworICAgIGNsb3NlIEZJTFQ7CisgICAgY2hvbXAgJHJlc3VsdDsK
KyAgICByZXR1cm4gJHJlc3VsdDsKK30KKworc3ViIHByaW50RnVuY3Rpb25zKCQkKQoreworICAg
IG15ICgkc2hvcnROYW1lLCAkcGF0aCkgPSBAXzsKKyAgICBpZiAoIW9wZW4gT1RPT0wsICJvdG9v
bCAtdFYgJyRwYXRoJyB8IikgeworICAgICAgICBwcmludCAiQ291bGQgbm90IG9wZW4gJHBhdGhc
biI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBteSAlZnVuY3Rpb25zOworICAgIG15
ICRjdXJyZW50U3ltYm9sID0gIiI7CisgICAgd2hpbGUgKDxPVE9PTD4pIHsKKyAgICAgICAgJGN1
cnJlbnRTeW1ib2wgPSAkMSBpZiAvXihcdyspOiQvOworICAgICAgICAkZnVuY3Rpb25ze2RlbWFu
Z2xlKCRjdXJyZW50U3ltYm9sKX0gPSAxIGlmIC9fX19jeGFfYXRleGl0LzsKKyAgICB9CisgICAg
Y2xvc2UgT1RPT0w7CisgICAgbXkgJHJlc3VsdCA9IDA7CisgICAgZm9yIG15ICRmdW5jdGlvbiAo
c29ydCBrZXlzICVmdW5jdGlvbnMpIHsKKyAgICAgICAgaWYgKCEkcmVzdWx0KSB7CisgICAgICAg
ICAgICBwcmludCAiJHNob3J0TmFtZSBoYXMgZXhpdCB0aW1lIGRlc3RydWN0b3JzIGluIGl0ISAo
JHBhdGgpXG4iOworICAgICAgICAgICAgJHJlc3VsdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAg
cHJpbnQgIiAgICAkZnVuY3Rpb25cbiI7CisgICAgfQorICAgIHJldHVybiAkcmVzdWx0OworfQoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZXhpdC10
aW1lLWRlc3RydWN0b3JzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjptZXJnZWluZm8KCkluZGV4OiBX
ZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLWZvci1nbG9iYWwtaW5pdGlhbGl6ZXJzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2stZm9yLWdsb2JhbC1pbml0aWFsaXplcnMJ
KHJldmlzaW9uIDM4MDgxKQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItZ2xvYmFs
LWluaXRpYWxpemVycwkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsNyBAQCBteSAkZXhlY3V0
YWJsZVBhdGggPSAiJEVOVnsnVEFSR0VUX0JVSUxECiAKIG15ICRidWlsZFRpbWVzdGFtcFBhdGgg
PSAkRU5WeydUQVJHRVRfVEVNUF9ESVInfSAuICIvIiAuIGJhc2VuYW1lKCQwKSAuICIudGltZXN0
YW1wIjsKIG15ICRidWlsZFRpbWVzdGFtcEFnZSA9IC1NICRidWlsZFRpbWVzdGFtcFBhdGg7Ci0K
LXRvdWNoKCRidWlsZFRpbWVzdGFtcFBhdGgpOworbXkgJHNjcmlwdEFnZSA9IC1NICQwOwogCiBt
eSAkbGlzdCA9ICRFTlZ7IkxJTktfRklMRV9MSVNUXyR7dmFyaWFudH1fJHthcmNofSJ9OwogCkBA
IC02OSw3ICs2OCw3IEBAIGNsb3NlIExJU1Q7CiBteSAkc2F3RXJyb3IgPSAwOwogCiBmb3IgbXkg
JGZpbGUgKHNvcnQgQGZpbGVzKSB7Ci0gICAgaWYgKGRlZmluZWQgJGJ1aWxkVGltZXN0YW1wQWdl
KSB7CisgICAgaWYgKGRlZmluZWQgJGJ1aWxkVGltZXN0YW1wQWdlICYmICRidWlsZFRpbWVzdGFt
cEFnZSA8ICRzY3JpcHRBZ2UpIHsKICAgICAgICAgbXkgJGZpbGVBZ2UgPSAtTSAkZmlsZTsKICAg
ICAgICAgbmV4dCBpZiBkZWZpbmVkICRmaWxlQWdlICYmICRmaWxlQWdlID4gJGJ1aWxkVGltZXN0
YW1wQWdlOwogICAgIH0KQEAgLTEyNSw2ICsxMjQsNyBAQCBpZiAoJHNhd0Vycm9yIGFuZCAhJGNv
dmVyYWdlQnVpbGQpIHsKICAgICBleGl0IDE7CiB9CiAKK3RvdWNoKCRidWlsZFRpbWVzdGFtcFBh
dGgpOwogZXhpdCAwOwogCiBzdWIgdG91Y2goJCkK
</data>
<flag name="review"
          id="11399"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>