<?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>163624</bug_id>
          
          <creation_ts>2016-10-18 14:58:10 -0700</creation_ts>
          <short_desc>convertDictionary&lt;&gt;() no longer needs to return an Optional&lt;&gt; type</short_desc>
          <delta_ts>2016-10-18 16:21:43 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>163188</dependson>
          <blocked>163611</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1241631</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-18 14:58:10 -0700</bug_when>
    <thetext>convertDictionary&lt;&gt;() no longer needs to return an Optional&lt;&gt; type now that our dictionary structures are all default constructible after &lt;https://trac.webkit.org/changeset/206974&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241633</commentid>
    <comment_count>1</comment_count>
      <attachid>291991</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-18 15:00:14 -0700</bug_when>
    <thetext>Created attachment 291991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241671</commentid>
    <comment_count>2</comment_count>
      <attachid>291991</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-18 16:21:38 -0700</bug_when>
    <thetext>Comment on attachment 291991
Patch

Clearing flags on attachment: 291991

Committed r207498: &lt;http://trac.webkit.org/changeset/207498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241672</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-18 16:21:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291991</attachid>
            <date>2016-10-18 15:00:14 -0700</date>
            <delta_ts>2016-10-18 16:21:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163624-20161018145639.patch</filename>
            <type>text/plain</type>
            <size>45497</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE1ZmEyNzgzZGE5ZGM2
