<?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>142440</bug_id>
          
          <creation_ts>2015-03-07 11:03:07 -0800</creation_ts>
          <short_desc>Unindent EventTarget, EventListener, JSEventLister.h files</short_desc>
          <delta_ts>2015-03-07 17:37:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1075284</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-07 11:03:07 -0800</bug_when>
    <thetext>Unindent EventTarget, EventListener, JSEventLister.h files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075285</commentid>
    <comment_count>1</comment_count>
      <attachid>248162</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-07 11:03:39 -0800</bug_when>
    <thetext>Created attachment 248162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075287</commentid>
    <comment_count>2</comment_count>
      <attachid>248163</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-07 11:05:37 -0800</bug_when>
    <thetext>Created attachment 248163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075306</commentid>
    <comment_count>3</comment_count>
      <attachid>248163</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-07 16:00:33 -0800</bug_when>
    <thetext>Comment on attachment 248163
Patch

Rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075316</commentid>
    <comment_count>4</comment_count>
      <attachid>248163</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-07 17:37:53 -0800</bug_when>
    <thetext>Comment on attachment 248163
Patch

Clearing flags on attachment: 248163

Committed r181216: &lt;http://trac.webkit.org/changeset/181216&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075317</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-07 17:37:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248162</attachid>
            <date>2015-03-07 11:03:39 -0800</date>
            <delta_ts>2015-03-07 11:05:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142440-20150307110318.patch</filename>
            <type>text/plain</type>
            <size>30284</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ4Y2ViOTc4Mjk1ZTNj
