<?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>120898</bug_id>
          
          <creation_ts>2013-09-06 15:05:45 -0700</creation_ts>
          <short_desc>Stop using fastNew/fastDelete in JavaScriptCore</short_desc>
          <delta_ts>2013-09-06 15:31:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>925866</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-06 15:05:45 -0700</bug_when>
    <thetext>Stop using fastNew/fastDelete in JavaScriptCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925869</commentid>
    <comment_count>1</comment_count>
      <attachid>210804</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-06 15:10:28 -0700</bug_when>
    <thetext>Created attachment 210804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925872</commentid>
    <comment_count>2</comment_count>
      <attachid>210804</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-06 15:15:55 -0700</bug_when>
    <thetext>Comment on attachment 210804
Patch

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

&gt; Source/JavaScriptCore/runtime/VM.cpp:160
&gt; +    , arrayConstructorTable(adoptPtr(new HashTable(JSC::arrayConstructorTable)))
&gt; +    , arrayPrototypeTable(adoptPtr(new HashTable(JSC::arrayPrototypeTable)))
&gt; +    , booleanPrototypeTable(adoptPtr(new HashTable(JSC::booleanPrototypeTable)))

Perhaps we should add a HashTable::create() helper that returns a PassOwnPtr?
We don&apos;t want to put these on the stack anywhere right?

&gt; Source/JavaScriptCore/runtime/VM.h:227
&gt; +        OwnPtr&lt;const HashTable&gt; arrayConstructorTable;
&gt; +        OwnPtr&lt;const HashTable&gt; arrayPrototypeTable;
&gt; +        OwnPtr&lt;const HashTable&gt; booleanPrototypeTable;

You could make these &quot;const OwnPtr&lt;const HashTable&gt;&quot; to prevent changes post-construction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925873</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-06 15:18:15 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 210804 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210804&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VM.cpp:160
&gt; &gt; +    , arrayConstructorTable(adoptPtr(new HashTable(JSC::arrayConstructorTable)))
&gt; &gt; +    , arrayPrototypeTable(adoptPtr(new HashTable(JSC::arrayPrototypeTable)))
&gt; &gt; +    , booleanPrototypeTable(adoptPtr(new HashTable(JSC::booleanPrototypeTable)))
&gt; 
&gt; Perhaps we should add a HashTable::create() helper that returns a PassOwnPtr?
&gt; We don&apos;t want to put these on the stack anywhere right?

I’d rather we add a makeOwned function template so you can do

arrayConstructorTable(makeOwned&lt;HashTable&gt;())

and have things just work. I want to do that after we’ve gotten rid of PassOwnPtr though.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/VM.h:227
&gt; &gt; +        OwnPtr&lt;const HashTable&gt; arrayConstructorTable;
&gt; &gt; +        OwnPtr&lt;const HashTable&gt; arrayPrototypeTable;
&gt; &gt; +        OwnPtr&lt;const HashTable&gt; booleanPrototypeTable;
&gt; 
&gt; You could make these &quot;const OwnPtr&lt;const HashTable&gt;&quot; to prevent changes post-construction.

Good idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925878</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-06 15:31:15 -0700</bug_when>
    <thetext>Committed r155219: &lt;http://trac.webkit.org/changeset/155219&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210804</attachid>
            <date>2013-09-06 15:10:28 -0700</date>
            <delta_ts>2013-09-06 15:24:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120898-20130906151029.patch</filename>
            <type>text/plain</type>
            <size>32610</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODZjZGM1NGRjNDZjNWIxY2FjZjk1ZDE1ODU2NzI3ZDE5ZDk0Zjc4Li4yYTU3MzQxNjIzNGU5OThk