ODkzZjYyZmJkZDQ1N2RhMjU0ZjIzNTk1Zi4uNjljOWFjMGYwYWJkYTYyNjg0MzFkZjJiYWNiZTVk
NTZlZDYzMzdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE2LTEwLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgY29udmVydERpY3Rpb25hcnk8
PigpIG5vIGxvbmdlciBuZWVkcyB0byByZXR1cm4gYW4gT3B0aW9uYWw8PiB0eXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2MjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBjb252ZXJ0RGljdGlvbmFy
eTw+KCkgbm8gbG9uZ2VyIG5lZWRzIHRvIHJldHVybiBhbiBPcHRpb25hbDw+IHR5cGUgbm93Cisg
ICAgICAgIHRoYXQgb3VyIGRpY3Rpb25hcnkgc3RydWN0dXJlcyBhcmUgYWxsIGRlZmF1bHQgY29u
c3RydWN0aWJsZSBhZnRlcgorICAgICAgICA8aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzIwNjk3ND4uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdl
bmVyYXRlRGljdGlvbmFyeUhlYWRlckNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVEaWN0aW9u
YXJ5SW1wbGVtZW50YXRpb25Db250ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RGljdGlvbmFyeTxUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdD4pOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5Pik6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5v
dFRvbGVyYXRlTnVsbD4pOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydERpY3Rpb25hcnk8VGVz
dE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+KToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnREaWN0aW9uYXJ5PEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lPik6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5Pik6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpDaGlsZERpY3Rp
b25hcnk+KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0
aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25h
cnlJbXBsTmFtZT4pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dGFuZGFsb25lRGljdGlvbmFyeS5oOgorCiAyMDE2LTEwLTE4ICBEZWFuIEphY2tzb24gIDxkaW5v
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgZXh0ZW5k
ZWQgY29sb3JzIHRvIFdlYkNvcmU6OkNvbG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydC5oCmluZGV4IGFmNjA0M2E4MzkwYjc5NzZlOTNmMWQxYmEzZjQ3YWM5NDMyMDYw
NGMuLjExYTk0N2QyM2Y0YzBlNWVjODc2Yjg0OWFkNmVmZmE4OTZhZmQxOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCkBAIC00Miw3ICs0Miw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IEVuYWJsZUlmTm90SW50ZWdyYWxUeXBlPFQ+IGNvbnZlcnQoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFbmFibGVJZkludGVncmFs
VHlwZTxUPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBJbnRlZ2VyQ29u
dmVyc2lvbkNvbmZpZ3VyYXRpb24gPSBOb3JtYWxDb252ZXJzaW9uKTsKIAogLy8gU3BlY2lhbGl6
ZWQgYnkgZ2VuZXJhdGVkIGNvZGUgZm9yIElETCBkaWN0aW9uYXJ5IGNvbnZlcnNpb24uCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBPcHRpb25hbDxUPiBjb252ZXJ0RGljdGlvbmFyeShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnREaWN0
aW9uYXJ5KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIAogLy8gU3BlY2lhbGl6ZWQg
YnkgZ2VuZXJhdGVkIGNvZGUgZm9yIElETCBlbnVtZXJhdGlvbiBjb252ZXJzaW9uLgogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gT3B0aW9uYWw8VD4gcGFyc2VFbnVtZXJhdGlvbihKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDgzMmNiYjIwYTQzMWY3MDlmY2RiNzA4MDM4MDhk
YjRhMDk1ZmNkZWQuLmRkYTQ3YjFmY2MzYTg1YWMwZjg4NzdlZTkwMDk2ZWRhOTg0NDkwZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5SGVhZGVyQ29u
dGVudAogICAgIG15ICRyZXN1bHQgPSAiIjsKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZGljdGlvbmFyeSk7CiAg
ICAgJHJlc3VsdCAuPSAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwotICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gT3B0aW9uYWw8JGNsYXNzTmFt
ZT4gY29udmVydERpY3Rpb25hcnk8JGNsYXNzTmFtZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUpO1xuXG4iOworICAgICRyZXN1bHQgLj0gInRlbXBsYXRlPD4gJGNsYXNzTmFtZSBjb252
ZXJ0RGljdGlvbmFyeTwkY2xhc3NOYW1lPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7
XG5cbiI7CiAgICAgJHJlc3VsdCAuPSAiI2VuZGlmXG5cbiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgIHJldHVybiAkcmVzdWx0OwogfQpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgc3ViIEdlbmVy
YXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudAogICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJKU0RPTUNvbnZlcnQuaCIpOwogCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2Vi
aWRsLyNlcy1kaWN0aW9uYXJ5Ci0gICAgJHJlc3VsdCAuPSAidGVtcGxhdGU8PiBPcHRpb25hbDwk
Y2xhc3NOYW1lPiBjb252ZXJ0RGljdGlvbmFyeTwkY2xhc3NOYW1lPihFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKVxuIjsKKyAgICAkcmVzdWx0IC49ICJ0ZW1wbGF0ZTw+ICRjbGFzc05h
bWUgY29udmVydERpY3Rpb25hcnk8JGNsYXNzTmFtZT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1
ZSB2YWx1ZSlcbiI7CiAgICAgJHJlc3VsdCAuPSAie1xuIjsKICAgICAkcmVzdWx0IC49ICIgICAg
Vk0mIHZtID0gc3RhdGUudm0oKTtcbiI7CiAgICAgJHJlc3VsdCAuPSAiICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIjsKQEAgLTEwOTEsMTQgKzEwOTEsMTQg
QEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyeUltcGxlbWVudGF0aW9uQ29udGVudAogICAgICMgMS4g
SWYgVHlwZShWKSBpcyBub3QgVW5kZWZpbmVkLCBOdWxsIG9yIE9iamVjdCwgdGhlbiB0aHJvdyBh
IFR5cGVFcnJvci4KICAgICAkcmVzdWx0IC49ICIgICAgaWYgKFVOTElLRUxZKCFpc051bGxPclVu
ZGVmaW5lZCAmJiAhb2JqZWN0KSkge1xuIjsKICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7XG4iOwotICAgICRyZXN1bHQgLj0gIiAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7XG4iOworICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmV0dXJuIHsg
fTtcbiI7CiAgICAgJHJlc3VsdCAuPSAiICAgIH1cbiI7CiAKICAgICAjIDIuIElmIFYgaXMgYSBu
YXRpdmUgUmVnRXhwIG9iamVjdCwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4KICAgICAjIEZJWE1F
OiBUaGlzIFJlZ0V4cCBzcGVjaWFsIGhhbmRsaW5nIGlzIGxpa2VseSB0byBnbyBhd2F5IGluIHRo
ZSBzcGVjaWZpY2F0aW9uLgogICAgICRyZXN1bHQgLj0gIiAgICBpZiAoVU5MSUtFTFkob2JqZWN0
ICYmIG9iamVjdC0+dHlwZSgpID09IFJlZ0V4cE9iamVjdFR5cGUpKSB7XG4iOwogICAgICRyZXN1
bHQgLj0gIiAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTtcbiI7Ci0g
ICAgJHJlc3VsdCAuPSAiICAgICAgICByZXR1cm4gTnVsbG9wdDtcbiI7CisgICAgJHJlc3VsdCAu
PSAiICAgICAgICByZXR1cm4geyB9O1xuIjsKICAgICAkcmVzdWx0IC49ICIgICAgfVxuIjsKIAog
ICAgICMgMy4gTGV0IGRpY3QgYmUgYW4gZW1wdHkgZGljdGlvbmFyeSB2YWx1ZSBvZiB0eXBlIEQ7
IGV2ZXJ5IGRpY3Rpb25hcnkgbWVtYmVyIGlzIGluaXRpYWxseSBjb25zaWRlcmVkIHRvIGJlIG5v
dCBwcmVzZW50LgpAQCAtMTEzOSwxNiArMTEzOSw4IEBAIHN1YiBHZW5lcmF0ZURpY3Rpb25hcnlJ
bXBsZW1lbnRhdGlvbkNvbnRlbnQKIAogICAgICAgICAgICAgIyA1LjMuIElmIHZhbHVlIGlzIG5v
dCB1bmRlZmluZWQsIHRoZW46CiAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgaWYgKCEke2tl
eX1WYWx1ZS5pc1VuZGVmaW5lZCgpKSB7XG4iOwotCi0gICAgICAgICAgICAjIEZJWE1FOiBXZSBz
aG91bGQgZmlndXJlIG91dCBhIHdheSB0byBtZXJnZSB0aGVzZSB0d28gY2FzZXMuCi0gICAgICAg
ICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRGljdGlvbmFyeVR5cGUoJGlkbFR5cGUtPm5hbWUp
KSB7Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICBhdXRvICR7a2V5fU9wdGlv
bmFsID0gY29udmVydDwke0lETFR5cGV9PihzdGF0ZSwgJHtrZXl9VmFsdWUpO1xuIjsKLSAgICAg
ICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgTnVsbG9wdCk7XG4iOwotICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICAgICAg
cmVzdWx0LiRrZXkgPSAke2tleX1PcHRpb25hbC52YWx1ZSgpO1xuIjsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXN1bHQuJGtleSA9
IGNvbnZlcnQ8JHtJRExUeXBlfT4oc3RhdGUsICR7a2V5fVZhbHVlKTtcbiI7Ci0gICAgICAgICAg
ICAgICAgJHJlc3VsdCAuPSAiICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IE51bGxvcHQpO1xuIjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRyZXN1bHQgLj0gIiAg
ICAgICAgcmVzdWx0LiRrZXkgPSBjb252ZXJ0PCR7SURMVHlwZX0+KHN0YXRlLCAke2tleX1WYWx1
ZSk7XG4iOworICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7XG4iOwogCiAgICAgICAgICAgICAjIFZhbHVlIGlzIHVuZGVm
aW5lZC4KICAgICAgICAgICAgICMgNS40LiBPdGhlcndpc2UsIGlmIHZhbHVlIGlzIHVuZGVmaW5l
ZCBidXQgdGhlIGRpY3Rpb25hcnkgbWVtYmVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIHRoZW46CkBA
IC0xMTU5LDcgKzExNTEsNyBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25D
b250ZW50CiAgICAgICAgICAgICAgICAgIyA1LjUuIE90aGVyd2lzZSwgaWYgdmFsdWUgaXMgdW5k
ZWZpbmVkIGFuZCB0aGUgZGljdGlvbmFyeSBtZW1iZXIgaXMgYSByZXF1aXJlZCBkaWN0aW9uYXJ5
IG1lbWJlciwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4KICAgICAgICAgICAgICAgICAkcmVzdWx0
IC49ICIgICAgfSBlbHNlIHtcbiI7CiAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpO1xuIjsKLSAgICAgICAgICAgICAg
ICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVybiBOdWxsb3B0O1xuIjsKKyAgICAgICAgICAgICAg
ICAkcmVzdWx0IC49ICIgICAgICAgIHJldHVybiB7IH07XG4iOwogICAgICAgICAgICAgICAgICRy
ZXN1bHQgLj0gIiAgICB9XG4iOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAkcmVzdWx0IC49ICIgICAgfVxuIjsKQEAgLTExNjcsNyArMTE1OSw3IEBAIHN1YiBHZW5lcmF0
ZURpY3Rpb25hcnlJbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgfQogICAgIH0KIAotICAg
ICRyZXN1bHQgLj0gIiAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpO1xuIjsKKyAgICAkcmVzdWx0
IC49ICIgICAgcmV0dXJuIHJlc3VsdDtcbiI7CiAgICAgJHJlc3VsdCAuPSAifVxuXG4iOwogICAg
ICRyZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDNjNDgxMTY5NjUzZDU2YTU3ZmQ2Mzlh
NTg1YWZiNTU0NzIxNjExNWUuLjQwMmM1ZWM1OTk5YzM0YWZkMDdiZWZjZTYyODI0ZTlmODEwZWFl
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0
ZTw+IE9wdGlvbmFsPFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0PiBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKK3RlbXBsYXRlPD4gVGVzdEV2ZW50Q29uc3RydWN0b3I6OkluaXQgY29udmVydERpY3Rp
b25hcnk8VGVzdEV2ZW50Q29uc3RydWN0b3I6OkluaXQ+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUudm0oKTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQxLDQ0ICs0MSw0NCBAQCB0ZW1wbGF0
ZTw+IE9wdGlvbmFsPFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0PiBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0RXZlbnRDb25zdAogICAgIGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8g
bnVsbHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JV
bmRlZmluZWQgJiYgIW9iamVjdCkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0
aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogICAgIGlmIChVTkxJS0VMWShvYmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVn
RXhwT2JqZWN0VHlwZSkpIHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Nj
b3BlKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0IHJlc3VsdDsKICAgICBKU1ZhbHVlIGJ1
YmJsZXNWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJidWJibGVzIikpOwog
ICAgIGlmICghYnViYmxlc1ZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LmJ1
YmJsZXMgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBidWJibGVzVmFsdWUpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJl
c3VsdC5idWJibGVzID0gZmFsc2U7CiAgICAgSlNWYWx1ZSBjYW5jZWxhYmxlVmFsdWUgPSBpc051
bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY2FuY2VsYWJsZSIpKTsKICAgICBpZiAoIWNhbmNl
bGFibGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5jYW5jZWxhYmxlID0g
Y29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgY2FuY2VsYWJsZVZhbHVlKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQu
Y2FuY2VsYWJsZSA9IGZhbHNlOwogICAgIEpTVmFsdWUgY29tcG9zZWRWYWx1ZSA9IGlzTnVsbE9y
VW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJjb21wb3NlZCIpKTsKICAgICBpZiAoIWNvbXBvc2VkVmFs
dWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQuY29tcG9zZWQgPSBjb252ZXJ0PElE
TEJvb2xlYW4+KHN0YXRlLCBjb21wb3NlZFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQuY29tcG9zZWQgPSBm
YWxzZTsKICAgICBKU1ZhbHVlIGF0dHIyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5k
ZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0
YXRlLCAiYXR0cjIiKSk7CiAgICAgaWYgKCFhdHRyMlZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgcmVzdWx0LmF0dHIyID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCBhdHRyMlZh
bHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxz
ZQogICAgICAgICByZXN1bHQuYXR0cjIgPSAiIjsKICAgICBKU1ZhbHVlIGF0dHIzVmFsdWUgPSBp
c051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYXR0cjMiKSk7CiAgICAgaWYgKCFhdHRyM1Zh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LmF0dHIzID0gY29udmVydDxJRExE
T01TdHJpbmc+KHN0YXRlLCBhdHRyM1ZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQuYXR0cjMgPSAiIjsKLSAg
ICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIEF0
dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4IDZhZGFkNmNkZWQy
MTBjNGFkOTZkYTU2OTk4N2JlMTUyODEyODkzYTIuLjZlNWRhZWM3NDI0MWQ3YjJiODQ1ZTlmMTIw
ZDY4Y2Y1YTRhODEyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAtNzEs
NyArNzEsNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZwogdGVtcGxhdGU8PiBzdHJ1Y3QgSlNE
T01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RFdmVudENvbnN0cnVjdG9yPiB7CiAgICAgdXNp
bmcgV3JhcHBlckNsYXNzID0gSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcjsKIH07Ci10ZW1wbGF0ZTw+
IE9wdGlvbmFsPFRlc3RFdmVudENvbnN0cnVjdG9yOjpJbml0PiBjb252ZXJ0RGljdGlvbmFyeTxU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUp
OwordGVtcGxhdGU8PiBUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdCBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SW5pdD4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOwogCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggYzUyYTM5MGYw
MWEyMDQ2ZDdlZTllMTFhNjVhM2RjYjEzZDAxYzY4MC4uYWRiZjY5NzQzOTEwZWJlMzI1MWMzYzAz
YTRhNDY5YTA0M2U1NzBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQ1OSw3ICs0NTksNyBAQCB0ZW1wbGF0
ZTw+IGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6Q29uZmlk
ZW5jZT4oKQogICAgIHJldHVybiAiXCJoaWdoXCIsIFwia2luZGEtbG93XCIiOwogfQogCi10ZW1w
bGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkRpY3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5PFRl
c3RPYmo6OkRpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1w
bGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGlj
dGlvbmFyeT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBWTSYgdm0g
PSBzdGF0ZS52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwpAQCAtNDY3LDIyOCArNDY3LDIyNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6
OkRpY3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnk+KAogICAg
IGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9i
amVjdCgpOwogICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmIChVTkxJ
S0VMWShvYmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIFRlc3RPYmo6OkRpY3Rp
b25hcnkgcmVzdWx0OwogICAgIEpTVmFsdWUgYW55VHlwZWRlZlZhbHVlVmFsdWUgPSBpc051bGxP
clVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYW55VHlwZWRlZlZhbHVlIikpOwogICAgIGlmICghYW55
VHlwZWRlZlZhbHVlVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQuYW55VHlw
ZWRlZlZhbHVlID0gY29udmVydDxJRExBbnk+KHN0YXRlLCBhbnlUeXBlZGVmVmFsdWVWYWx1ZSk7
Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UKICAg
ICAgICAgcmVzdWx0LmFueVR5cGVkZWZWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgSlNWYWx1
ZSBhbnlWYWx1ZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2Jq
ZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImFueVZhbHVl
IikpOwogICAgIGlmICghYW55VmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJl
c3VsdC5hbnlWYWx1ZSA9IGNvbnZlcnQ8SURMQW55PihzdGF0ZSwgYW55VmFsdWVWYWx1ZSk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UKICAgICAg
ICAgcmVzdWx0LmFueVZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBKU1ZhbHVlIGFueVZhbHVl
V2l0aE51bGxEZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkg
OiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiYW55
VmFsdWVXaXRoTnVsbERlZmF1bHQiKSk7CiAgICAgaWYgKCFhbnlWYWx1ZVdpdGhOdWxsRGVmYXVs
dFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LmFueVZhbHVlV2l0aE51bGxE
ZWZhdWx0ID0gY29udmVydDxJRExBbnk+KHN0YXRlLCBhbnlWYWx1ZVdpdGhOdWxsRGVmYXVsdFZh
bHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxz
ZQogICAgICAgICByZXN1bHQuYW55VmFsdWVXaXRoTnVsbERlZmF1bHQgPSBqc051bGwoKTsKICAg
ICBKU1ZhbHVlIGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBq
c1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgImJvb2xlYW5XaXRoRGVmYXVsdCIpKTsKICAgICBpZiAoIWJvb2xlYW5XaXRoRGVm
YXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LmJvb2xlYW5XaXRoRGVm
YXVsdCA9IGNvbnZlcnQ8SURMQm9vbGVhbj4oc3RhdGUsIGJvb2xlYW5XaXRoRGVmYXVsdFZhbHVl
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQog
ICAgICAgICByZXN1bHQuYm9vbGVhbldpdGhEZWZhdWx0ID0gZmFsc2U7CiAgICAgSlNWYWx1ZSBi
b29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmlu
ZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUs
ICJib29sZWFuV2l0aG91dERlZmF1bHQiKSk7CiAgICAgaWYgKCFib29sZWFuV2l0aG91dERlZmF1
bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5ib29sZWFuV2l0aG91dERl
ZmF1bHQgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBib29sZWFuV2l0aG91dERlZmF1bHRW
YWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAg
ICAgSlNWYWx1ZSBidWZmZXJTb3VyY2VWYWx1ZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBq
c1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgImJ1ZmZlclNvdXJjZVZhbHVlIikpOwogICAgIGlmICghYnVmZmVyU291cmNlVmFs
dWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5idWZmZXJTb3VyY2VWYWx1
ZSA9IGNvbnZlcnQ8SURMQnVmZmVyU291cmNlPihzdGF0ZSwgYnVmZmVyU291cmNlVmFsdWVWYWx1
ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
SlNWYWx1ZSBkaWN0aW9uYXJ5TWVtYmVyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5k
ZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0
YXRlLCAiZGljdGlvbmFyeU1lbWJlciIpKTsKICAgICBpZiAoIWRpY3Rpb25hcnlNZW1iZXJWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGF1dG8gZGljdGlvbmFyeU1lbWJlck9wdGlvbmFs
ID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9s
ZXJhdGVOdWxsPj4oc3RhdGUsIGRpY3Rpb25hcnlNZW1iZXJWYWx1ZSk7Ci0gICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7Ci0gICAgICAgIHJlc3VsdC5kaWN0
aW9uYXJ5TWVtYmVyID0gZGljdGlvbmFyeU1lbWJlck9wdGlvbmFsLnZhbHVlKCk7CisgICAgICAg
IHJlc3VsdC5kaWN0aW9uYXJ5TWVtYmVyID0gY29udmVydDxJRExEaWN0aW9uYXJ5PFRlc3RPYmo6
OkRpY3Rpb25hcnlUaGF0U2hvdWxkVG9sZXJhdGVOdWxsPj4oc3RhdGUsIGRpY3Rpb25hcnlNZW1i
ZXJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9CiAgICAgSlNWYWx1ZSBlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRWYWx1ZSA9IGlz
TnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHQi
KSk7CiAgICAgaWYgKCFlbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CiAgICAgICAgIHJlc3VsdC5lbnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHQgPSBjb252
ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4oc3RhdGUsIGVudW1lcmF0aW9u
VmFsdWVXaXRoRGVmYXVsdFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQuZW51bWVyYXRpb25WYWx1ZVdpdGhE
ZWZhdWx0ID0gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTE7CiAgICAgSlNWYWx1ZSBlbnVt
ZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmlu
ZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZzdGF0ZSwgImVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0Iikp
OwogICAgIGlmICghZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1bHRWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5lbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5
U3RyaW5nRGVmYXVsdCA9IGNvbnZlcnQ8SURMRW51bWVyYXRpb248VGVzdE9iajo6RW51bVR5cGU+
PihzdGF0ZSwgZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1bHRWYWx1ZSk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UKICAgICAg
ICAgcmVzdWx0LmVudW1lcmF0aW9uVmFsdWVXaXRoRW1wdHlTdHJpbmdEZWZhdWx0ID0gVGVzdE9i
ajo6RW51bVR5cGU6OkVtcHR5U3RyaW5nOwogICAgIEpTVmFsdWUgZW51bWVyYXRpb25WYWx1ZVdp
dGhvdXREZWZhdWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBv
YmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZW51bWVy
YXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0IikpOwogICAgIGlmICghZW51bWVyYXRpb25WYWx1ZVdp
dGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQuZW51bWVy
YXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0ID0gY29udmVydDxJRExFbnVtZXJhdGlvbjxUZXN0T2Jq
OjpFbnVtVHlwZT4+KHN0YXRlLCBlbnVtZXJhdGlvblZhbHVlV2l0aG91dERlZmF1bHRWYWx1ZSk7
Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNW
YWx1ZSBpbnRlZ2VyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBv
YmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiaW50ZWdl
ciIpKTsKICAgICBpZiAoIWludGVnZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJl
c3VsdC5pbnRlZ2VyID0gY29udmVydDxJRExMb25nPihzdGF0ZSwgaW50ZWdlclZhbHVlKTsKLSAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVl
IGludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5l
ZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwg
ImludGVnZXJXaXRoRGVmYXVsdCIpKTsKICAgICBpZiAoIWludGVnZXJXaXRoRGVmYXVsdFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LmludGVnZXJXaXRoRGVmYXVsdCA9IGNv
bnZlcnQ8SURMTG9uZz4oc3RhdGUsIGludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKLSAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1
bHQuaW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKICAgICBKU1ZhbHVlIGxhcmdlSW50ZWdlclZhbHVl
ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImxhcmdlSW50ZWdlciIpKTsKICAgICBp
ZiAoIWxhcmdlSW50ZWdlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0Lmxh
cmdlSW50ZWdlciA9IGNvbnZlcnQ8SURMTG9uZ0xvbmc+KHN0YXRlLCBsYXJnZUludGVnZXJWYWx1
ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
SlNWYWx1ZSBsYXJnZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgImxhcmdlSW50ZWdlcldpdGhEZWZhdWx0IikpOwogICAgIGlmICghbGFyZ2VJ
bnRlZ2VyV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5s
YXJnZUludGVnZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8SURMTG9uZ0xvbmc+KHN0YXRlLCBsYXJn
ZUludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQubGFyZ2VJbnRlZ2VyV2l0aERl
ZmF1bHQgPSAwOwogICAgIEpTVmFsdWUgbnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHRWYWx1ZSA9
IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJudWxsYWJsZUludGVnZXJXaXRoRGVmYXVs
dCIpKTsKICAgICBpZiAoIW51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewogICAgICAgICByZXN1bHQubnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1bHQgPSBjb252
ZXJ0PElETE51bGxhYmxlPElETExvbmc+PihzdGF0ZSwgbnVsbGFibGVJbnRlZ2VyV2l0aERlZmF1
bHRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9w
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9
IGVsc2UKICAgICAgICAgcmVzdWx0Lm51bGxhYmxlSW50ZWdlcldpdGhEZWZhdWx0ID0gTnVsbG9w
dDsKICAgICBKU1ZhbHVlIG51bGxhYmxlTm9kZVZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBq
c1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgIm51bGxhYmxlTm9kZSIpKTsKICAgICBpZiAoIW51bGxhYmxlTm9kZVZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0Lm51bGxhYmxlTm9kZSA9IGNvbnZlcnQ8SURM
TnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4oc3RhdGUsIG51bGxhYmxlTm9kZVZhbHVlKTsK
LSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQogICAg
ICAgICByZXN1bHQubnVsbGFibGVOb2RlID0gbnVsbHB0cjsKICAgICBKU1ZhbHVlIG51bGxhYmxl
U3RyaW5nV2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQo
KSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJu
dWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0IikpOwogICAgIGlmICghbnVsbGFibGVTdHJpbmdXaXRo
RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0Lm51bGxhYmxlU3Ry
aW5nV2l0aERlZmF1bHQgPSBjb252ZXJ0PElETE51bGxhYmxlPElETERPTVN0cmluZz4+KHN0YXRl
LCBudWxsYWJsZVN0cmluZ1dpdGhEZWZhdWx0VmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdC5udWxsYWJsZVN0
cmluZ1dpdGhEZWZhdWx0ID0gU3RyaW5nKCk7CiAgICAgSlNWYWx1ZSBudWxsYWJsZVVuaW9uTWVt
YmVyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAibnVsbGFibGVVbmlvbk1l
bWJlciIpKTsKICAgICBpZiAoIW51bGxhYmxlVW5pb25NZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CiAgICAgICAgIHJlc3VsdC5udWxsYWJsZVVuaW9uTWVtYmVyID0gY29udmVydDxJRExOdWxs
YWJsZTxJRExVbmlvbjxJRExMb25nLCBJRExJbnRlcmZhY2U8Tm9kZT4+Pj4oc3RhdGUsIG51bGxh
YmxlVW5pb25NZW1iZXJWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgTnVsbG9wdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0Lm51bGxhYmxlVW5pb25NZW1iZXIgPSBO
dWxsb3B0OwogICAgIEpTVmFsdWUgcmVzdHJpY3RlZERvdWJsZVZhbHVlID0gaXNOdWxsT3JVbmRl
ZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKCZzdGF0ZSwgInJlc3RyaWN0ZWREb3VibGUiKSk7CiAgICAgaWYgKCFyZXN0cmlj
dGVkRG91YmxlVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQucmVzdHJpY3Rl
ZERvdWJsZSA9IGNvbnZlcnQ8SURMRG91YmxlPihzdGF0ZSwgcmVzdHJpY3RlZERvdWJsZVZhbHVl
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBK
U1ZhbHVlIHJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmlu
ZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZzdGF0ZSwgInJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpKTsKICAgICBpZiAo
IXJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAg
ICAgcmVzdWx0LnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8SURMRG91Ymxl
PihzdGF0ZSwgcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdC5y
ZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQgPSAwOwogICAgIEpTVmFsdWUgcmVzdHJpY3RlZEZs
b2F0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicmVzdHJpY3RlZEZsb2F0
IikpOwogICAgIGlmICghcmVzdHJpY3RlZEZsb2F0VmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAg
ICAgICByZXN1bHQucmVzdHJpY3RlZEZsb2F0ID0gY29udmVydDxJRExGbG9hdD4oc3RhdGUsIHJl
c3RyaWN0ZWRGbG9hdFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUg
PSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAicmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1
bHQiKSk7CiAgICAgaWYgKCFyZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKICAgICAgICAgcmVzdWx0LnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0ID0gY29u
dmVydDxJRExGbG9hdD4oc3RhdGUsIHJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0VmFsdWUpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHJlc3VsdC5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCA9IDA7CiAgICAgSlNWYWx1ZSBz
ZXF1ZW5jZU9mU3RyaW5nc1ZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgp
IDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNl
cXVlbmNlT2ZTdHJpbmdzIikpOwogICAgIGlmICghc2VxdWVuY2VPZlN0cmluZ3NWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5zZXF1ZW5jZU9mU3RyaW5ncyA9IGNvbnZlcnQ8
SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oc3RhdGUsIHNlcXVlbmNlT2ZTdHJpbmdzVmFsdWUp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpT
VmFsdWUgc21hbGxJbnRlZ2VyQ2xhbXBlZFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1Vu
ZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgInNtYWxsSW50ZWdlckNsYW1wZWQiKSk7CiAgICAgaWYgKCFzbWFsbEludGVnZXJDbGFt
cGVkVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQuc21hbGxJbnRlZ2VyQ2xh
bXBlZCA9IGNvbnZlcnQ8SURMQnl0ZT4oc3RhdGUsIHNtYWxsSW50ZWdlckNsYW1wZWRWYWx1ZSk7
Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNW
YWx1ZSBzbWFsbEludGVnZXJXaXRoRGVmYXVsdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBq
c1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZzdGF0ZSwgInNtYWxsSW50ZWdlcldpdGhEZWZhdWx0IikpOwogICAgIGlmICghc21hbGxJbnRl
Z2VyV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5zbWFs
bEludGVnZXJXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8SURMQnl0ZT4oc3RhdGUsIHNtYWxsSW50ZWdl
cldpdGhEZWZhdWx0VmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIEpTVmFsdWUgc21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNlZFJhbmdl
VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgm
c3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic21hbGxVbnNpZ25lZEludGVn
ZXJFbmZvcmNlZFJhbmdlIikpOwogICAgIGlmICghc21hbGxVbnNpZ25lZEludGVnZXJFbmZvcmNl
ZFJhbmdlVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQuc21hbGxVbnNpZ25l
ZEludGVnZXJFbmZvcmNlZFJhbmdlID0gY29udmVydDxJRExPY3RldD4oc3RhdGUsIHNtYWxsVW5z
aWduZWRJbnRlZ2VyRW5mb3JjZWRSYW5nZVZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHNtYWxsVW5zaWduZWRJbnRlZ2Vy
V2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9i
amVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzbWFsbFVu
c2lnbmVkSW50ZWdlcldpdGhEZWZhdWx0IikpOwogICAgIGlmICghc21hbGxVbnNpZ25lZEludGVn
ZXJXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LnNtYWxs
VW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQgPSBjb252ZXJ0PElETE9jdGV0PihzdGF0ZSwgc21h
bGxVbnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQuc21hbGxVbnNp
Z25lZEludGVnZXJXaXRoRGVmYXVsdCA9IDA7CiAgICAgSlNWYWx1ZSBzdHJpbmdXaXRoRGVmYXVs
dFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQo
JnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInN0cmluZ1dpdGhEZWZhdWx0
IikpOwogICAgIGlmICghc3RyaW5nV2l0aERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIHJlc3VsdC5zdHJpbmdXaXRoRGVmYXVsdCA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihz
dGF0ZSwgc3RyaW5nV2l0aERlZmF1bHRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzdWx0LnN0cmluZ1dpdGhEZWZh
dWx0ID0gImRlZmF1bHRTdHJpbmciOwogICAgIEpTVmFsdWUgc3RyaW5nV2l0aG91dERlZmF1bHRW
YWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzdHJpbmdXaXRob3V0RGVmYXVs
dCIpKTsKICAgICBpZiAoIXN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICByZXN1bHQuc3RyaW5nV2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PElETERPTVN0
cmluZz4oc3RhdGUsIHN0cmluZ1dpdGhvdXREZWZhdWx0VmFsdWUpOwotICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgdW5pb25NZW1iZXJW
YWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZz
dGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bmlvbk1lbWJlciIpKTsKICAg
ICBpZiAoIXVuaW9uTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQu
dW5pb25NZW1iZXIgPSBjb252ZXJ0PElETFVuaW9uPElETExvbmcsIElETEludGVyZmFjZTxOb2Rl
Pj4+KHN0YXRlLCB1bmlvbk1lbWJlclZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHVucmVzdHJpY3RlZERvdWJsZVZhbHVl
ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVucmVzdHJpY3RlZERvdWJsZSIpKTsK
ICAgICBpZiAoIXVucmVzdHJpY3RlZERvdWJsZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAg
ICAgcmVzdWx0LnVucmVzdHJpY3RlZERvdWJsZSA9IGNvbnZlcnQ8SURMVW5yZXN0cmljdGVkRG91
YmxlPihzdGF0ZSwgdW5yZXN0cmljdGVkRG91YmxlVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgdW5yZXN0cmljdGVkRG91
YmxlV2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6
IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnJl
c3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpKTsKICAgICBpZiAoIXVucmVzdHJpY3RlZERvdWJs
ZVdpdGhEZWZhdWx0VmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQudW5yZXN0
cmljdGVkRG91YmxlV2l0aERlZmF1bHQgPSBjb252ZXJ0PElETFVucmVzdHJpY3RlZERvdWJsZT4o
c3RhdGUsIHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0VmFsdWUpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdC51
bnJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCA9IDA7CiAgICAgSlNWYWx1ZSB1bnJlc3RyaWN0
ZWRGbG9hdFZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0
LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVucmVzdHJpY3Rl
ZEZsb2F0IikpOwogICAgIGlmICghdW5yZXN0cmljdGVkRmxvYXRWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CiAgICAgICAgIHJlc3VsdC51bnJlc3RyaWN0ZWRGbG9hdCA9IGNvbnZlcnQ8SURMVW5yZXN0
cmljdGVkRmxvYXQ+KHN0YXRlLCB1bnJlc3RyaWN0ZWRGbG9hdFZhbHVlKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHVucmVzdHJp
Y3RlZEZsb2F0V2l0aERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmlu
ZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUs
ICJ1bnJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0IikpOwogICAgIGlmICghdW5yZXN0cmljdGVk
RmxvYXRXaXRoRGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LnVu
cmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQgPSBjb252ZXJ0PElETFVucmVzdHJpY3RlZEZsb2F0
PihzdGF0ZSwgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdFZhbHVlKTsKLSAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0gZWxzZQogICAgICAgICByZXN1bHQu
dW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCA9IDA7CiAgICAgSlNWYWx1ZSB1bnNpZ25lZElu
dGVnZXJWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnNpZ25lZEludGVn
ZXIiKSk7CiAgICAgaWYgKCF1bnNpZ25lZEludGVnZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIHJlc3VsdC51bnNpZ25lZEludGVnZXIgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZz4o
c3RhdGUsIHVuc2lnbmVkSW50ZWdlclZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHVuc2lnbmVkSW50ZWdlcldpdGhEZWZh
dWx0VmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAidW5zaWduZWRJbnRlZ2Vy
V2l0aERlZmF1bHQiKSk7CiAgICAgaWYgKCF1bnNpZ25lZEludGVnZXJXaXRoRGVmYXVsdFZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LnVuc2lnbmVkSW50ZWdlcldpdGhEZWZh
dWx0ID0gY29udmVydDxJRExVbnNpZ25lZExvbmc+KHN0YXRlLCB1bnNpZ25lZEludGVnZXJXaXRo
RGVmYXVsdFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBO
dWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwog
ICAgIH0gZWxzZQogICAgICAgICByZXN1bHQudW5zaWduZWRJbnRlZ2VyV2l0aERlZmF1bHQgPSAw
OwogICAgIEpTVmFsdWUgdW5zaWduZWRMYXJnZUludGVnZXJWYWx1ZSA9IGlzTnVsbE9yVW5kZWZp
bmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsICJ1bnNpZ25lZExhcmdlSW50ZWdlciIpKTsKICAgICBpZiAoIXVuc2ln
bmVkTGFyZ2VJbnRlZ2VyVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQudW5z
aWduZWRMYXJnZUludGVnZXIgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KHN0YXRlLCB1
bnNpZ25lZExhcmdlSW50ZWdlclZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHVuc2lnbmVkTGFyZ2VJbnRlZ2VyV2l0aERl
ZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnNpZ25lZExhcmdl
SW50ZWdlcldpdGhEZWZhdWx0IikpOwogICAgIGlmICghdW5zaWduZWRMYXJnZUludGVnZXJXaXRo
RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0LnVuc2lnbmVkTGFy
Z2VJbnRlZ2VyV2l0aERlZmF1bHQgPSBjb252ZXJ0PElETFVuc2lnbmVkTG9uZ0xvbmc+KHN0YXRl
LCB1bnNpZ25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0VmFsdWUpOwotICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdC51bnNp
Z25lZExhcmdlSW50ZWdlcldpdGhEZWZhdWx0ID0gMDsKLSAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9i
ajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxkTm90VG9sZXJhdGVOdWxsPihFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhh
dFNob3VsZE5vdFRvbGVyYXRlTnVsbCBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9u
YXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNjk2LDQ3ICs2OTUsNDYgQEAgdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4g
Y29udmVydERpY3Rpb24KICAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51
bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5k
ZWZpbmVkICYmICFvYmplY3QpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhy
b3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICBpZiAoVU5MSUtFTFkob2JqZWN0ICYmIG9iamVjdC0+dHlwZSgpID09IFJlZ0V4
cE9iamVjdFR5cGUpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29w
ZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
ICAgICBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbCByZXN1bHQ7
CiAgICAgSlNWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSA9IGlzTnVsbE9yVW5kZWZp
bmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmc3RhdGUsICJib29sZWFuV2l0aG91dERlZmF1bHQiKSk7CiAgICAgaWYgKCFib29s
ZWFuV2l0aG91dERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5i
b29sZWFuV2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBib29sZWFu
V2l0aG91dERlZmF1bHRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgTnVsbG9wdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBub25OdWxsYWJsZU5vZGVWYWx1ZSA9IGlzTnVsbE9y
VW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmc3RhdGUsICJub25OdWxsYWJsZU5vZGUiKSk7CiAgICAgaWYgKCFub25O
dWxsYWJsZU5vZGVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5ub25OdWxs
YWJsZU5vZGUgPSBjb252ZXJ0PElETEludGVyZmFjZTxOb2RlPj4oc3RhdGUsIG5vbk51bGxhYmxl
Tm9kZVZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxs
b3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBK
U1ZhbHVlIHJlcXVpcmVkRGljdGlvbmFyeU1lbWJlclZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQg
PyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgInJlcXVpcmVkRGljdGlvbmFyeU1lbWJlciIpKTsKICAgICBpZiAoIXJlcXVp
cmVkRGljdGlvbmFyeU1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgYXV0byBy
ZXF1aXJlZERpY3Rpb25hcnlNZW1iZXJPcHRpb25hbCA9IGNvbnZlcnQ8SURMRGljdGlvbmFyeTxU
ZXN0T2JqOjpEaWN0aW9uYXJ5Pj4oc3RhdGUsIHJlcXVpcmVkRGljdGlvbmFyeU1lbWJlclZhbHVl
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKLSAg
ICAgICAgcmVzdWx0LnJlcXVpcmVkRGljdGlvbmFyeU1lbWJlciA9IHJlcXVpcmVkRGljdGlvbmFy
eU1lbWJlck9wdGlvbmFsLnZhbHVlKCk7CisgICAgICAgIHJlc3VsdC5yZXF1aXJlZERpY3Rpb25h
cnlNZW1iZXIgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4+KHN0
YXRlLCByZXF1aXJlZERpY3Rpb25hcnlNZW1iZXJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UgewogICAgICAgICB0aHJvd1R5
cGVFcnJvcigmc3RhdGUsIHRocm93U2NvcGUpOwotICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgSlNWYWx1ZSByZXF1aXJlZEVudW1lcmF0aW9u
VmFsdWVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+
Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJyZXF1aXJlZEVudW1l
cmF0aW9uVmFsdWUiKSk7CiAgICAgaWYgKCFyZXF1aXJlZEVudW1lcmF0aW9uVmFsdWVWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5yZXF1aXJlZEVudW1lcmF0aW9uVmFsdWUg
PSBjb252ZXJ0PElETEVudW1lcmF0aW9uPFRlc3RPYmo6OkVudW1UeXBlPj4oc3RhdGUsIHJlcXVp
cmVkRW51bWVyYXRpb25WYWx1ZVZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwg
dGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KLSAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRU
b2xlcmF0ZU51bGw+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hv
dWxkVG9sZXJhdGVOdWxsPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxh
dGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbCBjb252ZXJ0RGlj
dGlvbmFyeTxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbD4oRXhlY1N0
YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzQ0LDI3
ICs3NDIsMjcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNo
b3VsZFRvbGVyYXRlTnVsbD4gY29udmVydERpY3Rpb25hcnkKICAgICBhdXRvKiBvYmplY3QgPSBp
c051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAo
VU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7CiAgICAgICAgIHRocm93
VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0Owor
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAoVU5MSUtFTFkob2JqZWN0ICYmIG9i
amVjdC0+dHlwZSgpID09IFJlZ0V4cE9iamVjdFR5cGUpKSB7CiAgICAgICAgIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KICAgICBUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZFRv
bGVyYXRlTnVsbCByZXN1bHQ7CiAgICAgSlNWYWx1ZSBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1
ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJib29sZWFuV2l0aG91dERlZmF1bHQi
KSk7CiAgICAgaWYgKCFib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
CiAgICAgICAgIHJlc3VsdC5ib29sZWFuV2l0aG91dERlZmF1bHQgPSBjb252ZXJ0PElETEJvb2xl
YW4+KHN0YXRlLCBib29sZWFuV2l0aG91dERlZmF1bHRWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBlbnVtZXJhdGlvblZh
bHVlVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiZW51bWVyYXRpb25WYWx1
ZSIpKTsKICAgICBpZiAoIWVudW1lcmF0aW9uVmFsdWVWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIHJlc3VsdC5lbnVtZXJhdGlvblZhbHVlID0gY29udmVydDxJRExFbnVtZXJhdGlvbjxU
ZXN0T2JqOjpFbnVtVHlwZT4+KHN0YXRlLCBlbnVtZXJhdGlvblZhbHVlVmFsdWUpOwotICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQotICAgIHJldHVybiBXVEZN
b3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8PiBPcHRpb25h
bDxBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZT4gY29udmVydERpY3Rpb25hcnk8QWx0ZXJuYXRlRGlj
dGlvbmFyeU5hbWU+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTw+
IEFsdGVybmF0ZURpY3Rpb25hcnlOYW1lIGNvbnZlcnREaWN0aW9uYXJ5PEFsdGVybmF0ZURpY3Rp
b25hcnlOYW1lPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC03NzIsMjcgKzc3MCwyNyBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPEFsdGVybmF0
ZURpY3Rpb25hcnlOYW1lPiBjb252ZXJ0RGljdGlvbmFyeTxBbHRlcm5hdGVEaWN0aW9uYQogICAg
IGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9i
amVjdCgpOwogICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkp
IHsKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKLSAgICAgICAg
cmV0dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmIChVTkxJ
S0VMWShvYmplY3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIEFsdGVybmF0ZURpY3Rp
b25hcnlOYW1lIHJlc3VsdDsKICAgICBKU1ZhbHVlIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVl
ID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRl
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgImJvb2xlYW5XaXRob3V0RGVmYXVsdCIp
KTsKICAgICBpZiAoIWJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
ICAgICAgICAgcmVzdWx0LmJvb2xlYW5XaXRob3V0RGVmYXVsdCA9IGNvbnZlcnQ8SURMQm9vbGVh
bj4oc3RhdGUsIGJvb2xlYW5XaXRob3V0RGVmYXVsdFZhbHVlKTsKLSAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIGVudW1lcmF0aW9uVmFs
dWVWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0
KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJlbnVtZXJhdGlvblZhbHVl
IikpOwogICAgIGlmICghZW51bWVyYXRpb25WYWx1ZVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgcmVzdWx0LmVudW1lcmF0aW9uVmFsdWUgPSBjb252ZXJ0PElETEVudW1lcmF0aW9uPFRl
c3RPYmo6OkVudW1UeXBlPj4oc3RhdGUsIGVudW1lcmF0aW9uVmFsdWVWYWx1ZSk7Ci0gICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFs
PFRlc3RPYmo6OlBhcmVudERpY3Rpb25hcnk+IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OlBh
cmVudERpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0
ZTw+IFRlc3RPYmo6OlBhcmVudERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6
UGFyZW50RGljdGlvbmFyeT4oRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAg
ICBWTSYgdm0gPSBzdGF0ZS52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtODAwLDI3ICs3OTgsMjcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxU
ZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5PiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpQYXJl
bnQKICAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1
ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFv
YmplY3QpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Ci0g
ICAgICAgIHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBp
ZiAoVU5MSUtFTFkob2JqZWN0ICYmIG9iamVjdC0+dHlwZSgpID09IFJlZ0V4cE9iamVjdFR5cGUp
KSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Ci0gICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBUZXN0T2Jq
OjpQYXJlbnREaWN0aW9uYXJ5IHJlc3VsdDsKICAgICBKU1ZhbHVlIHBhcmVudE1lbWJlcjFWYWx1
ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJwYXJlbnRNZW1iZXIxIikpOwogICAg
IGlmICghcGFyZW50TWVtYmVyMVZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgcmVzdWx0
LnBhcmVudE1lbWJlcjEgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBwYXJlbnRNZW1iZXIx
VmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQog
ICAgIEpTVmFsdWUgcGFyZW50TWVtYmVyMlZhbHVlID0gaXNOdWxsT3JVbmRlZmluZWQgPyBqc1Vu
ZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgInBhcmVudE1lbWJlcjIiKSk7CiAgICAgaWYgKCFwYXJlbnRNZW1iZXIyVmFsdWUuaXNV
bmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQucGFyZW50TWVtYmVyMiA9IGNvbnZlcnQ8SURM
Qm9vbGVhbj4oc3RhdGUsIHBhcmVudE1lbWJlcjJWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9Ci0gICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNo
aWxkRGljdGlvbmFyeT4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5
PihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQordGVtcGxhdGU8PiBUZXN0T2JqOjpD
aGlsZERpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5
PihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNJiB2bSA9IHN0YXRl
LnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBA
IC04MjgsMzQgKzgyNiwzNCBAQCB0ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNoaWxkRGlj
dGlvbmFyeT4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6Q2hpbGREaQogICAgIGF1dG8qIG9i
amVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOwog
ICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkpIHsKICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmIChVTkxJS0VMWShvYmpl
Y3QgJiYgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoJnN0YXRlLCB0aHJvd1Njb3BlKTsKLSAgICAgICAgcmV0dXJuIE51bGxvcHQ7
CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIFRlc3RPYmo6OkNoaWxkRGljdGlvbmFy
eSByZXN1bHQ7CiAgICAgSlNWYWx1ZSBwYXJlbnRNZW1iZXIxVmFsdWUgPSBpc051bGxPclVuZGVm
aW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCAicGFyZW50TWVtYmVyMSIpKTsKICAgICBpZiAoIXBhcmVudE1lbWJl
cjFWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5wYXJlbnRNZW1iZXIxID0g
Y29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgcGFyZW50TWVtYmVyMVZhbHVlKTsKLSAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcmVu
dE1lbWJlcjJWYWx1ZSA9IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVj
dC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJwYXJlbnRNZW1i
ZXIyIikpOwogICAgIGlmICghcGFyZW50TWVtYmVyMlZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKICAg
ICAgICAgcmVzdWx0LnBhcmVudE1lbWJlcjIgPSBjb252ZXJ0PElETEJvb2xlYW4+KHN0YXRlLCBw
YXJlbnRNZW1iZXIyVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIEpTVmFsdWUgY2hpbGRNZW1iZXIxVmFsdWUgPSBpc051bGxPclVuZGVm
aW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCAiY2hpbGRNZW1iZXIxIikpOwogICAgIGlmICghY2hpbGRNZW1iZXIx
VmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQuY2hpbGRNZW1iZXIxID0gY29u
dmVydDxJRExCb29sZWFuPihzdGF0ZSwgY2hpbGRNZW1iZXIxVmFsdWUpOwotICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxvcHQpOworICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgY2hpbGRNZW1i
ZXIyVmFsdWUgPSBpc051bGxPclVuZGVmaW5lZCA/IGpzVW5kZWZpbmVkKCkgOiBvYmplY3QtPmdl
dCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAiY2hpbGRNZW1iZXIyIikp
OwogICAgIGlmICghY2hpbGRNZW1iZXIyVmFsdWUuaXNVbmRlZmluZWQoKSkgewogICAgICAgICBy
ZXN1bHQuY2hpbGRNZW1iZXIyID0gY29udmVydDxJRExCb29sZWFuPihzdGF0ZSwgY2hpbGRNZW1i
ZXIyVmFsdWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIE51bGxv
cHQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAg
fQotICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
Ly8gRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggMjE3ZjRmYmU3MTRiZDNiMWNkZTAzM2UzYzY4YzM5YWUw
N2YwOTkzZi4uYmZiYTQ4MTk2NTlkNjdlNmFjOTVhYjI5ODA0OTQzMjdkMzhmYTMxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
aApAQCAtMjA3LDE3ICsyMDcsMTcgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpDb25m
aWRlbmNlPiBwYXJzZUVudW1lcmF0aW9uPFRlc3RPYmo6OkNvbmZpZGVuY2U+KEoKIHRlbXBsYXRl
PD4gVGVzdE9iajo6Q29uZmlkZW5jZSBjb252ZXJ0RW51bWVyYXRpb248VGVzdE9iajo6Q29uZmlk
ZW5jZT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8PiBjb25zdCBj
aGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkNvbmZpZGVuY2U+KCk7CiAK
LXRlbXBsYXRlPD4gT3B0aW9uYWw8VGVzdE9iajo6RGljdGlvbmFyeT4gY29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwor
dGVtcGxhdGU8PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6
OkRpY3Rpb25hcnk+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIAotdGVtcGxhdGU8
PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4g
Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0
ZU51bGw+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBsYXRlPD4gVGVzdE9i
ajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgY29udmVydERpY3Rpb25hcnk8
VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGw+KEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIAotdGVtcGxhdGU8PiBPcHRpb25hbDxUZXN0T2JqOjpEaWN0
aW9uYXJ5VGhhdFNob3VsZFRvbGVyYXRlTnVsbD4gY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6
RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0ZU51bGw+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlKTsKK3RlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xlcmF0
ZU51bGwgY29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGRUb2xl
cmF0ZU51bGw+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIAotdGVtcGxhdGU8PiBP
cHRpb25hbDxBbHRlcm5hdGVEaWN0aW9uYXJ5TmFtZT4gY29udmVydERpY3Rpb25hcnk8QWx0ZXJu
YXRlRGljdGlvbmFyeU5hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKK3RlbXBs
YXRlPD4gQWx0ZXJuYXRlRGljdGlvbmFyeU5hbWUgY29udmVydERpY3Rpb25hcnk8QWx0ZXJuYXRl
RGljdGlvbmFyeU5hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIAotdGVtcGxh
dGU8PiBPcHRpb25hbDxUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5PiBjb252ZXJ0RGljdGlvbmFy
eTxUZXN0T2JqOjpQYXJlbnREaWN0aW9uYXJ5PihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSk7Cit0ZW1wbGF0ZTw+IFRlc3RPYmo6OlBhcmVudERpY3Rpb25hcnkgY29udmVydERpY3Rpb25h
cnk8VGVzdE9iajo6UGFyZW50RGljdGlvbmFyeT4oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOwogCi10ZW1wbGF0ZTw+IE9wdGlvbmFsPFRlc3RPYmo6OkNoaWxkRGljdGlvbmFyeT4gY29u
dmVydERpY3Rpb25hcnk8VGVzdE9iajo6Q2hpbGREaWN0aW9uYXJ5PihKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTw+IFRlc3RPYmo6OkNoaWxkRGljdGlvbmFyeSBjb252
ZXJ0RGljdGlvbmFyeTxUZXN0T2JqOjpDaGlsZERpY3Rpb25hcnk+KEpTQzo6RXhlY1N0YXRlJiwg
SlNDOjpKU1ZhbHVlKTsKIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURp
Y3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAppbmRleCBmOWYyNjI1NTRhYzY0MzVmMWE2YzVl
OWNkMDI1NjNiM2U0ZjEyN2RhLi4zZDdmMGY0ZjVkMjZjYzIxZDk3Njc5Y2M4NWM4MmZlNmQ1YTc0
MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKQEAgLTI2
LDcgKzI2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci10ZW1wbGF0ZTw+IE9wdGlvbmFsPERpY3Rpb25hcnlJbXBsTmFtZT4gY29udmVydERpY3Rpb25h
cnk8RGljdGlvbmFyeUltcGxOYW1lPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQor
dGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUgY29udmVydERpY3Rpb25hcnk8RGljdGlvbmFy
eUltcGxOYW1lPihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CkBAIC0zNCwyNCArMzQsMjQgQEAgdGVtcGxhdGU8PiBPcHRpb25hbDxEaWN0aW9uYXJ5
SW1wbE5hbWU+IGNvbnZlcnREaWN0aW9uYXJ5PERpY3Rpb25hcnlJbXBsTmFtZT4oRXgKICAgICBh
dXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmpl
Y3QoKTsKICAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7
CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJl
dHVybiBOdWxsb3B0OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAoVU5MSUtF
TFkob2JqZWN0ICYmIG9iamVjdC0+dHlwZSgpID09IFJlZ0V4cE9iamVjdFR5cGUpKSB7CiAgICAg
ICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgdGhyb3dTY29wZSk7Ci0gICAgICAgIHJldHVybiBO
dWxsb3B0OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBEaWN0aW9uYXJ5SW1wbE5h
bWUgcmVzdWx0OwogICAgIEpTVmFsdWUgYm9vbE1lbWJlclZhbHVlID0gaXNOdWxsT3JVbmRlZmlu
ZWQgPyBqc1VuZGVmaW5lZCgpIDogb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZzdGF0ZSwgImJvb2xNZW1iZXIiKSk7CiAgICAgaWYgKCFib29sTWVtYmVyVmFsdWUu
aXNVbmRlZmluZWQoKSkgewogICAgICAgICByZXN1bHQuYm9vbE1lbWJlciA9IGNvbnZlcnQ8SURM
Qm9vbGVhbj4oc3RhdGUsIGJvb2xNZW1iZXJWYWx1ZSk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgTnVsbG9wdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBzdHJpbmdNZW1iZXJWYWx1ZSA9
IGlzTnVsbE9yVW5kZWZpbmVkID8ganNVbmRlZmluZWQoKSA6IG9iamVjdC0+Z2V0KCZzdGF0ZSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJzdHJpbmdNZW1iZXIiKSk7CiAgICAgaWYg
KCFzdHJpbmdNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgIHJlc3VsdC5zdHJp
bmdNZW1iZXIgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHN0cmluZ01lbWJlclZhbHVl
KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBOdWxsb3B0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KLSAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmgKaW5k
ZXggZjM5YWJiYTVjZjE0ZjI4ZWNhODRjMjYwNTZkZjk3NGZjNGQ2N2IwNi4uNzZhMmFiMWJhNzY4
N2QzNDBlNjBmZjkyYTk0ZDc4ZTNhYWYzNjdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxv
bmVEaWN0aW9uYXJ5LmgKQEAgLTI1LDYgKzI1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci10ZW1wbGF0ZTw+IE9wdGlvbmFsPERpY3Rpb25hcnlJbXBsTmFtZT4gY29udmVydERpY3Rpb25h
cnk8RGljdGlvbmFyeUltcGxOYW1lPihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0
ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljdGlvbmFyeTxEaWN0aW9uYXJ5
SW1wbE5hbWU+KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>