ZDcxMjc3YjIxZTFiN2MyZjg5ZDE0YWY2OS4uNTI2ZjQzZjkyZTMyOGMzZDM0NTgyY2UyYmNkZDQ1
YjNiMjc4MzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTAzLTA3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVbmluZGVudCBFdmVudFRhcmdl
dCwgRXZlbnRMaXN0ZW5lciwgSlNFdmVudExpc3Rlci5oIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI0NDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5oOgorICAgICAgICAqIGRvbS9FdmVudExpc3RlbmVyLmg6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgIENoYW5nZSBpbmRlbnRhdGlvbiB0byBtYXRjaCBjb2Rpbmcg
c3R5bGUgcnVsZXMuCisKIDIwMTUtMDMtMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dpbl0gSW5jcmVhc2UgVGVzdFdlYktpdEFQSSBUZXN0IENvdmVy
YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4
IGNlM2Y5MjNkNzgyNmE0ZTNiZTUxNzk3NDZjODc1YzczNmU5YTQzOGMuLmM2NWViMzUyZThiYzgx
ZWQ1YTZlNDA0ZTdiZWFiNTZmMjJkYzU5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC0xLDIxICsxLDIxIEBACiAvKgotICogIENvcHlyaWdo
dCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKLSAqLworKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCisqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKiAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisqCisqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyoKKyogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyog
IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUgU29mdHdhcmUKKyogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorKi8KIAogI2lmbmRlZiBKU0V2
ZW50TGlzdGVuZXJfaAogI2RlZmluZSBKU0V2ZW50TGlzdGVuZXJfaApAQCAtMjksMTAxICsyOSwx
MDEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgRXZlbnRUYXJnZXQ7Ci0g
ICAgY2xhc3MgSFRNTEVsZW1lbnQ7Ci0gICAgY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CitjbGFz
cyBFdmVudFRhcmdldDsKK2NsYXNzIEhUTUxFbGVtZW50OworY2xhc3MgSlNET01HbG9iYWxPYmpl
Y3Q7CiAKLSAgICBjbGFzcyBKU0V2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7
Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRl
KEpTQzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBib29sIGlz
QXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU0V2ZW50TGlzdGVuZXIobGlzdGVuZXIsIHdyYXBwZXIs
IGlzQXR0cmlidXRlLCB3b3JsZCkpOwotICAgICAgICB9CitjbGFzcyBKU0V2ZW50TGlzdGVuZXIg
OiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxKU0V2ZW50
TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCog
d3JhcHBlciwgYm9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwg
d3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxkKSk7CisgICAgfQogCi0gICAgICAgIHN0YXRpYyBj
b25zdCBKU0V2ZW50TGlzdGVuZXIqIGNhc3QoY29uc3QgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lci0+dHlwZSgpID09IEpTRXZl
bnRMaXN0ZW5lclR5cGUKLSAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PGNvbnN0IEpTRXZl
bnRMaXN0ZW5lcio+KGxpc3RlbmVyKQotICAgICAgICAgICAgICAgIDogMDsKLSAgICAgICAgfQor
ICAgIHN0YXRpYyBjb25zdCBKU0V2ZW50TGlzdGVuZXIqIGNhc3QoY29uc3QgRXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIpCisgICAgeworICAgICAgICByZXR1cm4gbGlzdGVuZXItPnR5cGUoKSA9PSBK
U0V2ZW50TGlzdGVuZXJUeXBlCisgICAgICAgICAgICA/IHN0YXRpY19jYXN0PGNvbnN0IEpTRXZl
bnRMaXN0ZW5lcio+KGxpc3RlbmVyKQorICAgICAgICAgICAgOiAwOworICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVuZXIoKTsKKyAgICB2aXJ0dWFsIH5KU0V2ZW50TGlzdGVu
ZXIoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBvdGhlcikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlOwogCi0gICAgICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGlzIGV2ZW50IGxpc3RlbmVyIHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVy
IGF0dHJpYnV0ZSwgbGlrZSAib25sb2FkIiBvciAib25jbGljayIuCi0gICAgICAgIGJvb2wgaXNB
dHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX2lzQXR0cmlidXRlOyB9CisgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoaXMgZXZlbnQgbGlzdGVuZXIgd2FzIGNyZWF0ZWQgZm9yIGFuIGV2ZW50IGhh
bmRsZXIgYXR0cmlidXRlLCBsaWtlICJvbmxvYWQiIG9yICJvbmNsaWNrIi4KKyAgICBib29sIGlz
QXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc0F0dHJpYnV0ZTsgfQogCi0gICAgICAgIEpT
Qzo6SlNPYmplY3QqIGpzRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0Owot
ICAgICAgICBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJldHVybiAq
bV9pc29sYXRlZFdvcmxkOyB9CisgICAgSlNDOjpKU09iamVjdCoganNGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikgY29uc3Q7CisgICAgRE9NV3JhcHBlcldvcmxkJiBpc29sYXRlZFdv
cmxkKCkgY29uc3QgeyByZXR1cm4gKm1faXNvbGF0ZWRXb3JsZDsgfQogCi0gICAgICAgIEpTQzo6
SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0KCk7IH0KLSAg
ICAgICAgdm9pZCBzZXRXcmFwcGVyKEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKSBj
b25zdCB7IG1fd3JhcHBlciA9IEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0Pih3cmFwcGVyKTsgfQor
ICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX3dyYXBwZXIuZ2V0
KCk7IH0KKyAgICB2b2lkIHNldFdyYXBwZXIoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIHdyYXBw
ZXIpIGNvbnN0IHsgbV93cmFwcGVyID0gSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+KHdyYXBwZXIp
OyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGluaXRp
YWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHZpc2l0SlNGdW5jdGlvbihKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB2aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZTsKK3ByaXZhdGU6CisgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHZp
c2l0SlNGdW5jdGlvbihKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgcHJvdGVjdGVk
OgotICAgICAgICBKU0V2ZW50TGlzdGVuZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTQzo6
SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3JsZCYpOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV2ZW50Kikgb3ZlcnJpZGU7Citwcm90ZWN0ZWQ6CisgICAgSlNFdmVudExpc3RlbmVyKEpTQzo6
SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQXR0cmli
dXRlLCBET01XcmFwcGVyV29ybGQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kikgb3ZlcnJpZGU7CiAKLSAgICBwcml2YXRlOgot
ICAgICAgICBtdXRhYmxlIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX2pzRnVuY3Rpb247Ci0g
ICAgICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKK3ByaXZh
dGU6CisgICAgbXV0YWJsZSBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV9qc0Z1bmN0aW9uOwor
ICAgIG11dGFibGUgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKIAotICAgICAg
ICBib29sIG1faXNBdHRyaWJ1dGU7Ci0gICAgICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1f
aXNvbGF0ZWRXb3JsZDsKLSAgICB9OworICAgIGJvb2wgbV9pc0F0dHJpYnV0ZTsKKyAgICBSZWZQ
dHI8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29ybGQ7Cit9OwogCi0gICAgLy8gRm9yICJv
bnh4eCIgYXR0cmlidXRlcyB0aGF0IGF1dG9tYXRpY2FsbHkgc2V0IHVwIEphdmFTY3JpcHQgZXZl
bnQgbGlzdGVuZXJzLgotICAgIEpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZl
bnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Ci0gICAgdm9pZCBzZXRF
dmVudEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgRXZl
bnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKTsK
Ky8vIEZvciAib254eHgiIGF0dHJpYnV0ZXMgdGhhdCBhdXRvbWF0aWNhbGx5IHNldCB1cCBKYXZh
U2NyaXB0IGV2ZW50IGxpc3RlbmVycy4KK0pTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1
dGUoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Cit2b2lkIHNl
dEV2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmLCBF
dmVudFRhcmdldCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUp
OwogCi0gICAgLy8gTGlrZSB0aGUgZnVuY3Rpb25zIGFib3ZlLCBidXQgZm9yIGF0dHJpYnV0ZXMg
dGhhdCBmb3J3YXJkIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB3aW5kb3cgb2JqZWN0IHJhdGhlciB0
aGFuIHNldHRpbmcgdGhlbSBvbiB0aGUgdGFyZ2V0LgotICAgIEpTQzo6SlNWYWx1ZSB3aW5kb3dG
b3J3YXJkZWRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoSFRNTEVsZW1lbnQmLCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSk7Ci0gICAgdm9pZCBzZXRXaW5kb3dGb3J3YXJkZWRFdmVudEhhbmRs
ZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiwgSFRNTEVsZW1lbnQm
LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKTsKKy8vIExpa2Ug
dGhlIGZ1bmN0aW9ucyBhYm92ZSwgYnV0IGZvciBhdHRyaWJ1dGVzIHRoYXQgZm9yd2FyZCBldmVu
dCBoYW5kbGVycyB0byB0aGUgd2luZG93IG9iamVjdCByYXRoZXIgdGhhbiBzZXR0aW5nIHRoZW0g
b24gdGhlIHRhcmdldC4KK0pTQzo6SlNWYWx1ZSB3aW5kb3dGb3J3YXJkZWRFdmVudEhhbmRsZXJB
dHRyaWJ1dGUoSFRNTEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Cit2
b2lkIHNldFdpbmRvd0ZvcndhcmRlZEV2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNPYmplY3QmLCBIVE1MRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBKU0M6OkpTVmFsdWUpOwogCi0gICAgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRl
SlNFdmVudExpc3RlbmVyRm9yQWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYgbGlz
dGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpOwotICAgIFJlZjxKU0V2ZW50TGlzdGVuZXI+
IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNP
YmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKK1JlZjxKU0V2ZW50TGlz
dGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKK1JlZjxKU0V2ZW50
TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKTsKIAotICAg
IGlubGluZSBKU0M6OkpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6OmpzRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIC8vIGluaXRpYWxpemVKU0Z1bmN0aW9uIGNhbiB0cmlnZ2VyIGNvZGUgdGhhdCBkZWxl
dGVzIHRoaXMgZXZlbnQgbGlzdGVuZXIKLSAgICAgICAgLy8gYmVmb3JlIHdlJ3JlIGRvbmUuIEl0
IHNob3VsZCBhbHdheXMgcmV0dXJuIDAgaW4gdGhpcyBjYXNlLgotICAgICAgICBSZWY8SlNFdmVu
dExpc3RlbmVyPiBwcm90ZWN0KGNvbnN0X2Nhc3Q8SlNFdmVudExpc3RlbmVyJj4oKnRoaXMpKTsK
LSAgICAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gd3JhcHBlcihtX2lzb2xhdGVkV29y
bGQtPnZtKCksIG1fd3JhcHBlci5nZXQoKSk7Ci0KLSAgICAgICAgaWYgKCFtX2pzRnVuY3Rpb24p
IHsKLSAgICAgICAgICAgIEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uID0gaW5pdGlhbGl6ZUpTRnVu
Y3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgICAgICBKU0M6OkpTT2JqZWN0
KiB3cmFwcGVyID0gbV93cmFwcGVyLmdldCgpOwotICAgICAgICAgICAgaWYgKHdyYXBwZXIpCi0g
ICAgICAgICAgICAgICAgSlNDOjpIZWFwOjpoZWFwKHdyYXBwZXIpLT53cml0ZUJhcnJpZXIod3Jh
cHBlciwgZnVuY3Rpb24pOwotICAgICAgICAgICAgbV9qc0Z1bmN0aW9uID0gSlNDOjpXZWFrPEpT
Qzo6SlNPYmplY3Q+KGZ1bmN0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFZlcmlmeSB0
aGF0IHdlIGhhdmUgYSB2YWxpZCB3cmFwcGVyIHByb3RlY3Rpbmcgb3VyIGZ1bmN0aW9uIGZyb20K
LSAgICAgICAgLy8gZ2FyYmFnZSBjb2xsZWN0aW9uLiBUaGF0IGlzIGV4Y2VwdCBmb3Igd2hlbiB3
ZSdyZSBub3QgaW4gdGhlIG5vcm1hbAotICAgICAgICAvLyB3b3JsZCBhbmQgY2FuIGhhdmUgem9t
YmllIG1fanNGdW5jdGlvbnMuCi0gICAgICAgIEFTU0VSVCghbV9pc29sYXRlZFdvcmxkLT5pc05v
cm1hbCgpIHx8IG1fd3JhcHBlciB8fCAhbV9qc0Z1bmN0aW9uKTsKLQotICAgICAgICAvLyBJZiBt
X3dyYXBwZXIgaXMgMCwgdGhlbiBtX2pzRnVuY3Rpb24gaXMgem9tYmllZCwgYW5kIHNob3VsZCBu
ZXZlciBiZSBhY2Nlc3NlZC4KLSAgICAgICAgaWYgKCFtX3dyYXBwZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gMDsKLQotICAgICAgICAvLyBUcnkgdG8gdmVyaWZ5IHRoYXQgbV9qc0Z1bmN0aW9uIHdh
c24ndCByZWN5Y2xlZC4gKE5vdCBleGFjdCwgc2luY2UgYW4KLSAgICAgICAgLy8gZXZlbnQgbGlz
dGVuZXIgY2FuIGJlIGFsbW9zdCBhbnl0aGluZywgYnV0IHRoaXMgbWFrZXMgdGVzdC13cml0aW5n
IGVhc2llcikuCi0gICAgICAgIEFTU0VSVCghbV9qc0Z1bmN0aW9uIHx8IHN0YXRpY19jYXN0PEpT
Qzo6SlNDZWxsKj4obV9qc0Z1bmN0aW9uLmdldCgpKS0+aXNPYmplY3QoKSk7Ci0KLSAgICAgICAg
cmV0dXJuIG1fanNGdW5jdGlvbi5nZXQoKTsKLSAgICB9CitpbmxpbmUgSlNDOjpKU09iamVjdCog
SlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpIGNvbnN0Cit7CisgICAgLy8gaW5pdGlhbGl6ZUpTRnVuY3Rpb24g
Y2FuIHRyaWdnZXIgY29kZSB0aGF0IGRlbGV0ZXMgdGhpcyBldmVudCBsaXN0ZW5lcgorICAgIC8v
IGJlZm9yZSB3ZSdyZSBkb25lLiBJdCBzaG91bGQgYWx3YXlzIHJldHVybiAwIGluIHRoaXMgY2Fz
ZS4KKyAgICBSZWY8SlNFdmVudExpc3RlbmVyPiBwcm90ZWN0KGNvbnN0X2Nhc3Q8SlNFdmVudExp
c3RlbmVyJj4oKnRoaXMpKTsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiB3cmFwcGVy
KG1faXNvbGF0ZWRXb3JsZC0+dm0oKSwgbV93cmFwcGVyLmdldCgpKTsKIAotICAgIGlubGluZSBS
ZWY8SlNFdmVudExpc3RlbmVyPiBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JSZW1vdmUoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiBsaXN0ZW5lciwgSlNDOjpKU09iamVjdCYg
d3JhcHBlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JB
ZGQoc3RhdGUsIGxpc3RlbmVyLCB3cmFwcGVyKTsKKyAgICBpZiAoIW1fanNGdW5jdGlvbikgewor
ICAgICAgICBKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbiA9IGluaXRpYWxpemVKU0Z1bmN0aW9uKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgICAgICBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyID0g
bV93cmFwcGVyLmdldCgpOworICAgICAgICBpZiAod3JhcHBlcikKKyAgICAgICAgICAgIEpTQzo6
SGVhcDo6aGVhcCh3cmFwcGVyKS0+d3JpdGVCYXJyaWVyKHdyYXBwZXIsIGZ1bmN0aW9uKTsKKyAg
ICAgICAgbV9qc0Z1bmN0aW9uID0gSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+KGZ1bmN0aW9uKTsK
ICAgICB9CiAKKyAgICAvLyBWZXJpZnkgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgd3JhcHBlciBwcm90
ZWN0aW5nIG91ciBmdW5jdGlvbiBmcm9tCisgICAgLy8gZ2FyYmFnZSBjb2xsZWN0aW9uLiBUaGF0
IGlzIGV4Y2VwdCBmb3Igd2hlbiB3ZSdyZSBub3QgaW4gdGhlIG5vcm1hbAorICAgIC8vIHdvcmxk
IGFuZCBjYW4gaGF2ZSB6b21iaWUgbV9qc0Z1bmN0aW9ucy4KKyAgICBBU1NFUlQoIW1faXNvbGF0
ZWRXb3JsZC0+aXNOb3JtYWwoKSB8fCBtX3dyYXBwZXIgfHwgIW1fanNGdW5jdGlvbik7CisKKyAg
ICAvLyBJZiBtX3dyYXBwZXIgaXMgMCwgdGhlbiBtX2pzRnVuY3Rpb24gaXMgem9tYmllZCwgYW5k
IHNob3VsZCBuZXZlciBiZSBhY2Nlc3NlZC4KKyAgICBpZiAoIW1fd3JhcHBlcikKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICAvLyBUcnkgdG8gdmVyaWZ5IHRoYXQgbV9qc0Z1bmN0aW9uIHdhc24n
dCByZWN5Y2xlZC4gKE5vdCBleGFjdCwgc2luY2UgYW4KKyAgICAvLyBldmVudCBsaXN0ZW5lciBj
YW4gYmUgYWxtb3N0IGFueXRoaW5nLCBidXQgdGhpcyBtYWtlcyB0ZXN0LXdyaXRpbmcgZWFzaWVy
KS4KKyAgICBBU1NFUlQoIW1fanNGdW5jdGlvbiB8fCBzdGF0aWNfY2FzdDxKU0M6OkpTQ2VsbCo+
KG1fanNGdW5jdGlvbi5nZXQoKSktPmlzT2JqZWN0KCkpOworCisgICAgcmV0dXJuIG1fanNGdW5j
dGlvbi5nZXQoKTsKK30KKworaW5saW5lIFJlZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZl
bnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplY3Qm
IGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKQoreworICAgIHJldHVybiBjcmVhdGVK
U0V2ZW50TGlzdGVuZXJGb3JBZGQoc3RhdGUsIGxpc3RlbmVyLCB3cmFwcGVyKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSlNFdmVudExpc3RlbmVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRMaXN0ZW5lci5oCmluZGV4IDIyMjA2MDk4Y2QwNTE2NzJmNTdjYWQ2MDVmMzE1
YWY4NTA3MTU2NzYuLjhkMmRhMzJlYmM5MDQwMmRiNGZkYmE2NjBlOGIwMjRhMWUyMzBiNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaApAQCAtMSwyMiArMSwyMiBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoK
LSAqLworKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorKgorKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisqCisqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyoKKyogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyoKKyovCiAK
ICNpZm5kZWYgRXZlbnRMaXN0ZW5lcl9oCiAjZGVmaW5lIEV2ZW50TGlzdGVuZXJfaApAQCAtMjQs
NTAgKzI0LDUwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEpT
QyB7Ci0gICAgY2xhc3MgSlNPYmplY3Q7Ci0gICAgY2xhc3MgU2xvdFZpc2l0b3I7CitjbGFzcyBK
U09iamVjdDsKK2NsYXNzIFNsb3RWaXNpdG9yOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LSAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIGNsYXNzIEV2ZW50OworY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIEV2ZW50OwogCi0gICAgY2xhc3MgRXZl
bnRMaXN0ZW5lciA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50TGlzdGVuZXI+IHsKLSAgICBwdWJs
aWM6Ci0gICAgICAgIGVudW0gVHlwZSB7Ci0gICAgICAgICAgICBKU0V2ZW50TGlzdGVuZXJUeXBl
LCAKLSAgICAgICAgICAgIEltYWdlRXZlbnRMaXN0ZW5lclR5cGUsIAotICAgICAgICAgICAgT2Jq
Q0V2ZW50TGlzdGVuZXJUeXBlLAotICAgICAgICAgICAgQ1BQRXZlbnRMaXN0ZW5lclR5cGUsCi0g
ICAgICAgICAgICBDb25kaXRpb25FdmVudExpc3RlbmVyVHlwZSwKLSAgICAgICAgICAgIEdPYmpl
Y3RFdmVudExpc3RlbmVyVHlwZSwKLSAgICAgICAgICAgIE5hdGl2ZUV2ZW50TGlzdGVuZXJUeXBl
LAotICAgICAgICAgICAgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXJUeXBlLAotICAgICAgICAg
ICAgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lclR5cGUgCi0gICAgICAgIH07CitjbGFz
cyBFdmVudExpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RXZlbnRMaXN0ZW5lcj4geworcHVi
bGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIEpTRXZlbnRMaXN0ZW5lclR5cGUsIAorICAg
ICAgICBJbWFnZUV2ZW50TGlzdGVuZXJUeXBlLCAKKyAgICAgICAgT2JqQ0V2ZW50TGlzdGVuZXJU
eXBlLAorICAgICAgICBDUFBFdmVudExpc3RlbmVyVHlwZSwKKyAgICAgICAgQ29uZGl0aW9uRXZl
bnRMaXN0ZW5lclR5cGUsCisgICAgICAgIEdPYmplY3RFdmVudExpc3RlbmVyVHlwZSwKKyAgICAg
ICAgTmF0aXZlRXZlbnRMaXN0ZW5lclR5cGUsCisgICAgICAgIFNWR1RSZWZUYXJnZXRFdmVudExp
c3RlbmVyVHlwZSwKKyAgICAgICAgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lclR5cGUg
CisgICAgfTsKIAotICAgICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVyKCkgeyB9Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSA9IDA7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZl
bnQqKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVkRnJvbU1hcmt1cCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB+RXZlbnRMaXN0ZW5lcigpIHsgfQor
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVu
dCopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgd2FzQ3JlYXRlZEZyb21NYXJrdXAoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRnVuY3Rpb24o
SlNDOjpTbG90VmlzaXRvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aXNpdEpTRnVuY3Rpb24o
SlNDOjpTbG90VmlzaXRvciYpIHsgfQogCi0gICAgICAgIGJvb2wgaXNBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiB2aXJ0dWFsaXNBdHRyaWJ1dGUoKTsgfQotICAgICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBib29sIGlzQXR0cmlidXRlKCkgY29uc3QgeyBy
ZXR1cm4gdmlydHVhbGlzQXR0cmlidXRlKCk7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KIAotICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgRXZlbnRM
aXN0ZW5lcihUeXBlIHR5cGUpCi0gICAgICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICB7
Ci0gICAgICAgIH0KK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBFdmVudExpc3RlbmVyKFR5cGUg
dHlwZSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICB7CisgICAgfQogCi0gICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCBib29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgICAgIAotICAgICAgICBUeXBlIG1fdHlwZTsKLSAgICB9OworcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmlidXRlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICAKKyAgICBUeXBlIG1fdHlwZTsKK307CiAKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAppbmRleCBmNjQ4MGRhNzJmZGM3ODEyMTQyMjllZmMxMjAxZGE5MzI3MmVj
MzA3Li4wYzFkMmEyMjM5NGNkOTRjOTk1YzNlMjhlZjBhNWIyM2U4OGZkZWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaApAQCAtMSwzMyArMSwzMyBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogICAgICAgICAgIChDKSAyMDAxIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQotICog
ICAgICAgICAgIChDKSAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCisq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisqICAgICAgICAg
ICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQHdlYmtp
dC5vcmcpCisqICAgICAgICAgICAoQykgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0
OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorKgorKi8KIAogI2lmbmRlZiBFdmVu
dFRhcmdldF9oCiAjZGVmaW5lIEV2ZW50VGFyZ2V0X2gKQEAgLTQ0LDE2NyArNDQsMTY3IEBAIGNs
YXNzIEF0b21pY1N0cmluZzsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotICAgIGNs
YXNzIEF1ZGlvTm9kZTsKLSAgICBjbGFzcyBBdWRpb0NvbnRleHQ7Ci0gICAgY2xhc3MgQXVkaW9U
cmFja0xpc3Q7Ci0gICAgY2xhc3MgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7Ci0gICAgY2xh
c3MgRE9NQXBwbGljYXRpb25DYWNoZTsKLSAgICBjbGFzcyBET01XaW5kb3c7Ci0gICAgY2xhc3Mg
RXZlbnQ7Ci0gICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKLSAgICBjbGFzcyBFdmVudFNvdXJjZTsK
LSAgICBjbGFzcyBGaWxlUmVhZGVyOwotICAgIGNsYXNzIEZpbGVXcml0ZXI7Ci0gICAgY2xhc3Mg
SURCRGF0YWJhc2U7Ci0gICAgY2xhc3MgSURCUmVxdWVzdDsKLSAgICBjbGFzcyBJREJUcmFuc2Fj
dGlvbjsKLSAgICBjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOwotICAgIGNsYXNzIE1lZGlhQ29u
dHJvbGxlcjsKLSAgICBjbGFzcyBNZWRpYVN0cmVhbTsKLSAgICBjbGFzcyBNZXNzYWdlUG9ydDsK
LSAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIE5vdGlmaWNhdGlvbjsKLSAgICBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwotICAgIGNsYXNzIFRleHRUcmFjazsKLSAgICBjbGFzcyBUZXh0
VHJhY2tDdWU7Ci0gICAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7Ci0gICAgY2xhc3MgV2ViU29ja2V0
OwotICAgIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKLSAgICBjbGFzcyBXb3JrZXI7Ci0gICAgY2xh
c3MgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RVcGxvYWQ7Ci0KLSAg
ICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi0gICAgc3RydWN0IEZpcmluZ0V2ZW50SXRl
cmF0b3IgewotICAgICAgICBGaXJpbmdFdmVudEl0ZXJhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBzaXplX3QmIGl0ZXJhdG9yLCBzaXplX3QmIHNpemUpCi0gICAgICAgICAgICA6
IGV2ZW50VHlwZShldmVudFR5cGUpCi0gICAgICAgICAgICAsIGl0ZXJhdG9yKGl0ZXJhdG9yKQot
ICAgICAgICAgICAgLCBzaXplKHNpemUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlOwotICAgICAgICBzaXplX3QmIGl0ZXJhdG9y
OwotICAgICAgICBzaXplX3QmIHNpemU7Ci0gICAgfTsKLSAgICB0eXBlZGVmIFZlY3RvcjxGaXJp
bmdFdmVudEl0ZXJhdG9yLCAxPiBGaXJpbmdFdmVudEl0ZXJhdG9yVmVjdG9yOwotCi0gICAgc3Ry
dWN0IEV2ZW50VGFyZ2V0RGF0YSB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50
VGFyZ2V0RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAg
ICAgRXZlbnRUYXJnZXREYXRhKCk7Ci0gICAgICAgIH5FdmVudFRhcmdldERhdGEoKTsKLQotICAg
ICAgICBFdmVudExpc3RlbmVyTWFwIGV2ZW50TGlzdGVuZXJNYXA7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxGaXJpbmdFdmVudEl0ZXJhdG9yVmVjdG9yPiBmaXJpbmdFdmVudEl0ZXJhdG9yczsK
LSAgICB9OwotCi0gICAgZW51bSBFdmVudFRhcmdldEludGVyZmFjZSB7Ci0KLSAgICAjZGVmaW5l
IERPTV9FVkVOVF9JTlRFUkZBQ0VfREVDTEFSRShuYW1lKSBuYW1lIyNFdmVudFRhcmdldEludGVy
ZmFjZVR5cGUsCi0gICAgRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZPUl9FQUNIKERPTV9F
VkVOVF9JTlRFUkZBQ0VfREVDTEFSRSkKLSAgICAjdW5kZWYgRE9NX0VWRU5UX0lOVEVSRkFDRV9E
RUNMQVJFCi0KLSAgICB9OwotCi0gICAgY2xhc3MgRXZlbnRUYXJnZXQgewotICAgIHB1YmxpYzoK
LSAgICAgICAgdm9pZCByZWYoKSB7IHJlZkV2ZW50VGFyZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBk
ZXJlZigpIHsgZGVyZWZFdmVudFRhcmdldCgpOyB9Ci0KLSAgICAgICAgdmlydHVhbCBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0ID0gMDsKLSAgICAgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCk7Ci0gICAgICAgIHZp
cnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNN
ZXNzYWdlUG9ydCgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBhZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+LCBib29sIHVzZUNhcHR1cmUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJv
b2wgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3Rl
bmVycygpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2
ZW50Pik7Ci0gICAgICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhj
ZXB0aW9uQ29kZSYpOyAvLyBET00gQVBJCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4
Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7Ci0KLSAgICAgICAgLy8gVXNlZCBmb3IgbGVnYWN5ICJv
bkV2ZW50IiBhdHRyaWJ1dGUgQVBJcy4KLSAgICAgICAgYm9vbCBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+KTsKLSAgICAgICAgYm9vbCBjbGVhckF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwotICAgICAgICBFdmVudExpc3RlbmVyKiBnZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKLQotICAg
ICAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaGFzRXZl
bnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwotICAgICAgICBib29s
IGhhc0NhcHR1cmluZ0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
KTsKLSAgICAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgZ2V0RXZlbnRMaXN0ZW5lcnMo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwotCi0gICAgICAgIGJvb2wgZmlyZUV2ZW50
TGlzdGVuZXJzKEV2ZW50Kik7Ci0gICAgICAgIGJvb2wgaXNGaXJpbmdFdmVudExpc3RlbmVycygp
OwotCi0gICAgICAgIHZvaWQgdmlzaXRKU0V2ZW50TGlzdGVuZXJzKEpTQzo6U2xvdFZpc2l0b3Im
KTsKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlSlNFdmVudExpc3RlbmVycyhKU0M6OkpTT2JqZWN0
Kik7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgfkV2ZW50VGFyZ2V0KCk7Ci0g
ICAgICAgIAotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRh
KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCkgPSAwOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
ID0gMDsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50Kiwg
RXZlbnRUYXJnZXREYXRhKiwgRXZlbnRMaXN0ZW5lclZlY3RvciYpOwotCi0gICAgICAgIGZyaWVu
ZCBjbGFzcyBFdmVudExpc3RlbmVySXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIGNsYXNzIEV2ZW50
VGFyZ2V0V2l0aElubGluZURhdGEgOiBwdWJsaWMgRXZlbnRUYXJnZXQgewotICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQotICAgICAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7IH0KLSAgICBwcml2YXRlOgotICAgICAgICBF
dmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0gICAgfTsKLQotICAgIGlubGluZSB2
b2lkIEV2ZW50VGFyZ2V0Ojp2aXNpdEpTRXZlbnRMaXN0ZW5lcnMoSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKLSAgICB7Ci0gICAgICAgIEV2ZW50TGlzdGVuZXJJdGVyYXRvciBpdGVyYXRvcih0
aGlzKTsKLSAgICAgICAgd2hpbGUgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gaXRlcmF0b3Iu
bmV4dExpc3RlbmVyKCkpCi0gICAgICAgICAgICBsaXN0ZW5lci0+dmlzaXRKU0Z1bmN0aW9uKHZp
c2l0b3IpOwotICAgIH0KIAotICAgIGlubGluZSBib29sIEV2ZW50VGFyZ2V0Ojppc0ZpcmluZ0V2
ZW50TGlzdGVuZXJzKCkKK2NsYXNzIEF1ZGlvTm9kZTsKK2NsYXNzIEF1ZGlvQ29udGV4dDsKK2Ns
YXNzIEF1ZGlvVHJhY2tMaXN0OworY2xhc3MgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU7Citj
bGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOworY2xhc3MgRE9NV2luZG93OworY2xhc3MgRXZlbnQ7
CitjbGFzcyBFdmVudExpc3RlbmVyOworY2xhc3MgRXZlbnRTb3VyY2U7CitjbGFzcyBGaWxlUmVh
ZGVyOworY2xhc3MgRmlsZVdyaXRlcjsKK2NsYXNzIElEQkRhdGFiYXNlOworY2xhc3MgSURCUmVx
dWVzdDsKK2NsYXNzIElEQlRyYW5zYWN0aW9uOworY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsK
K2NsYXNzIE1lZGlhQ29udHJvbGxlcjsKK2NsYXNzIE1lZGlhU3RyZWFtOworY2xhc3MgTWVzc2Fn
ZVBvcnQ7CitjbGFzcyBOb2RlOworY2xhc3MgTm90aWZpY2F0aW9uOworY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKK2NsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0N1ZTsKK2Ns
YXNzIFZpZGVvVHJhY2tMaXN0OworY2xhc3MgV2ViU29ja2V0OworY2xhc3MgV2ViS2l0TmFtZWRG
bG93OworY2xhc3MgV29ya2VyOworY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CitjbGFzcyBYTUxIdHRw
UmVxdWVzdFVwbG9hZDsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworc3RydWN0IEZp
cmluZ0V2ZW50SXRlcmF0b3IgeworICAgIEZpcmluZ0V2ZW50SXRlcmF0b3IoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIHNpemVfdCYgaXRlcmF0b3IsIHNpemVfdCYgc2l6ZSkKKyAgICAg
ICAgOiBldmVudFR5cGUoZXZlbnRUeXBlKQorICAgICAgICAsIGl0ZXJhdG9yKGl0ZXJhdG9yKQor
ICAgICAgICAsIHNpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9
IGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHJldHVybiBkLT5maXJpbmdFdmVudEl0ZXJhdG9ycyAmJiAhZC0+Zmly
aW5nRXZlbnRJdGVyYXRvcnMtPmlzRW1wdHkoKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBF
dmVudFRhcmdldDo6aGFzRXZlbnRMaXN0ZW5lcnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgRXZl
bnRUYXJnZXREYXRhKiBkID0gY29uc3RfY2FzdDxFdmVudFRhcmdldCo+KHRoaXMpLT5ldmVudFRh
cmdldERhdGEoKTsKLSAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICByZXR1cm4gIWQtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpOwotICAgIH0KKyAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZTsKKyAgICBzaXplX3QmIGl0ZXJhdG9yOwor
ICAgIHNpemVfdCYgc2l6ZTsKK307Cit0eXBlZGVmIFZlY3RvcjxGaXJpbmdFdmVudEl0ZXJhdG9y
LCAxPiBGaXJpbmdFdmVudEl0ZXJhdG9yVmVjdG9yOwogCi0gICAgaW5saW5lIGJvb2wgRXZlbnRU
YXJnZXQ6Omhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQot
ICAgIHsKLSAgICAgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJnZXREYXRhKCk7Ci0g
ICAgICAgIGlmICghZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJu
IGQtPmV2ZW50TGlzdGVuZXJNYXAuY29udGFpbnMoZXZlbnRUeXBlKTsKLSAgICB9CitzdHJ1Y3Qg
RXZlbnRUYXJnZXREYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudFRhcmdldERh
dGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBFdmVudFRhcmdldERh
dGEoKTsKKyAgICB+RXZlbnRUYXJnZXREYXRhKCk7CiAKLSAgICBpbmxpbmUgYm9vbCBFdmVudFRh
cmdldDo6aGFzQ2FwdHVyaW5nRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpCi0gICAgewotICAgICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVudFRhcmdldERh
dGEoKTsKLSAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICByZXR1cm4gZC0+ZXZlbnRMaXN0ZW5lck1hcC5jb250YWluc0NhcHR1cmluZyhldmVudFR5cGUp
OwotICAgIH0KKyAgICBFdmVudExpc3RlbmVyTWFwIGV2ZW50TGlzdGVuZXJNYXA7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEZpcmluZ0V2ZW50SXRlcmF0b3JWZWN0b3I+IGZpcmluZ0V2ZW50SXRlcmF0
b3JzOworfTsKKworZW51bSBFdmVudFRhcmdldEludGVyZmFjZSB7CisKKyNkZWZpbmUgRE9NX0VW
RU5UX0lOVEVSRkFDRV9ERUNMQVJFKG5hbWUpIG5hbWUjI0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZSwKK0RPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChET01fRVZFTlRfSU5URVJG
QUNFX0RFQ0xBUkUpCisjdW5kZWYgRE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNMQVJFCisKK307CisK
K2NsYXNzIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB2b2lkIHJlZigpIHsgcmVmRXZlbnRU
YXJnZXQoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmRXZlbnRUYXJnZXQoKTsgfQorCisg
ICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgpOwor
ICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOworICAgIHZpcnR1YWwgYm9vbCBp
c01lc3NhZ2VQb3J0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
PiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNl
Q2FwdHVyZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7Cisg
ICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIGJv
b2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOyAvLyBE
T00gQVBJCisgICAgdmlydHVhbCB2b2lkIHVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIo
KTsKKworICAgIC8vIFVzZWQgZm9yIGxlZ2FjeSAib25FdmVudCIgYXR0cmlidXRlIEFQSXMuCisg
ICAgYm9vbCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBib29sIGNsZWFyQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisgICAgRXZl
bnRMaXN0ZW5lciogZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSk7CisKKyAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7CisgICAg
Ym9vbCBoYXNFdmVudExpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Cisg
ICAgYm9vbCBoYXNDYXB0dXJpbmdFdmVudExpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSk7CisgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgZ2V0RXZlbnRMaXN0ZW5l
cnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOworCisgICAgYm9vbCBmaXJlRXZlbnRM
aXN0ZW5lcnMoRXZlbnQqKTsKKyAgICBib29sIGlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKTsKKwor
ICAgIHZvaWQgdmlzaXRKU0V2ZW50TGlzdGVuZXJzKEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2
b2lkIGludmFsaWRhdGVKU0V2ZW50TGlzdGVuZXJzKEpTQzo6SlNPYmplY3QqKTsKKworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgfkV2ZW50VGFyZ2V0KCk7CisgICAgCisgICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpID0gMDsKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgPSAwOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpID0gMDsKKyAgICAKKyAgICB2b2lkIGZpcmVFdmVudExpc3RlbmVycyhFdmVu
dCosIEV2ZW50VGFyZ2V0RGF0YSosIEV2ZW50TGlzdGVuZXJWZWN0b3ImKTsKKworICAgIGZyaWVu
ZCBjbGFzcyBFdmVudExpc3RlbmVySXRlcmF0b3I7Cit9OworCitjbGFzcyBFdmVudFRhcmdldFdp
dGhJbmxpbmVEYXRhIDogcHVibGljIEV2ZW50VGFyZ2V0IHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEm
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fZXZlbnRU
YXJnZXREYXRhOyB9Citwcml2YXRlOgorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0
RGF0YTsKK307CisKK2lubGluZSB2b2lkIEV2ZW50VGFyZ2V0Ojp2aXNpdEpTRXZlbnRMaXN0ZW5l
cnMoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBFdmVudExpc3RlbmVySXRlcmF0
b3IgaXRlcmF0b3IodGhpcyk7CisgICAgd2hpbGUgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0g
aXRlcmF0b3IubmV4dExpc3RlbmVyKCkpCisgICAgICAgIGxpc3RlbmVyLT52aXNpdEpTRnVuY3Rp
b24odmlzaXRvcik7Cit9CisKK2lubGluZSBib29sIEV2ZW50VGFyZ2V0Ojppc0ZpcmluZ0V2ZW50
TGlzdGVuZXJzKCkKK3sKKyAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVudFRhcmdldERhdGEo
KTsKKyAgICBpZiAoIWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZC0+Zmly
aW5nRXZlbnRJdGVyYXRvcnMgJiYgIWQtPmZpcmluZ0V2ZW50SXRlcmF0b3JzLT5pc0VtcHR5KCk7
Cit9CisKK2lubGluZSBib29sIEV2ZW50VGFyZ2V0OjpoYXNFdmVudExpc3RlbmVycygpIGNvbnN0
Cit7CisgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gY29uc3RfY2FzdDxFdmVudFRhcmdldCo+KHRo
aXMpLT5ldmVudFRhcmdldERhdGEoKTsKKyAgICBpZiAoIWQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gIWQtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpOworfQorCitpbmxp
bmUgYm9vbCBFdmVudFRhcmdldDo6aGFzRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpCit7CisgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJnZXREYXRh
KCk7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGQtPmV2
ZW50TGlzdGVuZXJNYXAuY29udGFpbnMoZXZlbnRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgRXZl
bnRUYXJnZXQ6Omhhc0NhcHR1cmluZ0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKQoreworICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9IGV2ZW50VGFyZ2V0RGF0YSgp
OworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkLT5ldmVu
dExpc3RlbmVyTWFwLmNvbnRhaW5zQ2FwdHVyaW5nKGV2ZW50VHlwZSk7Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248163</attachid>
            <date>2015-03-07 11:05:37 -0800</date>
            <delta_ts>2015-03-07 17:37:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142440-20150307110515.patch</filename>
            <type>text/plain</type>
            <size>23684</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ4Y2ViOTc4Mjk1ZTNj