NDdjYTFhOTU1NjJlMjg1MDBlOTE3MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxMy0wOS0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgZmFzdE5ldy9mYXN0RGVsZXRlIGluIEphdmFTY3Jp
cHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjA4OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgYWxsIHRoZSBoYXNoIHRhYmxlIG1lbWJlcnMgaW4gRXhlY1N0YXRlIHRvIGJlIE93blB0
cnMgYW5kIHVzZQorICAgICAgICBhZG9wdFB0ciBpbnN0ZWFkLiBBbHNvLCBzaW5jZSBub25lIG9m
IHRoZSBoYXNoIHRhYmxlcyBjYW4gYmUgbnVsbCwgY2hhbmdlIHRoZWlyIGdldHRlcnMKKyAgICAg
ICAgdG8gcmV0dXJuIHJlZmVyZW5jZXMgYW5kIHByb3BhZ2F0ZSB0aGUgcmVmZXJlbmNlIHR5cGVz
IHdoZXJldmVyIHdlIGtub3cgdGhhdCBhIEhhc2hUYWJsZSBjYW4ndCBiZSBudWxsLgorCisgICAg
ICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6
YXJyYXlDb25zdHJ1Y3RvclRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcnJheVBy
b3RvdHlwZVRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpib29sZWFuUHJvdG90eXBl
VGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmRhdGFWaWV3VGFibGUpOgorICAgICAg
ICAoSlNDOjpFeGVjU3RhdGU6OmRhdGVUYWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6
ZGF0ZUNvbnN0cnVjdG9yVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmVycm9yUHJv
dG90eXBlVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6Omdsb2JhbE9iamVjdFRhYmxl
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpqc29uVGFibGUpOgorICAgICAgICAoSlNDOjpF
eGVjU3RhdGU6Om51bWJlckNvbnN0cnVjdG9yVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6Om51bWJlclByb3RvdHlwZVRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpvYmpl
Y3RDb25zdHJ1Y3RvclRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpwcml2YXRlTmFt
ZVByb3RvdHlwZVRhYmxlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpyZWdFeHBUYWJsZSk6
CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmVnRXhwQ29uc3RydWN0b3JUYWJsZSk6CisgICAg
ICAgIChKU0M6OkV4ZWNTdGF0ZTo6cmVnRXhwUHJvdG90eXBlVGFibGUpOgorICAgICAgICAoSlND
OjpFeGVjU3RhdGU6OnN0cmluZ0NvbnN0cnVjdG9yVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OnByb21pc2VQcm90b3R5cGVUYWJsZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6
cHJvbWlzZUNvbnN0cnVjdG9yVGFibGUpOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnByb21p
c2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0NsYXNzSW5mby5o
OgorICAgICAgICAoSlNDOjpDbGFzc0luZm86OnByb3BIYXNoVGFibGUpOgorICAgICAgICAqIHJ1
bnRpbWUvTG9va3VwLmg6CisgICAgICAgIChKU0M6OmdldFN0YXRpY1Byb3BlcnR5U2xvdCk6Cisg
ICAgICAgIChKU0M6OmdldFN0YXRpY0Z1bmN0aW9uU2xvdCk6CisgICAgICAgIChKU0M6OmdldFN0
YXRpY1ZhbHVlU2xvdCk6CisgICAgICAgIChKU0M6Omxvb2t1cFB1dCk6CisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgIChKU0M6OlZNOjp+
Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxMy0wOS0wNiAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXgg
Zm9yIHRoZSBHVEsgcG9ydCB3aGVuIGJ1aWxkaW5nIHdpdGggRlRMIEpJVCBlbmFibGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDgzMWJkMjcwYWIyZGYzMTNmNTAxNzViMzNjNmJjMmNjY2NjYTBiNWUuLjdiNWI3
YmIwZTM4Zjc4MDcyMTY1M2ZlNTBhOGQ3YWIxOWM3Nzk5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwzNCBAQAogMjAxMy0wOS0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCisgICAgICAgIFN0b3AgdXNpbmcgZmFzdE5ldy9mYXN0RGVsZXRlIGluIEphdmFTY3JpcHRD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA4
OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgZm9yIGNoYW5nZXMgdG8gSmF2YVNjcmlwdENvcmUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9ET01PYmplY3RIYXNoVGFibGVNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU9iamVjdEhh
c2hUYWJsZU1hcDo6Z2V0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnB1dCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmg6CisgICAg
ICAgIChXZWJDb3JlOjpwbHVnaW5FbGVtZW50Q3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTdG9yYWdlOjpkZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N0b3Jh
Z2U6OnB1dERlbGVnYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKGhhc2hUYWJsZUFjY2Vzc29yKToKKyAgICAgICAgKHByb3RvdHlw
ZUhhc2hUYWJsZUFjY2Vzc29yKToKKyAgICAgICAgKGNvbnN0cnVjdG9ySGFzaFRhYmxlQWNjZXNz
b3IpOgorICAgICAgICAoR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KToKKyAgICAgICAg
KEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3Rvckhl
bHBlck1ldGhvZHMpOgorCisyMDEzLTA5LTA2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CisKICAgICAgICAgU3RvcCB1c2luZyBmYXN0TmV3L2Zhc3REZWxldGUgaW4gV2Vi
Q29yZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIw
ODY3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApp
bmRleCBkNmMwMmZmZjU3ZjM0MjQ4M2Q0YzlmZWE3OTcwNTQ1YjRhMjRiOWZjLi5hMTIyMTY0NWU1
YmFiYTU3YzVkMWU5MjY3YjAzNzNmZWVmNzgzODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC04NCwyNyArODQsMjcgQEAgbmFtZXNwYWNl
IEpTQyAgewogI2lmbmRlZiBOREVCVUcKICAgICAgICAgdm9pZCBkdW1wQ2FsbGVyKCk7CiAjZW5k
aWYKLSAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogYXJyYXlDb25zdHJ1Y3RvclRhYmxl
KENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZtKCkuYXJyYXlDb25z
dHJ1Y3RvclRhYmxlOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGFycmF5UHJv
dG90eXBlVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0o
KS5hcnJheVByb3RvdHlwZVRhYmxlOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUq
IGJvb2xlYW5Qcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2Fs
bEZyYW1lLT52bSgpLmJvb2xlYW5Qcm90b3R5cGVUYWJsZTsgfQotICAgICAgICBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlKiBkYXRhVmlld1RhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVy
biBjYWxsRnJhbWUtPnZtKCkuZGF0YVZpZXdUYWJsZTsgfQotICAgICAgICBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlKiBkYXRlVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxG
cmFtZS0+dm0oKS5kYXRlVGFibGU7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSog
ZGF0ZUNvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxG
cmFtZS0+dm0oKS5kYXRlQ29uc3RydWN0b3JUYWJsZTsgfQotICAgICAgICBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlKiBlcnJvclByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJl
dHVybiBjYWxsRnJhbWUtPnZtKCkuZXJyb3JQcm90b3R5cGVUYWJsZTsgfQotICAgICAgICBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlKiBnbG9iYWxPYmplY3RUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLmdsb2JhbE9iamVjdFRhYmxlOyB9Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIGpzb25UYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkg
eyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLmpzb25UYWJsZTsgfQotICAgICAgICBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlKiBudW1iZXJDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1l
KSB7IHJldHVybiBjYWxsRnJhbWUtPnZtKCkubnVtYmVyQ29uc3RydWN0b3JUYWJsZTsgfQotICAg
ICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJQcm90b3R5cGVUYWJsZShDYWxsRnJh
bWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLm51bWJlclByb3RvdHlwZVRh
YmxlOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIG9iamVjdENvbnN0cnVjdG9y
VGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS5vYmpl
Y3RDb25zdHJ1Y3RvclRhYmxlOyB9Ci0gICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHBy
aXZhdGVOYW1lUHJvdG90eXBlVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNh
bGxGcmFtZS0+dm0oKS5wcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlOyB9Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBIYXNoVGFibGUqIHJlZ0V4cFRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJl
dHVybiBjYWxsRnJhbWUtPnZtKCkucmVnRXhwVGFibGU7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSogcmVnRXhwQ29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkg
eyByZXR1cm4gY2FsbEZyYW1lLT52bSgpLnJlZ0V4cENvbnN0cnVjdG9yVGFibGU7IH0KLSAgICAg
ICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwUHJvdG90eXBlVGFibGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpIHsgcmV0dXJuIGNhbGxGcmFtZS0+dm0oKS5yZWdFeHBQcm90b3R5cGVUYWJs
ZTsgfQotICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdDb25zdHJ1Y3RvclRh
YmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZtKCkuc3RyaW5n
Q29uc3RydWN0b3JUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlJiBhcnJh
eUNvbnN0cnVjdG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuICpjYWxsRnJh
bWUtPnZtKCkuYXJyYXlDb25zdHJ1Y3RvclRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBI
YXNoVGFibGUmIGFycmF5UHJvdG90eXBlVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0
dXJuICpjYWxsRnJhbWUtPnZtKCkuYXJyYXlQcm90b3R5cGVUYWJsZTsgfQorICAgICAgICBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlJiBib29sZWFuUHJvdG90eXBlVGFibGUoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpIHsgcmV0dXJuICpjYWxsRnJhbWUtPnZtKCkuYm9vbGVhblByb3RvdHlwZVRhYmxlOyB9
CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUmIGRhdGFWaWV3VGFibGUoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpIHsgcmV0dXJuICpjYWxsRnJhbWUtPnZtKCkuZGF0YVZpZXdUYWJsZTsgfQor
ICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlJiBkYXRlVGFibGUoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpIHsgcmV0dXJuICpjYWxsRnJhbWUtPnZtKCkuZGF0ZVRhYmxlOyB9CisgICAgICAgIHN0
YXRpYyBjb25zdCBIYXNoVGFibGUmIGRhdGVDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2Fs
bEZyYW1lKSB7IHJldHVybiAqY2FsbEZyYW1lLT52bSgpLmRhdGVDb25zdHJ1Y3RvclRhYmxlOyB9
CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUmIGVycm9yUHJvdG90eXBlVGFibGUoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuICpjYWxsRnJhbWUtPnZtKCkuZXJyb3JQcm90b3R5
cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlJiBnbG9iYWxPYmplY3RU
YWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gKmNhbGxGcmFtZS0+dm0oKS5nbG9i
YWxPYmplY3RUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlJiBqc29uVGFi
bGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuICpjYWxsRnJhbWUtPnZtKCkuanNvblRh
YmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUmIG51bWJlckNvbnN0cnVjdG9y
VGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuICpjYWxsRnJhbWUtPnZtKCkubnVt
YmVyQ29uc3RydWN0b3JUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlJiBu
dW1iZXJQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gKmNhbGxG
cmFtZS0+dm0oKS5udW1iZXJQcm90b3R5cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlJiBvYmplY3RDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7
IHJldHVybiAqY2FsbEZyYW1lLT52bSgpLm9iamVjdENvbnN0cnVjdG9yVGFibGU7IH0KKyAgICAg
ICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSYgcHJpdmF0ZU5hbWVQcm90b3R5cGVUYWJsZShDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gKmNhbGxGcmFtZS0+dm0oKS5wcml2YXRlTmFtZVBy
b3RvdHlwZVRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUmIHJlZ0V4cFRh
YmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiAqY2FsbEZyYW1lLT52bSgpLnJlZ0V4
cFRhYmxlOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUmIHJlZ0V4cENvbnN0cnVj
dG9yVGFibGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsgcmV0dXJuICpjYWxsRnJhbWUtPnZtKCku
cmVnRXhwQ29uc3RydWN0b3JUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxl
JiByZWdFeHBQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gKmNh
bGxGcmFtZS0+dm0oKS5yZWdFeHBQcm90b3R5cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29u
c3QgSGFzaFRhYmxlJiBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1l
KSB7IHJldHVybiAqY2FsbEZyYW1lLT52bSgpLnN0cmluZ0NvbnN0cnVjdG9yVGFibGU7IH0KICNp
ZiBFTkFCTEUoUFJPTUlTRVMpCi0gICAgICAgIHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByb21p
c2VQcm90b3R5cGVUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gY2FsbEZyYW1l
LT52bSgpLnByb21pc2VQcm90b3R5cGVUYWJsZTsgfQotICAgICAgICBzdGF0aWMgY29uc3QgSGFz
aFRhYmxlKiBwcm9taXNlQ29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyBy
ZXR1cm4gY2FsbEZyYW1lLT52bSgpLnByb21pc2VDb25zdHJ1Y3RvclRhYmxlOyB9Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBIYXNoVGFibGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKENh
bGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBjYWxsRnJhbWUtPnZtKCkucHJvbWlzZVJlc29s
dmVyUHJvdG90eXBlVGFibGU7IH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZSYgcHJv
bWlzZVByb3RvdHlwZVRhYmxlKENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiAqY2FsbEZy
YW1lLT52bSgpLnByb21pc2VQcm90b3R5cGVUYWJsZTsgfQorICAgICAgICBzdGF0aWMgY29uc3Qg
SGFzaFRhYmxlJiBwcm9taXNlQ29uc3RydWN0b3JUYWJsZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkg
eyByZXR1cm4gKmNhbGxGcmFtZS0+dm0oKS5wcm9taXNlQ29uc3RydWN0b3JUYWJsZTsgfQorICAg
ICAgICBzdGF0aWMgY29uc3QgSGFzaFRhYmxlJiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJs
ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4gKmNhbGxGcmFtZS0+dm0oKS5wcm9taXNl
UmVzb2x2ZXJQcm90b3R5cGVUYWJsZTsgfQogI2VuZGlmCiAKICAgICAgICAgc3RhdGljIENhbGxG
cmFtZSogY3JlYXRlKFJlZ2lzdGVyKiBjYWxsRnJhbWVCYXNlKSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxDYWxsRnJhbWUqPihjYWxsRnJhbWVCYXNlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAppbmRleCBlZGQyY2Q4MDJhYjE3MjVmN2VkZjYxNjlkNjlmMWRmOGYz
MmMyYzcyLi5mMGRlMGJkZmExMmJjYTUzMDUyNTk3Njc1OTFjZmRhMWU5ODJiM2IzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtMTQ0LDI0ICsxNDQsMjEg
QEAgc3RydWN0IE1ldGhvZFRhYmxlIHsKICAgICBDbGFzc05hbWU6OlR5cGVkQXJyYXlTdG9yYWdl
VHlwZQogCiBzdHJ1Y3QgQ2xhc3NJbmZvIHsKLSAgICAvKioKLSAgICAgKiBBIHN0cmluZyBkZW5v
dGluZyB0aGUgY2xhc3MgbmFtZS4gRXhhbXBsZTogIldpbmRvdyIuCi0gICAgICovCisgICAgLy8g
QSBzdHJpbmcgZGVub3RpbmcgdGhlIGNsYXNzIG5hbWUuIEV4YW1wbGU6ICJXaW5kb3ciLgogICAg
IGNvbnN0IGNoYXIqIGNsYXNzTmFtZTsKIAotICAgIC8qKgotICAgICAqIFBvaW50ZXIgdG8gdGhl
IGNsYXNzIGluZm9ybWF0aW9uIG9mIHRoZSBiYXNlIGNsYXNzLgotICAgICAqIDBMIGlmIHRoZXJl
IGlzIG5vbmUuCi0gICAgICovCisgICAgLy8gUG9pbnRlciB0byB0aGUgY2xhc3MgaW5mb3JtYXRp
b24gb2YgdGhlIGJhc2UgY2xhc3MuCisgICAgLy8gbnVsbHB0cmlmIHRoZXJlIGlzIG5vbmUuCiAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBwYXJlbnRDbGFzczsKLSAgICAvKioKLSAgICAgKiBTdGF0aWMg
aGFzaC10YWJsZSBvZiBwcm9wZXJ0aWVzLgotICAgICAqIEZvciBjbGFzc2VzIHRoYXQgY2FuIGJl
IHVzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLCBpdCBpcyBhY2Nlc3NlZCB2aWEgYSBnZXR0ZXIg
ZnVuY3Rpb24gdGhhdCB3b3VsZCB0eXBpY2FsbHkgcmV0dXJuIGEgcG9pbnRlciB0byB0aHJlYWQt
c3BlY2lmaWMgdmFsdWUuCi0gICAgICovCisKKyAgICAvLyBTdGF0aWMgaGFzaC10YWJsZSBvZiBw
cm9wZXJ0aWVzLgorICAgIC8vIEZvciBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgZnJvbSBtdWx0
aXBsZSB0aHJlYWRzLCBpdCBpcyBhY2Nlc3NlZCB2aWEgYSBnZXR0ZXIgZnVuY3Rpb24KKyAgICAv
LyB0aGF0IHdvdWxkIHR5cGljYWxseSByZXR1cm4gYSBwb2ludGVyIHRvIGEgdGhyZWFkLXNwZWNp
ZmljIHZhbHVlLgogICAgIGNvbnN0IEhhc2hUYWJsZSogcHJvcEhhc2hUYWJsZShFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVy
RnVuY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVyRnVu
Y3Rpb24oZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gJmNsYXNzUHJvcEhhc2hUYWJsZUdldHRl
ckZ1bmN0aW9uKGV4ZWMpOworCiAgICAgICAgIHJldHVybiBzdGF0aWNQcm9wSGFzaFRhYmxlOwog
ICAgIH0KICAgICAgICAgCkBAIC0xODQsNyArMTgxLDcgQEAgc3RydWN0IENsYXNzSW5mbyB7CiAg
ICAgfQogCiAgICAgY29uc3QgSGFzaFRhYmxlKiBzdGF0aWNQcm9wSGFzaFRhYmxlOwotICAgIHR5
cGVkZWYgY29uc3QgSGFzaFRhYmxlKiAoKkNsYXNzUHJvcEhhc2hUYWJsZUdldHRlckZ1bmN0aW9u
KShFeGVjU3RhdGUqKTsKKyAgICB0eXBlZGVmIGNvbnN0IEhhc2hUYWJsZSYgKCpDbGFzc1Byb3BI
YXNoVGFibGVHZXR0ZXJGdW5jdGlvbikoRXhlY1N0YXRlKik7CiAgICAgY29uc3QgQ2xhc3NQcm9w
SGFzaFRhYmxlR2V0dGVyRnVuY3Rpb24gY2xhc3NQcm9wSGFzaFRhYmxlR2V0dGVyRnVuY3Rpb247
CiAKICAgICBNZXRob2RUYWJsZSBtZXRob2RUYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTG9va3VwLmgKaW5kZXggNWVlOTk4ZmFiMDM2MTBhMjg5MDI0NjM3ZjQzZjhlMTYzMDEwYWJj
MS4uNTc5MDMwNWZlNTRmMzFlZTEyNGM5MTc4NTVkYzk5NGFhZmZiNGIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmgKQEAgLTI0MSw5ICsyNDEsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgKiB1bmtub3duIHByb3BlcnR5KS4KICAgICAgKi8KICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVGhpc0ltcCwgY2xhc3MgUGFyZW50SW1wPgotICAgIGlubGluZSBib29sIGdldFN0YXRp
Y1Byb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hUYWJsZSogdGFibGUsIFRo
aXNJbXAqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKKyAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewotICAgICAgICBjb25z
dCBIYXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7Cisg
ICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS5lbnRyeShleGVjLCBwcm9wZXJ0
eU5hbWUpOwogCiAgICAgICAgIGlmICghZW50cnkpIC8vIG5vdCBmb3VuZCwgZm9yd2FyZCB0byBw
YXJlbnQKICAgICAgICAgICAgIHJldHVybiBQYXJlbnRJbXA6OmdldE93blByb3BlcnR5U2xvdCh0
aGlzT2JqLCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpAQCAtMjYxLDEyICsyNjEsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICogYSBkdW1teSBnZXRWYWx1ZVByb3BlcnR5LgogICAgICAq
LwogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnRJbXA+Ci0gICAgaW5saW5lIGJvb2wgZ2V0U3Rh
dGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwg
SlNPYmplY3QqIHRoaXNPYmosIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xv
dCYgc2xvdCkKKyAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBKU09iamVjdCogdGhpc09iaiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogICAgIHsKICAgICAgICAg
aWYgKFBhcmVudEltcDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBjb25zdCBI
YXNoRW50cnkqIGVudHJ5ID0gdGFibGUtPmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS5lbnRyeShleGVjLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICBpZiAoIWVudHJ5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0yNzgsOSArMjc4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICogVXNpbmcgdGhpcyBpbnN0
ZWFkIG9mIGdldFN0YXRpY1Byb3BlcnR5U2xvdCByZW1vdmVzIHRoZSBuZWVkIGZvciBhIEZ1bmNJ
bXAgY2xhc3MuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXAsIGNsYXNzIFBh
cmVudEltcD4KLSAgICBpbmxpbmUgYm9vbCBnZXRTdGF0aWNWYWx1ZVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBIYXNoVGFibGUqIHRhYmxlLCBUaGlzSW1wKiB0aGlzT2JqLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCisgICAgaW5saW5lIGJvb2wgZ2V0
U3RhdGljVmFsdWVTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaFRhYmxlJiB0YWJsZSwg
VGhpc0ltcCogdGhpc09iaiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQogICAgIHsKLSAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IHRhYmxlLT5l
bnRyeShleGVjLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5
ID0gdGFibGUuZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBpZiAoIWVudHJ5
KSAvLyBub3QgZm91bmQsIGZvcndhcmQgdG8gcGFyZW50CiAgICAgICAgICAgICByZXR1cm4gUGFy
ZW50SW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iaiwgZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKQEAgLTMwOSw5ICszMDksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKiBpcyBmb3Vu
ZCBpdCBzZXRzIHRoZSB2YWx1ZSBhbmQgcmV0dXJucyB0cnVlLCBlbHNlIGl0IHJldHVybnMgZmFs
c2UuCiAgICAgICovCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRoaXNJbXA+Ci0gICAgaW5saW5lIGJv
b2wgbG9va3VwUHV0KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSB2YWx1ZSwgY29uc3QgSGFzaFRhYmxlKiB0YWJsZSwgVGhpc0ltcCogdGhpc09iaiwg
Ym9vbCBzaG91bGRUaHJvdyA9IGZhbHNlKQorICAgIGlubGluZSBib29sIGxvb2t1cFB1dChFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGNv
bnN0IEhhc2hUYWJsZSYgdGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIGJvb2wgc2hvdWxkVGhyb3cg
PSBmYWxzZSkKICAgICB7Ci0gICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSB0YWJsZS0+
ZW50cnkoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRy
eSA9IHRhYmxlLmVudHJ5KGV4ZWMsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIAogICAgICAgICBp
ZiAoIWVudHJ5KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzI3LDcgKzMyNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAqIHRoZW4gaXQgY2FsbHMgcHV0KCkgb24gdGhlIFBhcmVu
dEltcCBjbGFzcy4KICAgICAgKi8KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVGhpc0ltcCwgY2xhc3Mg
UGFyZW50SW1wPgotICAgIGlubGluZSB2b2lkIGxvb2t1cFB1dChFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IEhhc2hUYWJsZSog
dGFibGUsIFRoaXNJbXAqIHRoaXNPYmosIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKKyAgICBpbmxp
bmUgdm9pZCBsb29rdXBQdXQoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHVlLCBjb25zdCBIYXNoVGFibGUmIHRhYmxlLCBUaGlzSW1wKiB0aGlz
T2JqLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3QpCiAgICAgewogICAgICAgICBpZiAoIWxvb2t1cFB1
dDxUaGlzSW1wPihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCB0YWJsZSwgdGhpc09iaiwgc2xv
dC5pc1N0cmljdE1vZGUoKSkpCiAgICAgICAgICAgICBQYXJlbnRJbXA6OnB1dCh0aGlzT2JqLCBl
eGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsgLy8gbm90IGZvdW5kOiBmb3J3YXJkIHRv
IHBhcmVudApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDliZWViMmZlNTYz
OTYxYThlNzg4MTFhZGFmNWI5NjEwYmY3MWE2NmUuLjk3NGQzOWI2YzhiMThjODYwMjgwMjYyNWUz
OGU0YjllNDE5MzE4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE1
NSwyNyArMTU1LDI3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICAsIHZtVHlwZSh2bVR5cGUpCiAgICAgLCBjbGllbnREYXRhKDApCiAgICAgLCB0b3BDYWxs
RnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpLT5yZW1vdmVIb3N0Q2FsbEZyYW1lRmxhZygpKQot
ICAgICwgYXJyYXlDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmFycmF5
Q29uc3RydWN0b3JUYWJsZSkpCi0gICAgLCBhcnJheVByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFz
aFRhYmxlPihKU0M6OmFycmF5UHJvdG90eXBlVGFibGUpKQotICAgICwgYm9vbGVhblByb3RvdHlw
ZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmJvb2xlYW5Qcm90b3R5cGVUYWJsZSkpCi0g
ICAgLCBkYXRhVmlld1RhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmRhdGFWaWV3VGFibGUp
KQotICAgICwgZGF0ZVRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6OmRhdGVUYWJsZSkpCi0g
ICAgLCBkYXRlQ29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpkYXRlQ29u
c3RydWN0b3JUYWJsZSkpCi0gICAgLCBlcnJvclByb3RvdHlwZVRhYmxlKGZhc3ROZXc8SGFzaFRh
YmxlPihKU0M6OmVycm9yUHJvdG90eXBlVGFibGUpKQotICAgICwgZ2xvYmFsT2JqZWN0VGFibGUo
ZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6Z2xvYmFsT2JqZWN0VGFibGUpKQotICAgICwganNvblRh
YmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Ompzb25UYWJsZSkpCi0gICAgLCBudW1iZXJDb25z
dHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFzaFRhYmxlPihKU0M6Om51bWJlckNvbnN0cnVjdG9yVGFi
bGUpKQotICAgICwgbnVtYmVyUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6
bnVtYmVyUHJvdG90eXBlVGFibGUpKQotICAgICwgb2JqZWN0Q29uc3RydWN0b3JUYWJsZShmYXN0
TmV3PEhhc2hUYWJsZT4oSlNDOjpvYmplY3RDb25zdHJ1Y3RvclRhYmxlKSkKLSAgICAsIHByaXZh
dGVOYW1lUHJvdG90eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cHJpdmF0ZU5hbWVQ
cm90b3R5cGVUYWJsZSkpCi0gICAgLCByZWdFeHBUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlND
OjpyZWdFeHBUYWJsZSkpCi0gICAgLCByZWdFeHBDb25zdHJ1Y3RvclRhYmxlKGZhc3ROZXc8SGFz
aFRhYmxlPihKU0M6OnJlZ0V4cENvbnN0cnVjdG9yVGFibGUpKQotICAgICwgcmVnRXhwUHJvdG90
eXBlVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cmVnRXhwUHJvdG90eXBlVGFibGUpKQot
ICAgICwgc3RyaW5nQ29uc3RydWN0b3JUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpzdHJp
bmdDb25zdHJ1Y3RvclRhYmxlKSkKKyAgICAsIGFycmF5Q29uc3RydWN0b3JUYWJsZShhZG9wdFB0
cihuZXcgSGFzaFRhYmxlKEpTQzo6YXJyYXlDb25zdHJ1Y3RvclRhYmxlKSkpCisgICAgLCBhcnJh
eVByb3RvdHlwZVRhYmxlKGFkb3B0UHRyKG5ldyBIYXNoVGFibGUoSlNDOjphcnJheVByb3RvdHlw
ZVRhYmxlKSkpCisgICAgLCBib29sZWFuUHJvdG90eXBlVGFibGUoYWRvcHRQdHIobmV3IEhhc2hU
YWJsZShKU0M6OmJvb2xlYW5Qcm90b3R5cGVUYWJsZSkpKQorICAgICwgZGF0YVZpZXdUYWJsZShh
ZG9wdFB0cihuZXcgSGFzaFRhYmxlKEpTQzo6ZGF0YVZpZXdUYWJsZSkpKQorICAgICwgZGF0ZVRh
YmxlKGFkb3B0UHRyKG5ldyBIYXNoVGFibGUoSlNDOjpkYXRlVGFibGUpKSkKKyAgICAsIGRhdGVD
b25zdHJ1Y3RvclRhYmxlKGFkb3B0UHRyKG5ldyBIYXNoVGFibGUoSlNDOjpkYXRlQ29uc3RydWN0
b3JUYWJsZSkpKQorICAgICwgZXJyb3JQcm90b3R5cGVUYWJsZShhZG9wdFB0cihuZXcgSGFzaFRh
YmxlKEpTQzo6ZXJyb3JQcm90b3R5cGVUYWJsZSkpKQorICAgICwgZ2xvYmFsT2JqZWN0VGFibGUo
YWRvcHRQdHIobmV3IEhhc2hUYWJsZShKU0M6Omdsb2JhbE9iamVjdFRhYmxlKSkpCisgICAgLCBq
c29uVGFibGUoYWRvcHRQdHIobmV3IEhhc2hUYWJsZShKU0M6Ompzb25UYWJsZSkpKQorICAgICwg
bnVtYmVyQ29uc3RydWN0b3JUYWJsZShhZG9wdFB0cihuZXcgSGFzaFRhYmxlKEpTQzo6bnVtYmVy
Q29uc3RydWN0b3JUYWJsZSkpKQorICAgICwgbnVtYmVyUHJvdG90eXBlVGFibGUoYWRvcHRQdHIo
bmV3IEhhc2hUYWJsZShKU0M6Om51bWJlclByb3RvdHlwZVRhYmxlKSkpCisgICAgLCBvYmplY3RD
b25zdHJ1Y3RvclRhYmxlKGFkb3B0UHRyKG5ldyBIYXNoVGFibGUoSlNDOjpvYmplY3RDb25zdHJ1
Y3RvclRhYmxlKSkpCisgICAgLCBwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlKGFkb3B0UHRyKG5l
dyBIYXNoVGFibGUoSlNDOjpwcml2YXRlTmFtZVByb3RvdHlwZVRhYmxlKSkpCisgICAgLCByZWdF
eHBUYWJsZShhZG9wdFB0cihuZXcgSGFzaFRhYmxlKEpTQzo6cmVnRXhwVGFibGUpKSkKKyAgICAs
IHJlZ0V4cENvbnN0cnVjdG9yVGFibGUoYWRvcHRQdHIobmV3IEhhc2hUYWJsZShKU0M6OnJlZ0V4
cENvbnN0cnVjdG9yVGFibGUpKSkKKyAgICAsIHJlZ0V4cFByb3RvdHlwZVRhYmxlKGFkb3B0UHRy
KG5ldyBIYXNoVGFibGUoSlNDOjpyZWdFeHBQcm90b3R5cGVUYWJsZSkpKQorICAgICwgc3RyaW5n
Q29uc3RydWN0b3JUYWJsZShhZG9wdFB0cihuZXcgSGFzaFRhYmxlKEpTQzo6c3RyaW5nQ29uc3Ry
dWN0b3JUYWJsZSkpKQogI2lmIEVOQUJMRShQUk9NSVNFUykKLSAgICAsIHByb21pc2VQcm90b3R5
cGVUYWJsZShmYXN0TmV3PEhhc2hUYWJsZT4oSlNDOjpwcm9taXNlUHJvdG90eXBlVGFibGUpKQot
ICAgICwgcHJvbWlzZUNvbnN0cnVjdG9yVGFibGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cHJv
bWlzZUNvbnN0cnVjdG9yVGFibGUpKQotICAgICwgcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFi
bGUoZmFzdE5ldzxIYXNoVGFibGU+KEpTQzo6cHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUp
KQorICAgICwgcHJvbWlzZVByb3RvdHlwZVRhYmxlKGFkb3B0UHRyKG5ldyBIYXNoVGFibGUoSlND
Ojpwcm9taXNlUHJvdG90eXBlVGFibGUpKSkKKyAgICAsIHByb21pc2VDb25zdHJ1Y3RvclRhYmxl
KGFkb3B0UHRyKG5ldyBIYXNoVGFibGUoSlNDOjpwcm9taXNlQ29uc3RydWN0b3JUYWJsZSkpKQor
ICAgICwgcHJvbWlzZVJlc29sdmVyUHJvdG90eXBlVGFibGUoYWRvcHRQdHIobmV3IEhhc2hUYWJs
ZShKU0M6OnByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlKSkpCiAjZW5kaWYKICAgICAsIGlk
ZW50aWZpZXJUYWJsZSh2bVR5cGUgPT0gRGVmYXVsdCA/IHd0ZlRocmVhZERhdGEoKS5jdXJyZW50
SWRlbnRpZmllclRhYmxlKCkgOiBjcmVhdGVJZGVudGlmaWVyVGFibGUoKSkKICAgICAsIHByb3Bl
cnR5TmFtZXMobmV3IENvbW1vbklkZW50aWZpZXJzKHRoaXMpKQpAQCAtMzMyLDI5ICszMzIsNiBA
QCBWTTo6flZNKCkKICAgICBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZS0+ZGVsZXRlVGFi
bGUoKTsKICNlbmRpZgogCi0gICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KGFy
cmF5Q29uc3RydWN0b3JUYWJsZSkpOwotICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFi
bGUqPihhcnJheVByb3RvdHlwZVRhYmxlKSk7Ci0gICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhh
c2hUYWJsZSo+KGJvb2xlYW5Qcm90b3R5cGVUYWJsZSkpOwotICAgIGZhc3REZWxldGUoY29uc3Rf
Y2FzdDxIYXNoVGFibGUqPihkYXRhVmlld1RhYmxlKSk7Ci0gICAgZmFzdERlbGV0ZShjb25zdF9j
YXN0PEhhc2hUYWJsZSo+KGRhdGVUYWJsZSkpOwotICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxI
YXNoVGFibGUqPihkYXRlQ29uc3RydWN0b3JUYWJsZSkpOwotICAgIGZhc3REZWxldGUoY29uc3Rf
Y2FzdDxIYXNoVGFibGUqPihlcnJvclByb3RvdHlwZVRhYmxlKSk7Ci0gICAgZmFzdERlbGV0ZShj
b25zdF9jYXN0PEhhc2hUYWJsZSo+KGdsb2JhbE9iamVjdFRhYmxlKSk7Ci0gICAgZmFzdERlbGV0
ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KGpzb25UYWJsZSkpOwotICAgIGZhc3REZWxldGUoY29u
c3RfY2FzdDxIYXNoVGFibGUqPihudW1iZXJDb25zdHJ1Y3RvclRhYmxlKSk7Ci0gICAgZmFzdERl
bGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG51bWJlclByb3RvdHlwZVRhYmxlKSk7Ci0gICAg
ZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KG9iamVjdENvbnN0cnVjdG9yVGFibGUp
KTsKLSAgICBmYXN0RGVsZXRlKGNvbnN0X2Nhc3Q8SGFzaFRhYmxlKj4ocHJpdmF0ZU5hbWVQcm90
b3R5cGVUYWJsZSkpOwotICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdF
eHBUYWJsZSkpOwotICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihyZWdFeHBD
b25zdHJ1Y3RvclRhYmxlKSk7Ci0gICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+
KHJlZ0V4cFByb3RvdHlwZVRhYmxlKSk7Ci0gICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hU
YWJsZSo+KHN0cmluZ0NvbnN0cnVjdG9yVGFibGUpKTsKLSNpZiBFTkFCTEUoUFJPTUlTRVMpCi0g
ICAgZmFzdERlbGV0ZShjb25zdF9jYXN0PEhhc2hUYWJsZSo+KHByb21pc2VQcm90b3R5cGVUYWJs
ZSkpOwotICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihwcm9taXNlQ29uc3Ry
dWN0b3JUYWJsZSkpOwotICAgIGZhc3REZWxldGUoY29uc3RfY2FzdDxIYXNoVGFibGUqPihwcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZSkpOwotI2VuZGlmCi0KICAgICBkZWxldGUgZW1wdHlM
aXN0OwogCiAgICAgZGVsZXRlIHByb3BlcnR5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCBhYzZmOGVkMDA1NDdmNjZjNDllOTE3ZTRjOTBkNDk4ZWY5ZWJjY2Q2Li4wNTMx
Y2Y2YmIzZjY2YjhmYzk3NTVhZDEwN2Y5ZDUwYTM3ZjIyMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTIyMiwyNyArMjIyLDI3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBFeGVjU3RhdGUqIHRvcENhbGxGcmFtZTsKICAgICAgICAgV2F0Y2hkb2cgd2F0Y2hkb2c7CiAK
LSAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBhcnJheUNvbnN0cnVjdG9yVGFibGU7Ci0gICAgICAg
IGNvbnN0IEhhc2hUYWJsZSogYXJyYXlQcm90b3R5cGVUYWJsZTsKLSAgICAgICAgY29uc3QgSGFz
aFRhYmxlKiBib29sZWFuUHJvdG90eXBlVGFibGU7Ci0gICAgICAgIGNvbnN0IEhhc2hUYWJsZSog
ZGF0YVZpZXdUYWJsZTsKLSAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBkYXRlVGFibGU7Ci0gICAg
ICAgIGNvbnN0IEhhc2hUYWJsZSogZGF0ZUNvbnN0cnVjdG9yVGFibGU7Ci0gICAgICAgIGNvbnN0
IEhhc2hUYWJsZSogZXJyb3JQcm90b3R5cGVUYWJsZTsKLSAgICAgICAgY29uc3QgSGFzaFRhYmxl
KiBnbG9iYWxPYmplY3RUYWJsZTsKLSAgICAgICAgY29uc3QgSGFzaFRhYmxlKiBqc29uVGFibGU7
Ci0gICAgICAgIGNvbnN0IEhhc2hUYWJsZSogbnVtYmVyQ29uc3RydWN0b3JUYWJsZTsKLSAgICAg
ICAgY29uc3QgSGFzaFRhYmxlKiBudW1iZXJQcm90b3R5cGVUYWJsZTsKLSAgICAgICAgY29uc3Qg
SGFzaFRhYmxlKiBvYmplY3RDb25zdHJ1Y3RvclRhYmxlOwotICAgICAgICBjb25zdCBIYXNoVGFi
bGUqIHByaXZhdGVOYW1lUHJvdG90eXBlVGFibGU7Ci0gICAgICAgIGNvbnN0IEhhc2hUYWJsZSog
cmVnRXhwVGFibGU7Ci0gICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcmVnRXhwQ29uc3RydWN0b3JU
YWJsZTsKLSAgICAgICAgY29uc3QgSGFzaFRhYmxlKiByZWdFeHBQcm90b3R5cGVUYWJsZTsKLSAg
ICAgICAgY29uc3QgSGFzaFRhYmxlKiBzdHJpbmdDb25zdHJ1Y3RvclRhYmxlOworICAgICAgICBP
d25QdHI8Y29uc3QgSGFzaFRhYmxlPiBhcnJheUNvbnN0cnVjdG9yVGFibGU7CisgICAgICAgIE93
blB0cjxjb25zdCBIYXNoVGFibGU+IGFycmF5UHJvdG90eXBlVGFibGU7CisgICAgICAgIE93blB0
cjxjb25zdCBIYXNoVGFibGU+IGJvb2xlYW5Qcm90b3R5cGVUYWJsZTsKKyAgICAgICAgT3duUHRy
PGNvbnN0IEhhc2hUYWJsZT4gZGF0YVZpZXdUYWJsZTsKKyAgICAgICAgT3duUHRyPGNvbnN0IEhh
c2hUYWJsZT4gZGF0ZVRhYmxlOworICAgICAgICBPd25QdHI8Y29uc3QgSGFzaFRhYmxlPiBkYXRl
Q29uc3RydWN0b3JUYWJsZTsKKyAgICAgICAgT3duUHRyPGNvbnN0IEhhc2hUYWJsZT4gZXJyb3JQ
cm90b3R5cGVUYWJsZTsKKyAgICAgICAgT3duUHRyPGNvbnN0IEhhc2hUYWJsZT4gZ2xvYmFsT2Jq
ZWN0VGFibGU7CisgICAgICAgIE93blB0cjxjb25zdCBIYXNoVGFibGU+IGpzb25UYWJsZTsKKyAg
ICAgICAgT3duUHRyPGNvbnN0IEhhc2hUYWJsZT4gbnVtYmVyQ29uc3RydWN0b3JUYWJsZTsKKyAg
ICAgICAgT3duUHRyPGNvbnN0IEhhc2hUYWJsZT4gbnVtYmVyUHJvdG90eXBlVGFibGU7CisgICAg
ICAgIE93blB0cjxjb25zdCBIYXNoVGFibGU+IG9iamVjdENvbnN0cnVjdG9yVGFibGU7CisgICAg
ICAgIE93blB0cjxjb25zdCBIYXNoVGFibGU+IHByaXZhdGVOYW1lUHJvdG90eXBlVGFibGU7Cisg
ICAgICAgIE93blB0cjxjb25zdCBIYXNoVGFibGU+IHJlZ0V4cFRhYmxlOworICAgICAgICBPd25Q
dHI8Y29uc3QgSGFzaFRhYmxlPiByZWdFeHBDb25zdHJ1Y3RvclRhYmxlOworICAgICAgICBPd25Q
dHI8Y29uc3QgSGFzaFRhYmxlPiByZWdFeHBQcm90b3R5cGVUYWJsZTsKKyAgICAgICAgT3duUHRy
PGNvbnN0IEhhc2hUYWJsZT4gc3RyaW5nQ29uc3RydWN0b3JUYWJsZTsKICNpZiBFTkFCTEUoUFJP
TUlTRVMpCi0gICAgICAgIGNvbnN0IEhhc2hUYWJsZSogcHJvbWlzZVByb3RvdHlwZVRhYmxlOwot
ICAgICAgICBjb25zdCBIYXNoVGFibGUqIHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOwotICAgICAg
ICBjb25zdCBIYXNoVGFibGUqIHByb21pc2VSZXNvbHZlclByb3RvdHlwZVRhYmxlOworICAgICAg
ICBPd25QdHI8Y29uc3QgSGFzaFRhYmxlPiBwcm9taXNlUHJvdG90eXBlVGFibGU7CisgICAgICAg
IE93blB0cjxjb25zdCBIYXNoVGFibGU+IHByb21pc2VDb25zdHJ1Y3RvclRhYmxlOworICAgICAg
ICBPd25QdHI8Y29uc3QgSGFzaFRhYmxlPiBwcm9taXNlUmVzb2x2ZXJQcm90b3R5cGVUYWJsZTsK
ICNlbmRpZgogCiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVyZVN0cnVjdHVyZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJs
ZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFw
LmgKaW5kZXggYTNhMGEyYWVlYmRmNDM3ZWVkNTI5NDdlNTM1NTYwOGYwODAyNjA0My4uMTNiZjIw
N2IwMDBiODdiOTVhNDg2NmMzYzFiM2MxZGE1YjU4OGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgKQEAgLTQyLDEyICs0Miwx
MiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpdGVyLT52YWx1ZS5kZWxldGVUYWJsZSgpOwogICAg
IH0KIAotICAgIGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXQoY29uc3QgSlNDOjpIYXNoVGFibGUq
IHN0YXRpY1RhYmxlKQorICAgIGNvbnN0IEpTQzo6SGFzaFRhYmxlJiBnZXQoY29uc3QgSlNDOjpI
YXNoVGFibGUmIHN0YXRpY1RhYmxlKQogICAgIHsKLSAgICAgICAgSGFzaE1hcDxjb25zdCBKU0M6
Okhhc2hUYWJsZSosIEpTQzo6SGFzaFRhYmxlPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZpbmQo
c3RhdGljVGFibGUpOworICAgICAgICBIYXNoTWFwPGNvbnN0IEpTQzo6SGFzaFRhYmxlKiwgSlND
OjpIYXNoVGFibGU+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZCgmc3RhdGljVGFibGUpOwog
ICAgICAgICBpZiAoaXRlciAhPSBtX21hcC5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiAmaXRl
ci0+dmFsdWU7Ci0gICAgICAgIHJldHVybiAmbV9tYXAuc2V0KHN0YXRpY1RhYmxlLCBzdGF0aWNU
YWJsZS0+Y29weSgpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgICAgICByZXR1cm4gaXRlci0+
dmFsdWU7CisgICAgICAgIHJldHVybiBtX21hcC5zZXQoJnN0YXRpY1RhYmxlLCBzdGF0aWNUYWJs
ZS5jb3B5KCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCAyMTZhN2Q4MDYyYjMzYjk0
ZGEzZmRmMjM5ZmMyMWExZDM4ZDI0ZGMzLi42YTVmMTRmOGVkZjc2N2UyMjQ0MDA5YTY2YzJjOGM2
ZTYxYjZhZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1RBVElDX0FTU0VSVF9J
U19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKERPTUNvbnN0cnVjdG9yT2JqZWN0KTsKIFNUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVu
dCk7CiAKLWNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXRIYXNoVGFibGVGb3JHbG9iYWxEYXRhKFZN
JiB2bSwgY29uc3QgSlNDOjpIYXNoVGFibGUqIHN0YXRpY1RhYmxlKQorY29uc3QgSlNDOjpIYXNo
VGFibGUmIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoVk0mIHZtLCBjb25zdCBKU0M6Okhhc2hU
YWJsZSYgc3RhdGljVGFibGUpCiB7CiAgICAgcmV0dXJuIERPTU9iamVjdEhhc2hUYWJsZU1hcDo6
bWFwRm9yKHZtKS5nZXQoc3RhdGljVGFibGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaAppbmRleCBiMDViYjlmZTQxOGFhNjkxYTY0ODViNTM2YThmZjk3NWI2
YThiNjI5Li42ZjA3ZjQyOGY2NGExN2FjY2ZmODkwYzBkY2I3NTI1ZmNlZTJmOTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjU3LDcgKzI1Nyw3IEBA
IGNsYXNzIERPTVN0cmluZ0xpc3Q7CiAgICAgICAgIHJldHVybiBpbmRleCA+PSBleGVjLT5hcmd1
bWVudENvdW50KCkgPyBKU0M6OkpTVmFsdWUoKSA6IGV4ZWMtPmFyZ3VtZW50KGluZGV4KTsKICAg
ICB9CiAKLSAgICBjb25zdCBKU0M6Okhhc2hUYWJsZSogZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0
YShKU0M6OlZNJiwgY29uc3QgSlNDOjpIYXNoVGFibGUqIHN0YXRpY1RhYmxlKTsKKyAgICBjb25z
dCBKU0M6Okhhc2hUYWJsZSYgZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShKU0M6OlZNJiwgY29u
c3QgSlNDOjpIYXNoVGFibGUmIHN0YXRpY1RhYmxlKTsKIAogICAgIHZvaWQgcmVwb3J0RXhjZXB0
aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbiwgQ2FjaGVkU2NyaXB0
KiA9IDApOwogICAgIHZvaWQgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CmluZGV4IDBlNjg4YTE2Yzc3YTlkN2JhYzdhOWY3NmYyNDVmN2I2NzlmMWMwM2QuLjFhZmQxN2Q5
NzM5MTMzYzBiNjAwNTcyMDVmNWIxOWI2ZjNlOWU4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCB2
b2lkIEpTRE9NV2luZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
bG9va3VwUHV0PEpTRE9NV2luZG93PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzX2luZm8u
cHJvcEhhc2hUYWJsZShleGVjKSwgdGhpc09iamVjdCkpCisgICAgaWYgKGxvb2t1cFB1dDxKU0RP
TVdpbmRvdz4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgKnNfaW5mby5wcm9wSGFzaFRhYmxl
KGV4ZWMpLCB0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEJpbmRpbmdT
ZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqZWN0LT5p
bXBsKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQbHVnaW5F
bGVtZW50RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVs
ZW1lbnRGdW5jdGlvbnMuaAppbmRleCBlMmE1MmRmMjdiYTVkMzcyNTQ4YmNjZjlkZWQyMDdlNTk4
NmJkODBhLi4xMzhjNjBjMTMzMjUyMjY5NDg3YjJhMmFiYzE2MzE5NTk3Yzk5YjJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BsdWdpbkVsZW1lbnRGdW5jdGlv
bnMuaApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGUg
PGNsYXNzIFR5cGUsIGNsYXNzIEJhc2U+IGJvb2wgcGx1Z2luRWxlbWVudEN1c3RvbUdldE93blBy
b3BlcnR5U2xvdChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdCwgVHlwZSogZWxlbWVudCkKICAgICB7CiAg
ICAgICAgIGlmICghZWxlbWVudC0+Z2xvYmFsT2JqZWN0KCktPndvcmxkKCktPmlzTm9ybWFsKCkp
IHsKLSAgICAgICAgICAgIGlmIChKU0M6OmdldFN0YXRpY1ZhbHVlU2xvdDxUeXBlLCBCYXNlPihl
eGVjLCBUeXBlOjppbmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUsIGVsZW1lbnQsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCisgICAgICAgICAgICBpZiAoSlNDOjpnZXRTdGF0aWNWYWx1ZVNsb3Q8VHlw
ZSwgQmFzZT4oZXhlYywgKlR5cGU6OmluZm8oKS0+c3RhdGljUHJvcEhhc2hUYWJsZSwgZWxlbWVu
dCwgcHJvcGVydHlOYW1lLCBzbG90KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgICAgICAgICAgSlNDOjpKU1ZhbHVlIHByb3RvID0gZWxlbWVudC0+cHJvdG90eXBlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCAx
OWEzOWM4MDY1YzllZGY4Zjk0NWIxY2ViMDljMGExNGVmOGNhMWUxLi4zMDE0ODIxN2I5OWUwMWQy
ZmY3OTUyYTkwNzljZWI2N2VkOTZlOTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBKU1N0b3JhZ2U6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGUKICAgICAvLyBTaW5jZSBoYXNQcm9wZXJ0eSgpIHdvdWxkIGVuZCB1cCBjYWxsaW5n
IGNhbkdldEl0ZW1zRm9yTmFtZSgpIGFuZCBiZSBmb29sZWQsIHdlIG5lZWQgdG8gY2hlY2sKICAg
ICAvLyB0aGUgbmF0aXZlIHByb3BlcnR5IHNsb3RzIG1hbnVhbGx5LgogICAgIFByb3BlcnR5U2xv
dCBzbG90KHRoaXNPYmplY3QpOwotICAgIGlmIChnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNTdG9yYWdl
LCBCYXNlPihleGVjLCBzX2luZm8ucHJvcEhhc2hUYWJsZShleGVjKSwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KSkKKyAgICBpZiAoZ2V0U3RhdGljVmFsdWVTbG90PEpTU3RvcmFnZSwg
QmFzZT4oZXhlYywgKnNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCk7CkBAIC0xMDUsNyArMTA1
LDcgQEAgYm9vbCBKU1N0b3JhZ2U6OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZQogICAgIC8vIFNpbmNlIGhhc1Byb3BlcnR5KCkg
d291bGQgZW5kIHVwIGNhbGxpbmcgY2FuR2V0SXRlbXNGb3JOYW1lKCkgYW5kIGJlIGZvb2xlZCwg
d2UgbmVlZCB0byBjaGVjawogICAgIC8vIHRoZSBuYXRpdmUgcHJvcGVydHkgc2xvdHMgbWFudWFs
bHkuCiAgICAgUHJvcGVydHlTbG90IHNsb3QodGhpcyk7Ci0gICAgaWYgKGdldFN0YXRpY1ZhbHVl
U2xvdDxKU1N0b3JhZ2UsIEJhc2U+KGV4ZWMsIHNfaW5mby5wcm9wSGFzaFRhYmxlKGV4ZWMpLCB0
aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQorICAgIGlmIChnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNT
dG9yYWdlLCBCYXNlPihleGVjLCAqc19pbmZvLnByb3BIYXNoVGFibGUoZXhlYyksIHRoaXMsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAg
SlNWYWx1ZSBwcm90b3R5cGUgPSB0aGlzLT5wcm90b3R5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNTc5NTE2ZDkz
YTZjNzg4NGE1YWVhYmJjZmZhNjE4MDgxMjJhODM3NS4uMzZjODg4YTA0NmMyOTUzN2U0NTk5Mjlm
ZjgwYjE0OThjNDk4OTM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI5NSw3ICsyOTUsNyBAQCBzdWIgaGFzaFRhYmxl
QWNjZXNzb3IKICAgICBpZiAoJG5vU3RhdGljVGFibGVzKSB7CiAgICAgICAgIHJldHVybiAiZ2V0
JHtjbGFzc05hbWV9VGFibGUoZXhlYykiOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAi
JiR7Y2xhc3NOYW1lfVRhYmxlIjsKKyAgICAgICAgcmV0dXJuICIke2NsYXNzTmFtZX1UYWJsZSI7
CiAgICAgfQogfQogCkBAIC0zMDYsNyArMzA2LDcgQEAgc3ViIHByb3RvdHlwZUhhc2hUYWJsZUFj
Y2Vzc29yCiAgICAgaWYgKCRub1N0YXRpY1RhYmxlcykgewogICAgICAgICByZXR1cm4gImdldCR7
Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlKGV4ZWMpIjsKICAgICB9IGVsc2UgewotICAgICAgICBy
ZXR1cm4gIiYke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSI7CisgICAgICAgIHJldHVybiAiJHtj
bGFzc05hbWV9UHJvdG90eXBlVGFibGUiOwogICAgIH0KIH0KIApAQCAtMzE3LDcgKzMxNyw3IEBA
IHN1YiBjb25zdHJ1Y3Rvckhhc2hUYWJsZUFjY2Vzc29yCiAgICAgaWYgKCRub1N0YXRpY1RhYmxl
cykgewogICAgICAgICByZXR1cm4gImdldCR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUoZXhl
YykiOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiAiJiR7Y29uc3RydWN0b3JDbGFzc05h
bWV9VGFibGUiOworICAgICAgICByZXR1cm4gIiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUi
OwogICAgIH0KIH0KIApAQCAtNDIwLDcgKzQyMCw3IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3Bl
cnR5U2xvdEJvZHkKICAgICBpZiAoJGhhc0F0dHJpYnV0ZXMpIHsKICAgICAgICAgaWYgKCRpbmxp
bmVkKSB7CiAgICAgICAgICAgICBkaWUgIkNhbm5vdCBpbmxpbmUgaWYgTm9TdGF0aWNUYWJsZXMg
aXMgc2V0LiIgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGlj
VGFibGVzIn0pOwotICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAg
ICByZXR1cm4gJHtuYW1lc3BhY2VNYXliZX1nZXRTdGF0aWNWYWx1ZVNsb3Q8JGNsYXNzTmFtZSwg
QmFzZT4oZXhlYywgaW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eU5hbWUsIHNsb3QpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNs
b3RJbXBsLCAiICAgIHJldHVybiAke25hbWVzcGFjZU1heWJlfWdldFN0YXRpY1ZhbHVlU2xvdDwk
Y2xhc3NOYW1lLCBCYXNlPihleGVjLCAqaW5mbygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLCB0aGlz
T2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgIHJldHVybiAke25hbWVz
cGFjZU1heWJlfWdldFN0YXRpY1ZhbHVlU2xvdDwkY2xhc3NOYW1lLCBCYXNlPihleGVjLCAiIC4g
aGFzaFRhYmxlQWNjZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9T
dGF0aWNUYWJsZXMifSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUs
IHNsb3QpO1xuIik7CiAgICAgICAgIH0KQEAgLTE2MjUsOSArMTYyNSw5IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCVjb25kaXRp
b25hbHMpOwogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05v
U3RhdGljVGFibGVzIn0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29u
c3QgSGFzaFRhYmxlKiBnZXQke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZShFeGVjU3RhdGUqIGV4
ZWMpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgSGFzaFRh
YmxlJiBnZXQke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+dm0oKSwg
JiR7Y2xhc3NOYW1lfVByb3RvdHlwZVRhYmxlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT52bSgpLCAk
e2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImNvbnN0IENsYXNzSW5m
byAke2NsYXNzTmFtZX1Qcm90b3R5cGU6OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRlcmZhY2VO
YW1lfVByb3RvdHlwZVwiLCAmQmFzZTo6c19pbmZvLCAwLCBnZXQke2NsYXNzTmFtZX1Qcm90b3R5
cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRSgke2NsYXNzTmFtZX1Qcm90b3R5cGUpIH07XG5c
biIpOwogICAgIH0gZWxzZSB7CkBAIC0xNjY5LDkgKzE2NjksOSBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogCiAgICAgIyAtIEluaXRpYWxpemUgc3RhdGljIENsYXNzSW5mbyBvYmplY3QK
ICAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJKU05vU3RhdGljVGFibGVzIn0pIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJzdGF0aWMgY29uc3QgSGFzaFRhYmxlKiBnZXQke2NsYXNzTmFtZX1UYWJsZShFeGVjU3RhdGUq
IGV4ZWMpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgSGFz
aFRhYmxlJiBnZXQke2NsYXNzTmFtZX1UYWJsZShFeGVjU3RhdGUqIGV4ZWMpXG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERhdGEoZXhlYy0+dm0oKSwgJiR7Y2xh
c3NOYW1lfVRhYmxlKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gZ2V0SGFzaFRhYmxlRm9yR2xvYmFsRGF0YShleGVjLT52bSgpLCAke2NsYXNzTmFtZX1UYWJs
ZSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0KIApA
QCAtNDA2MCw5ICs0MDYwLDkgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2Rz
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU05vU3RhdGljVGFi
bGVzIn0pIHsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBjb25zdCBI
YXNoVGFibGUqIGdldCR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUoRXhlY1N0YXRlKiBleGVj
KVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJzdGF0aWMgY29uc3QgSGFz
aFRhYmxlJiBnZXQke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfVRhYmxlKEV4ZWNTdGF0ZSogZXhlYylc
biIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7Ci0gICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckdsb2JhbERh
dGEoZXhlYy0+dm0oKSwgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUpO1xuIik7CisgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldEhhc2hUYWJsZUZvckds
b2JhbERhdGEoZXhlYy0+dm0oKSwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICJjb25zdCBDbGFzc0luZm8gJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX06OnNfaW5mbyA9IHsgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yXCIsICZC
YXNlOjpzX2luZm8sIDAsIGdldCR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIENSRUFURV9N
RVRIT0RfVEFCTEUoJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKSB9O1xuXG4iKTsKICAgICAgICAgfSBl
bHNlIHsK
</data>
<flag name="review"
          id="232890"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>