ZDcxMjc3YjIxZTFiN2MyZjg5ZDE0YWY2OS4uNTI2ZjQzZjkyZTMyOGMzZDM0NTgyY2UyYmNkZDQ1
YjNiMjc4MzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTAzLTA3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBVbmluZGVudCBFdmVudFRhcmdl
dCwgRXZlbnRMaXN0ZW5lciwgSlNFdmVudExpc3Rlci5oIGZpbGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI0NDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5oOgorICAgICAgICAqIGRvbS9FdmVudExpc3RlbmVyLmg6CisgICAgICAgICogZG9tL0V2
ZW50VGFyZ2V0Lmg6CisgICAgICAgIENoYW5nZSBpbmRlbnRhdGlvbiB0byBtYXRjaCBjb2Rpbmcg
c3R5bGUgcnVsZXMuCisKIDIwMTUtMDMtMDcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dpbl0gSW5jcmVhc2UgVGVzdFdlYktpdEFQSSBUZXN0IENvdmVy
YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCmluZGV4
IGNlM2Y5MjNkNzgyNmE0ZTNiZTUxNzk3NDZjODc1YzczNmU5YTQzOGMuLjU1NGM2YTgwOGQyNmJj
MTgwMDkzZjVkMjM3YWZjNWJjZWE3MTk5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5oCkBAIC0yOSwxMDEgKzI5LDEwMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSAgICBjbGFzcyBFdmVudFRhcmdldDsKLSAgICBjbGFzcyBIVE1MRWxlbWVu
dDsKLSAgICBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKK2NsYXNzIEV2ZW50VGFyZ2V0OworY2xh
c3MgSFRNTEVsZW1lbnQ7CitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKIAotICAgIGNsYXNzIEpT
RXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBSZWY8SlNFdmVudExpc3RlbmVyPiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlz
dGVuZXIsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEpTRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgd3JhcHBlciwgaXNBdHRyaWJ1dGUsIHdvcmxk
KSk7Ci0gICAgICAgIH0KK2NsYXNzIEpTRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3Rl
bmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlKEpT
Qzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBib29sIGlzQXR0
cmlidXRlLCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSlNFdmVudExpc3RlbmVyKGxpc3RlbmVyLCB3cmFwcGVyLCBpc0F0dHJpYnV0
ZSwgd29ybGQpKTsKKyAgICB9CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IEpTRXZlbnRMaXN0ZW5l
ciogY2FzdChjb25zdCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSlNFdmVudExpc3RlbmVyVHlwZQotICAg
ICAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8Y29uc3QgSlNFdmVudExpc3RlbmVyKj4obGlzdGVu
ZXIpCi0gICAgICAgICAgICAgICAgOiAwOwotICAgICAgICB9CisgICAgc3RhdGljIGNvbnN0IEpT
RXZlbnRMaXN0ZW5lciogY2FzdChjb25zdCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikKKyAgICB7
CisgICAgICAgIHJldHVybiBsaXN0ZW5lci0+dHlwZSgpID09IEpTRXZlbnRMaXN0ZW5lclR5cGUK
KyAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8Y29uc3QgSlNFdmVudExpc3RlbmVyKj4obGlzdGVu
ZXIpCisgICAgICAgICAgICA6IDA7CisgICAgfQogCi0gICAgICAgIHZpcnR1YWwgfkpTRXZlbnRM
aXN0ZW5lcigpOworICAgIHZpcnR1YWwgfkpTRXZlbnRMaXN0ZW5lcigpOwogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhl
cikgb3ZlcnJpZGU7CiAKLSAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgZXZlbnQgbGlz
dGVuZXIgd2FzIGNyZWF0ZWQgZm9yIGFuIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlLCBsaWtlICJv
bmxvYWQiIG9yICJvbmNsaWNrIi4KLSAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNBdHRyaWJ1dGU7IH0KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBldmVu
dCBsaXN0ZW5lciB3YXMgY3JlYXRlZCBmb3IgYW4gZXZlbnQgaGFuZGxlciBhdHRyaWJ1dGUsIGxp
a2UgIm9ubG9hZCIgb3IgIm9uY2xpY2siLgorICAgIGJvb2wgaXNBdHRyaWJ1dGUoKSBjb25zdCB7
IHJldHVybiBtX2lzQXR0cmlidXRlOyB9CiAKLSAgICAgICAgSlNDOjpKU09iamVjdCoganNGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7Ci0gICAgICAgIERPTVdyYXBwZXJX
b3JsZCYgaXNvbGF0ZWRXb3JsZCgpIGNvbnN0IHsgcmV0dXJuICptX2lzb2xhdGVkV29ybGQ7IH0K
KyAgICBKU0M6OkpTT2JqZWN0KiBqc0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBj
b25zdDsKKyAgICBET01XcmFwcGVyV29ybGQmIGlzb2xhdGVkV29ybGQoKSBjb25zdCB7IHJldHVy
biAqbV9pc29sYXRlZFdvcmxkOyB9CiAKLSAgICAgICAgSlNDOjpKU09iamVjdCogd3JhcHBlcigp
IGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldFdyYXBw
ZXIoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIpIGNvbnN0IHsgbV93cmFwcGVyID0g
SlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+KHdyYXBwZXIpOyB9CisgICAgSlNDOjpKU09iamVjdCog
d3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0
V3JhcHBlcihKU0M6OlZNJiwgSlNDOjpKU09iamVjdCogd3JhcHBlcikgY29uc3QgeyBtX3dyYXBw
ZXIgPSBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4od3JhcHBlcik7IH0KIAotICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCogaW5pdGlhbGl6ZUpTRnVuY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRK
U0Z1bmN0aW9uKEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBi
b29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpTQzo6
U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmli
dXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEpTRXZlbnRM
aXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlvbiwgSlNDOjpKU09iamVjdCogd3JhcHBlciwg
Ym9vbCBpc0F0dHJpYnV0ZSwgRE9NV3JhcHBlcldvcmxkJik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsK
K3Byb3RlY3RlZDoKKyAgICBKU0V2ZW50TGlzdGVuZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24s
IEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIGJvb2wgaXNBdHRyaWJ1dGUsIERPTVdyYXBwZXJXb3Js
ZCYpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgRXZlbnQqKSBvdmVycmlkZTsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIG11dGFibGUgSlND
OjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fanNGdW5jdGlvbjsKLSAgICAgICAgbXV0YWJsZSBKU0M6
OldlYWs8SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOworcHJpdmF0ZToKKyAgICBtdXRhYmxlIEpT
Qzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX2pzRnVuY3Rpb247CisgICAgbXV0YWJsZSBKU0M6Oldl
YWs8SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOwogCi0gICAgICAgIGJvb2wgbV9pc0F0dHJpYnV0
ZTsKLSAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxkOwotICAg
IH07CisgICAgYm9vbCBtX2lzQXR0cmlidXRlOworICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+
IG1faXNvbGF0ZWRXb3JsZDsKK307CiAKLSAgICAvLyBGb3IgIm9ueHh4IiBhdHRyaWJ1dGVzIHRo
YXQgYXV0b21hdGljYWxseSBzZXQgdXAgSmF2YVNjcmlwdCBldmVudCBsaXN0ZW5lcnMuCi0gICAg
SlNDOjpKU1ZhbHVlIGV2ZW50SGFuZGxlckF0dHJpYnV0ZShFdmVudFRhcmdldCYsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKLSAgICB2b2lkIHNldEV2ZW50SGFuZGxlckF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUpOworLy8gRm9yICJvbnh4eCIgYXR0
cmlidXRlcyB0aGF0IGF1dG9tYXRpY2FsbHkgc2V0IHVwIEphdmFTY3JpcHQgZXZlbnQgbGlzdGVu
ZXJzLgorSlNDOjpKU1ZhbHVlIGV2ZW50SGFuZGxlckF0dHJpYnV0ZShFdmVudFRhcmdldCYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKK3ZvaWQgc2V0RXZlbnRIYW5kbGVyQXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIEV2ZW50VGFyZ2V0JiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CiAKLSAgICAvLyBMaWtlIHRo
ZSBmdW5jdGlvbnMgYWJvdmUsIGJ1dCBmb3IgYXR0cmlidXRlcyB0aGF0IGZvcndhcmQgZXZlbnQg
aGFuZGxlcnMgdG8gdGhlIHdpbmRvdyBvYmplY3QgcmF0aGVyIHRoYW4gc2V0dGluZyB0aGVtIG9u
IHRoZSB0YXJnZXQuCi0gICAgSlNDOjpKU1ZhbHVlIHdpbmRvd0ZvcndhcmRlZEV2ZW50SGFuZGxl
ckF0dHJpYnV0ZShIVE1MRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsK
LSAgICB2b2lkIHNldFdpbmRvd0ZvcndhcmRlZEV2ZW50SGFuZGxlckF0dHJpYnV0ZShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmLCBIVE1MRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUpOworLy8gTGlrZSB0aGUgZnVuY3Rpb25zIGFib3Zl
LCBidXQgZm9yIGF0dHJpYnV0ZXMgdGhhdCBmb3J3YXJkIGV2ZW50IGhhbmRsZXJzIHRvIHRoZSB3
aW5kb3cgb2JqZWN0IHJhdGhlciB0aGFuIHNldHRpbmcgdGhlbSBvbiB0aGUgdGFyZ2V0LgorSlND
OjpKU1ZhbHVlIHdpbmRvd0ZvcndhcmRlZEV2ZW50SGFuZGxlckF0dHJpYnV0ZShIVE1MRWxlbWVu
dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKK3ZvaWQgc2V0V2luZG93Rm9yd2Fy
ZGVkRXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYs
IEhUTUxFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1
ZSk7CiAKLSAgICBSZWY8SlNFdmVudExpc3RlbmVyPiBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JB
ZGQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiBsaXN0ZW5lciwgSlNDOjpKU09iamVj
dCYgd3JhcHBlcik7Ci0gICAgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3Rl
bmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpT
Qzo6SlNPYmplY3QmIHdyYXBwZXIpOworUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVu
dExpc3RlbmVyRm9yQWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIs
IEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpOworUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNF
dmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYgbGlz
dGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpOwogCi0gICAgaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gaW5pdGlhbGl6
ZUpTRnVuY3Rpb24gY2FuIHRyaWdnZXIgY29kZSB0aGF0IGRlbGV0ZXMgdGhpcyBldmVudCBsaXN0
ZW5lcgotICAgICAgICAvLyBiZWZvcmUgd2UncmUgZG9uZS4gSXQgc2hvdWxkIGFsd2F5cyByZXR1
cm4gMCBpbiB0aGlzIGNhc2UuCi0gICAgICAgIFJlZjxKU0V2ZW50TGlzdGVuZXI+IHByb3RlY3Qo
Y29uc3RfY2FzdDxKU0V2ZW50TGlzdGVuZXImPigqdGhpcykpOwotICAgICAgICBKU0M6OlN0cm9u
ZzxKU0M6OkpTT2JqZWN0PiB3cmFwcGVyKG1faXNvbGF0ZWRXb3JsZC0+dm0oKSwgbV93cmFwcGVy
LmdldCgpKTsKLQotICAgICAgICBpZiAoIW1fanNGdW5jdGlvbikgewotICAgICAgICAgICAgSlND
OjpKU09iamVjdCogZnVuY3Rpb24gPSBpbml0aWFsaXplSlNGdW5jdGlvbihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KTsKLSAgICAgICAgICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIgPSBtX3dyYXBw
ZXIuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAod3JhcHBlcikKLSAgICAgICAgICAgICAgICBKU0M6
OkhlYXA6OmhlYXAod3JhcHBlciktPndyaXRlQmFycmllcih3cmFwcGVyLCBmdW5jdGlvbik7Ci0g
ICAgICAgICAgICBtX2pzRnVuY3Rpb24gPSBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4oZnVuY3Rp
b24pOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVmVyaWZ5IHRoYXQgd2UgaGF2ZSBhIHZhbGlk
IHdyYXBwZXIgcHJvdGVjdGluZyBvdXIgZnVuY3Rpb24gZnJvbQotICAgICAgICAvLyBnYXJiYWdl
IGNvbGxlY3Rpb24uIFRoYXQgaXMgZXhjZXB0IGZvciB3aGVuIHdlJ3JlIG5vdCBpbiB0aGUgbm9y
bWFsCi0gICAgICAgIC8vIHdvcmxkIGFuZCBjYW4gaGF2ZSB6b21iaWUgbV9qc0Z1bmN0aW9ucy4K
LSAgICAgICAgQVNTRVJUKCFtX2lzb2xhdGVkV29ybGQtPmlzTm9ybWFsKCkgfHwgbV93cmFwcGVy
IHx8ICFtX2pzRnVuY3Rpb24pOwotCi0gICAgICAgIC8vIElmIG1fd3JhcHBlciBpcyAwLCB0aGVu
IG1fanNGdW5jdGlvbiBpcyB6b21iaWVkLCBhbmQgc2hvdWxkIG5ldmVyIGJlIGFjY2Vzc2VkLgot
ICAgICAgICBpZiAoIW1fd3JhcHBlcikKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAg
IC8vIFRyeSB0byB2ZXJpZnkgdGhhdCBtX2pzRnVuY3Rpb24gd2Fzbid0IHJlY3ljbGVkLiAoTm90
IGV4YWN0LCBzaW5jZSBhbgotICAgICAgICAvLyBldmVudCBsaXN0ZW5lciBjYW4gYmUgYWxtb3N0
IGFueXRoaW5nLCBidXQgdGhpcyBtYWtlcyB0ZXN0LXdyaXRpbmcgZWFzaWVyKS4KLSAgICAgICAg
QVNTRVJUKCFtX2pzRnVuY3Rpb24gfHwgc3RhdGljX2Nhc3Q8SlNDOjpKU0NlbGwqPihtX2pzRnVu
Y3Rpb24uZ2V0KCkpLT5pc09iamVjdCgpKTsKLQotICAgICAgICByZXR1cm4gbV9qc0Z1bmN0aW9u
LmdldCgpOwotICAgIH0KK2lubGluZSBKU0M6OkpTT2JqZWN0KiBKU0V2ZW50TGlzdGVuZXI6Ompz
RnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkg
Y29uc3QKK3sKKyAgICAvLyBpbml0aWFsaXplSlNGdW5jdGlvbiBjYW4gdHJpZ2dlciBjb2RlIHRo
YXQgZGVsZXRlcyB0aGlzIGV2ZW50IGxpc3RlbmVyCisgICAgLy8gYmVmb3JlIHdlJ3JlIGRvbmUu
IEl0IHNob3VsZCBhbHdheXMgcmV0dXJuIDAgaW4gdGhpcyBjYXNlLgorICAgIFJlZjxKU0V2ZW50
TGlzdGVuZXI+IHByb3RlY3QoY29uc3RfY2FzdDxKU0V2ZW50TGlzdGVuZXImPigqdGhpcykpOwor
ICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IHdyYXBwZXIobV9pc29sYXRlZFdvcmxkLT52
bSgpLCBtX3dyYXBwZXIuZ2V0KCkpOwogCi0gICAgaW5saW5lIFJlZjxKU0V2ZW50TGlzdGVuZXI+
IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpT
Qzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3cmFwcGVyKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFkZChzdGF0ZSwgbGlzdGVuZXIs
IHdyYXBwZXIpOworICAgIGlmICghbV9qc0Z1bmN0aW9uKSB7CisgICAgICAgIEpTQzo6SlNPYmpl
Y3QqIGZ1bmN0aW9uID0gaW5pdGlhbGl6ZUpTRnVuY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk7CisgICAgICAgIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIgPSBtX3dyYXBwZXIuZ2V0KCk7Cisg
ICAgICAgIGlmICh3cmFwcGVyKQorICAgICAgICAgICAgSlNDOjpIZWFwOjpoZWFwKHdyYXBwZXIp
LT53cml0ZUJhcnJpZXIod3JhcHBlciwgZnVuY3Rpb24pOworICAgICAgICBtX2pzRnVuY3Rpb24g
PSBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4oZnVuY3Rpb24pOwogICAgIH0KIAorICAgIC8vIFZl
cmlmeSB0aGF0IHdlIGhhdmUgYSB2YWxpZCB3cmFwcGVyIHByb3RlY3Rpbmcgb3VyIGZ1bmN0aW9u
IGZyb20KKyAgICAvLyBnYXJiYWdlIGNvbGxlY3Rpb24uIFRoYXQgaXMgZXhjZXB0IGZvciB3aGVu
IHdlJ3JlIG5vdCBpbiB0aGUgbm9ybWFsCisgICAgLy8gd29ybGQgYW5kIGNhbiBoYXZlIHpvbWJp
ZSBtX2pzRnVuY3Rpb25zLgorICAgIEFTU0VSVCghbV9pc29sYXRlZFdvcmxkLT5pc05vcm1hbCgp
IHx8IG1fd3JhcHBlciB8fCAhbV9qc0Z1bmN0aW9uKTsKKworICAgIC8vIElmIG1fd3JhcHBlciBp
cyAwLCB0aGVuIG1fanNGdW5jdGlvbiBpcyB6b21iaWVkLCBhbmQgc2hvdWxkIG5ldmVyIGJlIGFj
Y2Vzc2VkLgorICAgIGlmICghbV93cmFwcGVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8v
IFRyeSB0byB2ZXJpZnkgdGhhdCBtX2pzRnVuY3Rpb24gd2Fzbid0IHJlY3ljbGVkLiAoTm90IGV4
YWN0LCBzaW5jZSBhbgorICAgIC8vIGV2ZW50IGxpc3RlbmVyIGNhbiBiZSBhbG1vc3QgYW55dGhp
bmcsIGJ1dCB0aGlzIG1ha2VzIHRlc3Qtd3JpdGluZyBlYXNpZXIpLgorICAgIEFTU0VSVCghbV9q
c0Z1bmN0aW9uIHx8IHN0YXRpY19jYXN0PEpTQzo6SlNDZWxsKj4obV9qc0Z1bmN0aW9uLmdldCgp
KS0+aXNPYmplY3QoKSk7CisKKyAgICByZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOworfQorCitp
bmxpbmUgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yUmVtb3Zl
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNP
YmplY3QmIHdyYXBwZXIpCit7CisgICAgcmV0dXJuIGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvckFk
ZChzdGF0ZSwgbGlzdGVuZXIsIHdyYXBwZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBKU0V2ZW50TGlzdGVuZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVy
LmgKaW5kZXggMjIyMDYwOThjZDA1MTY3MmY1N2NhZDYwNWYzMTVhZjg1MDcxNTY3Ni4uYmI0Zjlm
MDJkZWFkNWVkMzEzY2U3NjQwNmE2ZDE5ZWQ4Yzg2ZjZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRM
aXN0ZW5lci5oCkBAIC0yNCw1MCArMjQsNTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKLSAgICBjbGFzcyBKU09iamVjdDsKLSAgICBjbGFzcyBTbG90
VmlzaXRvcjsKK2NsYXNzIEpTT2JqZWN0OworY2xhc3MgU2xvdFZpc2l0b3I7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAg
Y2xhc3MgRXZlbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgRXZlbnQ7
CiAKLSAgICBjbGFzcyBFdmVudExpc3RlbmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RXZlbnRMaXN0
ZW5lcj4gewotICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIHsKLSAgICAgICAgICAgIEpT
RXZlbnRMaXN0ZW5lclR5cGUsIAotICAgICAgICAgICAgSW1hZ2VFdmVudExpc3RlbmVyVHlwZSwg
Ci0gICAgICAgICAgICBPYmpDRXZlbnRMaXN0ZW5lclR5cGUsCi0gICAgICAgICAgICBDUFBFdmVu
dExpc3RlbmVyVHlwZSwKLSAgICAgICAgICAgIENvbmRpdGlvbkV2ZW50TGlzdGVuZXJUeXBlLAot
ICAgICAgICAgICAgR09iamVjdEV2ZW50TGlzdGVuZXJUeXBlLAotICAgICAgICAgICAgTmF0aXZl
RXZlbnRMaXN0ZW5lclR5cGUsCi0gICAgICAgICAgICBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5l
clR5cGUsCi0gICAgICAgICAgICBNZWRpYUNvbnRyb2xzQXBwbGVFdmVudExpc3RlbmVyVHlwZSAK
LSAgICAgICAgfTsKK2NsYXNzIEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxFdmVu
dExpc3RlbmVyPiB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgSlNFdmVudExp
c3RlbmVyVHlwZSwgCisgICAgICAgIEltYWdlRXZlbnRMaXN0ZW5lclR5cGUsIAorICAgICAgICBP
YmpDRXZlbnRMaXN0ZW5lclR5cGUsCisgICAgICAgIENQUEV2ZW50TGlzdGVuZXJUeXBlLAorICAg
ICAgICBDb25kaXRpb25FdmVudExpc3RlbmVyVHlwZSwKKyAgICAgICAgR09iamVjdEV2ZW50TGlz
dGVuZXJUeXBlLAorICAgICAgICBOYXRpdmVFdmVudExpc3RlbmVyVHlwZSwKKyAgICAgICAgU1ZH
VFJlZlRhcmdldEV2ZW50TGlzdGVuZXJUeXBlLAorICAgICAgICBNZWRpYUNvbnRyb2xzQXBwbGVF
dmVudExpc3RlbmVyVHlwZSAKKyAgICB9OwogCi0gICAgICAgIHZpcnR1YWwgfkV2ZW50TGlzdGVu
ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0
ZW5lciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBFdmVudCopID0gMDsKLSAgICAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0
ZWRGcm9tTWFya3VwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIH5FdmVu
dExpc3RlbmVyKCkgeyB9CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRM
aXN0ZW5lciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEV2ZW50KikgPSAwOworICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVkRnJv
bU1hcmt1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IHZpc2l0SlNGdW5jdGlvbihKU0M6OlNsb3RWaXNpdG9yJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHZpc2l0SlNGdW5jdGlvbihKU0M6OlNsb3RWaXNpdG9yJikgeyB9CiAKLSAgICAgICAgYm9vbCBp
c0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIHZpcnR1YWxpc0F0dHJpYnV0ZSgpOyB9Ci0gICAg
ICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgaXNBdHRy
aWJ1dGUoKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsaXNBdHRyaWJ1dGUoKTsgfQorICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0gICAgcHJvdGVjdGVkOgotICAgICAg
ICBleHBsaWNpdCBFdmVudExpc3RlbmVyKFR5cGUgdHlwZSkKLSAgICAgICAgICAgIDogbV90eXBl
KHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgfQorcHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IEV2
ZW50TGlzdGVuZXIoVHlwZSB0eXBlKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgIHsKKyAg
ICB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgdmlydHVhbGlzQXR0cmli
dXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgCi0gICAgICAgIFR5cGUgbV90
eXBlOwotICAgIH07Citwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCB2aXJ0dWFsaXNBdHRyaWJ1
dGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAorICAgIFR5cGUgbV90eXBlOworfTsK
IAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGY2NDgwZGE3MmZkYzc4MTIxNDIy
OWVmYzEyMDFkYTkzMjcyZWMzMDcuLjg2ZmUzYmM3Yzg2OGI1NTgyY2Y1ODk0ZmU5MGYwNmFkOWVk
YzA5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0yNSw4ICsyNSw3IEBACiAgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIEV2ZW50VGFyZ2V0X2gKQEAgLTQ0LDE2NyAr
NDMsMTY3IEBAIGNsYXNzIEF0b21pY1N0cmluZzsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAotICAgIGNsYXNzIEF1ZGlvTm9kZTsKLSAgICBjbGFzcyBBdWRpb0NvbnRleHQ7Ci0gICAg
Y2xhc3MgQXVkaW9UcmFja0xpc3Q7Ci0gICAgY2xhc3MgRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGU7Ci0gICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNoZTsKLSAgICBjbGFzcyBET01XaW5kb3c7
Ci0gICAgY2xhc3MgRXZlbnQ7Ci0gICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKLSAgICBjbGFzcyBF
dmVudFNvdXJjZTsKLSAgICBjbGFzcyBGaWxlUmVhZGVyOwotICAgIGNsYXNzIEZpbGVXcml0ZXI7
Ci0gICAgY2xhc3MgSURCRGF0YWJhc2U7Ci0gICAgY2xhc3MgSURCUmVxdWVzdDsKLSAgICBjbGFz
cyBJREJUcmFuc2FjdGlvbjsKLSAgICBjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOwotICAgIGNs
YXNzIE1lZGlhQ29udHJvbGxlcjsKLSAgICBjbGFzcyBNZWRpYVN0cmVhbTsKLSAgICBjbGFzcyBN
ZXNzYWdlUG9ydDsKLSAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNzIE5vdGlmaWNhdGlvbjsKLSAg
ICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIGNsYXNzIFRleHRUcmFjazsKLSAg
ICBjbGFzcyBUZXh0VHJhY2tDdWU7Ci0gICAgY2xhc3MgVmlkZW9UcmFja0xpc3Q7Ci0gICAgY2xh
c3MgV2ViU29ja2V0OwotICAgIGNsYXNzIFdlYktpdE5hbWVkRmxvdzsKLSAgICBjbGFzcyBXb3Jr
ZXI7Ci0gICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgY2xhc3MgWE1MSHR0cFJlcXVlc3RV
cGxvYWQ7Ci0KLSAgICB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCi0gICAgc3RydWN0IEZp
cmluZ0V2ZW50SXRlcmF0b3IgewotICAgICAgICBGaXJpbmdFdmVudEl0ZXJhdG9yKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBzaXplX3QmIGl0ZXJhdG9yLCBzaXplX3QmIHNpemUpCi0g
ICAgICAgICAgICA6IGV2ZW50VHlwZShldmVudFR5cGUpCi0gICAgICAgICAgICAsIGl0ZXJhdG9y
KGl0ZXJhdG9yKQotICAgICAgICAgICAgLCBzaXplKHNpemUpCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlOwotICAgICAgICBzaXpl
X3QmIGl0ZXJhdG9yOwotICAgICAgICBzaXplX3QmIHNpemU7Ci0gICAgfTsKLSAgICB0eXBlZGVm
IFZlY3RvcjxGaXJpbmdFdmVudEl0ZXJhdG9yLCAxPiBGaXJpbmdFdmVudEl0ZXJhdG9yVmVjdG9y
OwotCi0gICAgc3RydWN0IEV2ZW50VGFyZ2V0RGF0YSB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEV2ZW50VGFyZ2V0RGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1
YmxpYzoKLSAgICAgICAgRXZlbnRUYXJnZXREYXRhKCk7Ci0gICAgICAgIH5FdmVudFRhcmdldERh
dGEoKTsKLQotICAgICAgICBFdmVudExpc3RlbmVyTWFwIGV2ZW50TGlzdGVuZXJNYXA7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxGaXJpbmdFdmVudEl0ZXJhdG9yVmVjdG9yPiBmaXJpbmdFdmVu
dEl0ZXJhdG9yczsKLSAgICB9OwotCi0gICAgZW51bSBFdmVudFRhcmdldEludGVyZmFjZSB7Ci0K
LSAgICAjZGVmaW5lIERPTV9FVkVOVF9JTlRFUkZBQ0VfREVDTEFSRShuYW1lKSBuYW1lIyNFdmVu
dFRhcmdldEludGVyZmFjZVR5cGUsCi0gICAgRE9NX0VWRU5UX1RBUkdFVF9JTlRFUkZBQ0VTX0ZP
Ul9FQUNIKERPTV9FVkVOVF9JTlRFUkZBQ0VfREVDTEFSRSkKLSAgICAjdW5kZWYgRE9NX0VWRU5U
X0lOVEVSRkFDRV9ERUNMQVJFCi0KLSAgICB9OwotCi0gICAgY2xhc3MgRXZlbnRUYXJnZXQgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgdm9pZCByZWYoKSB7IHJlZkV2ZW50VGFyZ2V0KCk7IH0KLSAg
ICAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZFdmVudFRhcmdldCgpOyB9Ci0KLSAgICAgICAgdmly
dHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0ID0g
MDsKLSAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCk7
Ci0gICAgICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOwotICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNNZXNzYWdlUG9ydCgpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBh
ZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRM
aXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVB
bGxFdmVudExpc3RlbmVycygpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50Pik7Ci0gICAgICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50PiwgRXhjZXB0aW9uQ29kZSYpOyAvLyBET00gQVBJCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCB1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7Ci0KLSAgICAgICAgLy8gVXNlZCBm
b3IgbGVnYWN5ICJvbkV2ZW50IiBhdHRyaWJ1dGUgQVBJcy4KLSAgICAgICAgYm9vbCBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+KTsKLSAgICAgICAgYm9vbCBjbGVhckF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwotICAgICAgICBFdmVudExpc3Rl
bmVyKiBnZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKTsKLQotICAgICAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJzKCkgY29uc3Q7Ci0gICAgICAg
IGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwot
ICAgICAgICBib29sIGhhc0NhcHR1cmluZ0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlKTsKLSAgICAgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgZ2V0RXZl
bnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOwotCi0gICAgICAgIGJv
b2wgZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50Kik7Ci0gICAgICAgIGJvb2wgaXNGaXJpbmdFdmVu
dExpc3RlbmVycygpOwotCi0gICAgICAgIHZvaWQgdmlzaXRKU0V2ZW50TGlzdGVuZXJzKEpTQzo6
U2xvdFZpc2l0b3ImKTsKLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlSlNFdmVudExpc3RlbmVycyhK
U0M6OkpTT2JqZWN0Kik7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgfkV2ZW50
VGFyZ2V0KCk7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZl
bnRUYXJnZXREYXRhKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkgPSAwOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpID0gMDsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgZmlyZUV2ZW50TGlzdGVu
ZXJzKEV2ZW50KiwgRXZlbnRUYXJnZXREYXRhKiwgRXZlbnRMaXN0ZW5lclZlY3RvciYpOwotCi0g
ICAgICAgIGZyaWVuZCBjbGFzcyBFdmVudExpc3RlbmVySXRlcmF0b3I7Ci0gICAgfTsKLQotICAg
IGNsYXNzIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEgOiBwdWJsaWMgRXZlbnRUYXJnZXQgewot
ICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFy
Z2V0RGF0YSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQot
ICAgICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9ldmVudFRhcmdldERhdGE7IH0KLSAgICBwcml2YXRl
OgotICAgICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0gICAgfTsKLQot
ICAgIGlubGluZSB2b2lkIEV2ZW50VGFyZ2V0Ojp2aXNpdEpTRXZlbnRMaXN0ZW5lcnMoSlNDOjpT
bG90VmlzaXRvciYgdmlzaXRvcikKLSAgICB7Ci0gICAgICAgIEV2ZW50TGlzdGVuZXJJdGVyYXRv
ciBpdGVyYXRvcih0aGlzKTsKLSAgICAgICAgd2hpbGUgKEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVy
ID0gaXRlcmF0b3IubmV4dExpc3RlbmVyKCkpCi0gICAgICAgICAgICBsaXN0ZW5lci0+dmlzaXRK
U0Z1bmN0aW9uKHZpc2l0b3IpOwotICAgIH0KIAotICAgIGlubGluZSBib29sIEV2ZW50VGFyZ2V0
Ojppc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkKK2NsYXNzIEF1ZGlvTm9kZTsKK2NsYXNzIEF1ZGlv
Q29udGV4dDsKK2NsYXNzIEF1ZGlvVHJhY2tMaXN0OworY2xhc3MgRGVkaWNhdGVkV29ya2VyR2xv
YmFsU2NvcGU7CitjbGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOworY2xhc3MgRE9NV2luZG93Owor
Y2xhc3MgRXZlbnQ7CitjbGFzcyBFdmVudExpc3RlbmVyOworY2xhc3MgRXZlbnRTb3VyY2U7Citj
bGFzcyBGaWxlUmVhZGVyOworY2xhc3MgRmlsZVdyaXRlcjsKK2NsYXNzIElEQkRhdGFiYXNlOwor
Y2xhc3MgSURCUmVxdWVzdDsKK2NsYXNzIElEQlRyYW5zYWN0aW9uOworY2xhc3MgU2NyaXB0UHJv
Y2Vzc29yTm9kZTsKK2NsYXNzIE1lZGlhQ29udHJvbGxlcjsKK2NsYXNzIE1lZGlhU3RyZWFtOwor
Y2xhc3MgTWVzc2FnZVBvcnQ7CitjbGFzcyBOb2RlOworY2xhc3MgTm90aWZpY2F0aW9uOworY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRU
cmFja0N1ZTsKK2NsYXNzIFZpZGVvVHJhY2tMaXN0OworY2xhc3MgV2ViU29ja2V0OworY2xhc3Mg
V2ViS2l0TmFtZWRGbG93OworY2xhc3MgV29ya2VyOworY2xhc3MgWE1MSHR0cFJlcXVlc3Q7Citj
bGFzcyBYTUxIdHRwUmVxdWVzdFVwbG9hZDsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsK
Kworc3RydWN0IEZpcmluZ0V2ZW50SXRlcmF0b3IgeworICAgIEZpcmluZ0V2ZW50SXRlcmF0b3Io
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIHNpemVfdCYgaXRlcmF0b3IsIHNpemVfdCYg
c2l6ZSkKKyAgICAgICAgOiBldmVudFR5cGUoZXZlbnRUeXBlKQorICAgICAgICAsIGl0ZXJhdG9y
KGl0ZXJhdG9yKQorICAgICAgICAsIHNpemUoc2l6ZSkKICAgICB7Ci0gICAgICAgIEV2ZW50VGFy
Z2V0RGF0YSogZCA9IGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgICAgICBpZiAoIWQpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBkLT5maXJpbmdFdmVudEl0ZXJhdG9y
cyAmJiAhZC0+ZmlyaW5nRXZlbnRJdGVyYXRvcnMtPmlzRW1wdHkoKTsKICAgICB9CiAKLSAgICBp
bmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aGFzRXZlbnRMaXN0ZW5lcnMoKSBjb25zdAotICAgIHsK
LSAgICAgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gY29uc3RfY2FzdDxFdmVudFRhcmdldCo+KHRo
aXMpLT5ldmVudFRhcmdldERhdGEoKTsKLSAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gIWQtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgp
OwotICAgIH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZTsKKyAgICBzaXplX3Qm
IGl0ZXJhdG9yOworICAgIHNpemVfdCYgc2l6ZTsKK307Cit0eXBlZGVmIFZlY3RvcjxGaXJpbmdF
dmVudEl0ZXJhdG9yLCAxPiBGaXJpbmdFdmVudEl0ZXJhdG9yVmVjdG9yOwogCi0gICAgaW5saW5l
IGJvb2wgRXZlbnRUYXJnZXQ6Omhhc0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKQotICAgIHsKLSAgICAgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZlbnRUYXJn
ZXREYXRhKCk7Ci0gICAgICAgIGlmICghZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgcmV0dXJuIGQtPmV2ZW50TGlzdGVuZXJNYXAuY29udGFpbnMoZXZlbnRUeXBlKTsKLSAg
ICB9CitzdHJ1Y3QgRXZlbnRUYXJnZXREYXRhIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShF
dmVudFRhcmdldERhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBF
dmVudFRhcmdldERhdGEoKTsKKyAgICB+RXZlbnRUYXJnZXREYXRhKCk7CiAKLSAgICBpbmxpbmUg
Ym9vbCBFdmVudFRhcmdldDo6aGFzQ2FwdHVyaW5nRXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUpCi0gICAgewotICAgICAgICBFdmVudFRhcmdldERhdGEqIGQgPSBl
dmVudFRhcmdldERhdGEoKTsKLSAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICByZXR1cm4gZC0+ZXZlbnRMaXN0ZW5lck1hcC5jb250YWluc0NhcHR1cmlu
ZyhldmVudFR5cGUpOwotICAgIH0KKyAgICBFdmVudExpc3RlbmVyTWFwIGV2ZW50TGlzdGVuZXJN
YXA7CisgICAgc3RkOjp1bmlxdWVfcHRyPEZpcmluZ0V2ZW50SXRlcmF0b3JWZWN0b3I+IGZpcmlu
Z0V2ZW50SXRlcmF0b3JzOworfTsKKworZW51bSBFdmVudFRhcmdldEludGVyZmFjZSB7CisKKyNk
ZWZpbmUgRE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNMQVJFKG5hbWUpIG5hbWUjI0V2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZSwKK0RPTV9FVkVOVF9UQVJHRVRfSU5URVJGQUNFU19GT1JfRUFDSChET01f
RVZFTlRfSU5URVJGQUNFX0RFQ0xBUkUpCisjdW5kZWYgRE9NX0VWRU5UX0lOVEVSRkFDRV9ERUNM
QVJFCisKK307CisKK2NsYXNzIEV2ZW50VGFyZ2V0IHsKK3B1YmxpYzoKKyAgICB2b2lkIHJlZigp
IHsgcmVmRXZlbnRUYXJnZXQoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmRXZlbnRUYXJn
ZXQoKTsgfQorCisgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIE5vZGUq
IHRvTm9kZSgpOworICAgIHZpcnR1YWwgRE9NV2luZG93KiB0b0RPTVdpbmRvdygpOworICAgIHZp
cnR1YWwgYm9vbCBpc01lc3NhZ2VQb3J0KCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgYWRk
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiwgYm9vbCB1c2VDYXB0dXJlKTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVtb3Zl
RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciosIGJvb2wgdXNlQ2FwdHVyZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlz
dGVuZXJzKCk7CisgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pOworICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0aW9u
Q29kZSYpOyAvLyBET00gQVBJCisgICAgdmlydHVhbCB2b2lkIHVuY2F1Z2h0RXhjZXB0aW9uSW5F
dmVudEhhbmRsZXIoKTsKKworICAgIC8vIFVzZWQgZm9yIGxlZ2FjeSAib25FdmVudCIgYXR0cmli
dXRlIEFQSXMuCisgICAgYm9vbCBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBib29s
IGNsZWFyQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSk7CisgICAgRXZlbnRMaXN0ZW5lciogZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisKKyAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJzKCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNFdmVudExpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSk7CisgICAgYm9vbCBoYXNDYXB0dXJpbmdFdmVudExpc3RlbmVycyhjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSk7CisgICAgY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgZ2V0
RXZlbnRMaXN0ZW5lcnMoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpOworCisgICAgYm9v
bCBmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQqKTsKKyAgICBib29sIGlzRmlyaW5nRXZlbnRMaXN0
ZW5lcnMoKTsKKworICAgIHZvaWQgdmlzaXRKU0V2ZW50TGlzdGVuZXJzKEpTQzo6U2xvdFZpc2l0
b3ImKTsKKyAgICB2b2lkIGludmFsaWRhdGVKU0V2ZW50TGlzdGVuZXJzKEpTQzo6SlNPYmplY3Qq
KTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkV2ZW50VGFyZ2V0KCk7CisgICAgCisgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpID0gMDsKKyAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgPSAwOworCitwcml2
YXRlOgorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpID0gMDsKKyAgICAKKyAgICB2b2lkIGZpcmVFdmVudExp
c3RlbmVycyhFdmVudCosIEV2ZW50VGFyZ2V0RGF0YSosIEV2ZW50TGlzdGVuZXJWZWN0b3ImKTsK
KworICAgIGZyaWVuZCBjbGFzcyBFdmVudExpc3RlbmVySXRlcmF0b3I7Cit9OworCitjbGFzcyBF
dmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIDogcHVibGljIEV2ZW50VGFyZ2V0IHsKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEmIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIG1fZXZlbnRUYXJnZXREYXRhOyB9Citwcml2YXRlOgorICAgIEV2ZW50VGFyZ2V0RGF0YSBt
X2V2ZW50VGFyZ2V0RGF0YTsKK307CisKK2lubGluZSB2b2lkIEV2ZW50VGFyZ2V0Ojp2aXNpdEpT
RXZlbnRMaXN0ZW5lcnMoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBFdmVudExp
c3RlbmVySXRlcmF0b3IgaXRlcmF0b3IodGhpcyk7CisgICAgd2hpbGUgKEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyID0gaXRlcmF0b3IubmV4dExpc3RlbmVyKCkpCisgICAgICAgIGxpc3RlbmVyLT52
aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7Cit9CisKK2lubGluZSBib29sIEV2ZW50VGFyZ2V0Ojpp
c0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkKK3sKKyAgICBFdmVudFRhcmdldERhdGEqIGQgPSBldmVu
dFRhcmdldERhdGEoKTsKKyAgICBpZiAoIWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gZC0+ZmlyaW5nRXZlbnRJdGVyYXRvcnMgJiYgIWQtPmZpcmluZ0V2ZW50SXRlcmF0b3Jz
LT5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29sIEV2ZW50VGFyZ2V0OjpoYXNFdmVudExpc3Rl
bmVycygpIGNvbnN0Cit7CisgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gY29uc3RfY2FzdDxFdmVu
dFRhcmdldCo+KHRoaXMpLT5ldmVudFRhcmdldERhdGEoKTsKKyAgICBpZiAoIWQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gIWQtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgp
OworfQorCitpbmxpbmUgYm9vbCBFdmVudFRhcmdldDo6aGFzRXZlbnRMaXN0ZW5lcnMoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpCit7CisgICAgRXZlbnRUYXJnZXREYXRhKiBkID0gZXZl
bnRUYXJnZXREYXRhKCk7CisgICAgaWYgKCFkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIGQtPmV2ZW50TGlzdGVuZXJNYXAuY29udGFpbnMoZXZlbnRUeXBlKTsKK30KKworaW5s
aW5lIGJvb2wgRXZlbnRUYXJnZXQ6Omhhc0NhcHR1cmluZ0V2ZW50TGlzdGVuZXJzKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKQoreworICAgIEV2ZW50VGFyZ2V0RGF0YSogZCA9IGV2ZW50
VGFyZ2V0RGF0YSgpOworICAgIGlmICghZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBkLT5ldmVudExpc3RlbmVyTWFwLmNvbnRhaW5zQ2FwdHVyaW5nKGV2ZW50VHlwZSk7Cit9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>