<?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>179958</bug_id>
          
          <creation_ts>2017-11-22 15:27:11 -0800</creation_ts>
          <short_desc>Fast binding generation by batching several files at once</short_desc>
          <delta_ts>2017-12-06 16:47:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>lforschler</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1374298</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-11-22 15:27:11 -0800</bug_when>
    <thetext>Bindings generation spawns sub processes for each idl files, but fork/exec pattern is very slow on Windows. To reduce the process generation, control script can pass several files at once to the process.

Here is a statistics for 796 idl files:

Current imprementation: 386 secs
Batching 10 files:       63 secs
Aggressive approach:     36 secs (rest of files / number of process)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374299</commentid>
    <comment_count>1</comment_count>
      <attachid>327472</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-11-22 15:41:47 -0800</bug_when>
    <thetext>Created attachment 327472
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375200</commentid>
    <comment_count>2</comment_count>
      <attachid>327708</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-11-27 16:09:58 -0800</bug_when>
    <thetext>Created attachment 327708
fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375402</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-28 10:43:33 -0800</bug_when>
    <thetext>I&apos;m ok with this as long as Sam doesn&apos;t object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375433</commentid>
    <comment_count>4</comment_count>
      <attachid>327708</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-28 11:19:57 -0800</bug_when>
    <thetext>Comment on attachment 327708
fix

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

&gt; Source/WebCore/bindings/scripts/generate-bindings-all.pl:167
&gt; +    my $batchCount = 30;
&gt; +    # my $batchCount = int(($totalCount - $currentCount) / $numOfJobs) || 1;

Let&apos;s not comment out a line.  Also, the second line isn&apos;t quite right either.  As it is it strangely gives smaller batches as work progresses.  Let&apos;s do something more like $totalCount / $numOfJobs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378479</commentid>
    <comment_count>5</comment_count>
      <attachid>328537</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2017-12-05 17:28:03 -0800</bug_when>
    <thetext>Created attachment 328537
fixed

fixed as Alex reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378519</commentid>
    <comment_count>6</comment_count>
      <attachid>328537</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-05 19:54:54 -0800</bug_when>
    <thetext>Comment on attachment 328537
fixed

Clearing flags on attachment: 328537

Committed r225565: &lt;https://trac.webkit.org/changeset/225565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378520</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-05 19:54:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378918</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-06 16:47:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/35896591&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327472</attachid>
            <date>2017-11-22 15:41:47 -0800</date>
            <delta_ts>2017-11-27 16:09:58 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-179958.diff</filename>
            <type>text/plain</type>
            <size>16859</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDQ4NzViNWFmYi4uNThlOTVhY2RjODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNy0xMS0yMiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgRmFzdCBiaW5kaW5nIGdlbmVyYXRpb24gYnkgYmF0Y2hpbmcgc2V2
ZXJhbCBmaWxlcyBhdCBvbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzk5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
IFBhc3Npbmcgc2V2ZXJhbCBmaWxlcyB0byB0aGUgc3ViIHByb2Nlc3MgYXQgb25jZSBhbmQgcmVk
dWNpbmcgdGhlIHRvdGFsIGNvc3Qgb2YKKyAgICAgICAgcHJvY2VzcyBnZW5lcmF0aW9uLiBFc3Bl
Y2lhbGx5IFdpbmRvd3MgcG9ydCBoYXMgZ3JlYXQgc3BlZWQgaW1wcm92ZW1lbnQgYmVjYXVzZQor
ICAgICAgICBpdHMgaW1wbGVtZW50YXRpb24gb2YgZm9yay9leGVjIGlzIHRlcnJpYmxlLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy1hbGwucGw6CisgICAg
ICAgIChzcGF3bkdlbmVyYXRlQmluZGluZ3NJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDoKKyAgICAgICAgKGdlbmVyYXRlQmluZGluZ3Mp
OgorCiAyMDE3LTExLTIyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4K
IAogICAgICAgICBXZWJDb3JlT2JqQ0V4dHJhcy5oIGlzIGJlaW5nIGluY2x1ZGVkIGluIHRvbyBt
YW55IHBsYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9n
ZW5lcmF0ZS1iaW5kaW5ncy1hbGwucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L2dlbmVyYXRlLWJpbmRpbmdzLWFsbC5wbAppbmRleCA5NjhlYTExM2ViNC4uNmU1MTk1N2ZkOTcg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmlu
ZGluZ3MtYWxsLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJh
dGUtYmluZGluZ3MtYWxsLnBsCkBAIC0xNjMsMTEgKzE2MywxNSBAQCBzdWIgc3Bhd25HZW5lcmF0
ZUJpbmRpbmdzSWZOZWVkZWQKIHsKICAgICByZXR1cm4gaWYgJGFib3J0OwogICAgIHJldHVybiB1
bmxlc3MgQGlkbEZpbGVzVG9VcGRhdGU7Ci0gICAgbXkgJGZpbGUgPSBzaGlmdCBAaWRsRmlsZXNU
b1VwZGF0ZTsKLSAgICAkY3VycmVudENvdW50Kys7Ci0gICAgbXkgJGJhc2VuYW1lID0gYmFzZW5h
bWUoJGZpbGUpOwotICAgIHByaW50UHJvZ3Jlc3MoIlskY3VycmVudENvdW50LyR0b3RhbENvdW50
XSAkYmFzZW5hbWUiKTsKLSAgICBteSAkcGlkID0gc3Bhd25Db21tYW5kKCRwZXJsLCBAYXJncywg
JGZpbGUpOworICAgIG15ICRiYXRjaENvdW50ID0gMTA7CisgICAgIyBteSAkYmF0Y2hDb3VudCA9
IGludCgoJHRvdGFsQ291bnQgLSAkY3VycmVudENvdW50KSAvICRudW1PZkpvYnMpIHx8IDE7Cisg
ICAgbXkgQGZpbGVzID0gc3BsaWNlKEBpZGxGaWxlc1RvVXBkYXRlLCAwLCAkYmF0Y2hDb3VudCk7
CisgICAgZm9yIChAZmlsZXMpIHsKKyAgICAgICAgJGN1cnJlbnRDb3VudCsrOworICAgICAgICBt
eSAkYmFzZW5hbWUgPSBiYXNlbmFtZSgkXyk7CisgICAgICAgIHByaW50UHJvZ3Jlc3MoIlskY3Vy
cmVudENvdW50LyR0b3RhbENvdW50XSAkYmFzZW5hbWUiKTsKKyAgICB9CisgICAgbXkgJHBpZCA9
IHNwYXduQ29tbWFuZCgkcGVybCwgQGFyZ3MsIEBmaWxlcyk7CiAgICAgJGFib3J0ID0gMSB1bmxl
c3MgZGVmaW5lZCAkcGlkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAppbmRleCAyMzA0M2ZkYWZhNC4uYTU2ZjdlNGYz
NGIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0
ZS1iaW5kaW5ncy5wbApAQCAtNzEsOSArNzEsNyBAQCBHZXRPcHRpb25zKCdpbmNsdWRlPXNAJyA9
PiBcQGlkbERpcmVjdG9yaWVzLAogICAgICAgICAgICAnYWRkaXRpb25hbElkbEZpbGVzPXMnID0+
IFwkYWRkaXRpb25hbElkbEZpbGVzLAogICAgICAgICAgICAnaWRsQXR0cmlidXRlc0ZpbGU9cycg
PT4gXCRpZGxBdHRyaWJ1dGVzRmlsZSk7CiAKLW15ICR0YXJnZXRJZGxGaWxlID0gJEFSR1ZbMF07
Ci0KLWRpZSgnTXVzdCBzcGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHRhcmdl
dElkbEZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkgaW5wdXQgZmlsZS4nKSB1bmxlc3MgQEFSR1Y7
CiBkaWUoJ011c3Qgc3BlY2lmeSBnZW5lcmF0b3InKSB1bmxlc3MgZGVmaW5lZCgkZ2VuZXJhdG9y
KTsKIGRpZSgnTXVzdCBzcGVjaWZ5IG91dHB1dCBkaXJlY3RvcnkuJykgdW5sZXNzIGRlZmluZWQo
JG91dHB1dERpcmVjdG9yeSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBJREwgYXR0cmlidXRlcyBmaWxl
LicpIHVubGVzcyBkZWZpbmVkKCRpZGxBdHRyaWJ1dGVzRmlsZSk7CkBAIC04MSwxNDAgKzc5LDE0
OCBAQCBkaWUoJ011c3Qgc3BlY2lmeSBJREwgYXR0cmlidXRlcyBmaWxlLicpIHVubGVzcyBkZWZp
bmVkKCRpZGxBdHRyaWJ1dGVzRmlsZSk7CiBpZiAoISRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5KSB7
CiAgICAgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnkgPSAkb3V0cHV0RGlyZWN0b3J5OwogfQotJHRh
cmdldElkbEZpbGUgPSBDd2Q6OnJlYWxwYXRoKCR0YXJnZXRJZGxGaWxlKTsKLWlmICgkdmVyYm9z
ZSkgewotICAgIHByaW50ICIkZ2VuZXJhdG9yOiAkdGFyZ2V0SWRsRmlsZVxuIjsKLX0KLW15ICR0
YXJnZXRJbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKCR0YXJnZXRJZGxGaWxlLCAiLmlkbCIpOwot
Ci1teSAkaWRsRm91bmQgPSAwOwotbXkgQHN1cHBsZW1lbnRlZElkbEZpbGVzOwotaWYgKCRzdXBw
bGVtZW50YWxEZXBlbmRlbmN5RmlsZSkgewotICAgICMgVGhlIGZvcm1hdCBvZiBhIHN1cHBsZW1l
bnRhbCBkZXBlbmRlbmN5IGZpbGU6Ci0gICAgIwotICAgICMgRE9NV2luZG93LmlkbCBQLmlkbCBR
LmlkbCBSLmlkbAotICAgICMgRG9jdW1lbnQuaWRsIFMuaWRsCi0gICAgIyBFdmVudC5pZGwKLSAg
ICAjIC4uLgotICAgICMKLSAgICAjIFRoZSBhYm92ZSBpbmRpY2F0ZXMgdGhhdCBET01XaW5kb3cu
aWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwgYW5kIFIuaWRsLAotICAgICMgRG9j
dW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBw
bGVtZW50ZWQgYnkgbm8gSURMcy4KLSAgICAjIFRoZSBJREwgdGhhdCBzdXBwbGVtZW50cyBhbm90
aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2ZXIgYXBwZWFycyBpbiB0aGUgZGVwZW5kZW5jeSBmaWxl
LgotICAgIG9wZW4gRkgsICI8ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSIgb3IgZGllICJD
YW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGVcbiI7Ci0gICAgd2hpbGUgKG15
ICRsaW5lID0gPEZIPikgewotICAgICAgICBteSAoJGlkbEZpbGUsIEBmb2xsb3dpbmdJZGxGaWxl
cykgPSBzcGxpdCgvXHMrLywgJGxpbmUpOwotICAgICAgICBpZiAoJGlkbEZpbGUgYW5kIGZpbGVw
YXJzZSgkaWRsRmlsZSkgZXEgZmlsZXBhcnNlKCR0YXJnZXRJZGxGaWxlKSkgewotICAgICAgICAg
ICAgJGlkbEZvdW5kID0gMTsKLSAgICAgICAgICAgIEBzdXBwbGVtZW50ZWRJZGxGaWxlcyA9IHNv
cnQgQGZvbGxvd2luZ0lkbEZpbGVzOwotICAgICAgICB9Ci0gICAgfQotICAgIGNsb3NlIEZIOwog
Ci0gICAgIyAkYWRkaXRpb25hbElkbEZpbGVzIGlzIGxpc3Qgb2YgSURMIGZpbGVzIHdoaWNoIHNo
b3VsZCBub3QgYmUgaW5jbHVkZWQgaW4KLSAgICAjIERlcml2ZWRTb3VyY2VzKi5jcHAgKGkuZS4g
dGhleSBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc3VwcGxlbWVudGFsCi0gICAgIyBkZXBlbmRl
bmN5IGZpbGUpIGJ1dCBzaG91bGQgZ2VuZXJhdGUgLmggYW5kIC5jcHAgZmlsZXMuCi0gICAgaWYg
KCEkaWRsRm91bmQgYW5kICRhZGRpdGlvbmFsSWRsRmlsZXMpIHsKLSAgICAgICAgbXkgQGlkbEZp
bGVzID0gc2hlbGx3b3JkcygkYWRkaXRpb25hbElkbEZpbGVzKTsKLSAgICAgICAgJGlkbEZvdW5k
ID0gZ3JlcCB7ICRfIGFuZCBmaWxlcGFyc2UoJF8pIGVxIGZpbGVwYXJzZSgkdGFyZ2V0SWRsRmls
ZSkgfSBAaWRsRmlsZXM7CitnZW5lcmF0ZUJpbmRpbmdzKCRfKSBmb3IgKEBBUkdWKTsKKworc3Vi
IGdlbmVyYXRlQmluZGluZ3MKK3sKKyAgICBteSAoJHRhcmdldElkbEZpbGUpID0gQF87CisKKyAg
ICAkdGFyZ2V0SWRsRmlsZSA9IEN3ZDo6cmVhbHBhdGgoJHRhcmdldElkbEZpbGUpOworICAgIGlm
ICgkdmVyYm9zZSkgeworICAgICAgICBwcmludCAiJGdlbmVyYXRvcjogJHRhcmdldElkbEZpbGVc
biI7CiAgICAgfQorICAgIG15ICR0YXJnZXRJbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKCR0YXJn
ZXRJZGxGaWxlLCAiLmlkbCIpOworCisgICAgbXkgJGlkbEZvdW5kID0gMDsKKyAgICBteSBAc3Vw
cGxlbWVudGVkSWRsRmlsZXM7CisgICAgaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkg
eworICAgICAgICAjIFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxl
OgorICAgICAgICAjCisgICAgICAgICMgRE9NV2luZG93LmlkbCBQLmlkbCBRLmlkbCBSLmlkbAor
ICAgICAgICAjIERvY3VtZW50LmlkbCBTLmlkbAorICAgICAgICAjIEV2ZW50LmlkbAorICAgICAg
ICAjIC4uLgorICAgICAgICAjCisgICAgICAgICMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0IERP
TVdpbmRvdy5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGwsCisg
ICAgICAgICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50
LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KKyAgICAgICAgIyBUaGUgSURMIHRoYXQg
c3VwcGxlbWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhl
IGRlcGVuZGVuY3kgZmlsZS4KKyAgICAgICAgb3BlbiBGSCwgIjwgJHN1cHBsZW1lbnRhbERlcGVu
ZGVuY3lGaWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5Rmls
ZVxuIjsKKyAgICAgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgeworICAgICAgICAgICAgbXkg
KCRpZGxGaWxlLCBAZm9sbG93aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRsaW5lKTsKKyAg
ICAgICAgICAgIGlmICgkaWRsRmlsZSBhbmQgZmlsZXBhcnNlKCRpZGxGaWxlKSBlcSBmaWxlcGFy
c2UoJHRhcmdldElkbEZpbGUpKSB7CisgICAgICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsKKyAg
ICAgICAgICAgICAgICBAc3VwcGxlbWVudGVkSWRsRmlsZXMgPSBzb3J0IEBmb2xsb3dpbmdJZGxG
aWxlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjbG9zZSBGSDsKKworICAg
ICAgICAjICRhZGRpdGlvbmFsSWRsRmlsZXMgaXMgbGlzdCBvZiBJREwgZmlsZXMgd2hpY2ggc2hv
dWxkIG5vdCBiZSBpbmNsdWRlZCBpbgorICAgICAgICAjIERlcml2ZWRTb3VyY2VzKi5jcHAgKGku
ZS4gdGhleSBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc3VwcGxlbWVudGFsCisgICAgICAgICMg
ZGVwZW5kZW5jeSBmaWxlKSBidXQgc2hvdWxkIGdlbmVyYXRlIC5oIGFuZCAuY3BwIGZpbGVzLgor
ICAgICAgICBpZiAoISRpZGxGb3VuZCBhbmQgJGFkZGl0aW9uYWxJZGxGaWxlcykgeworICAgICAg
ICAgICAgbXkgQGlkbEZpbGVzID0gc2hlbGx3b3JkcygkYWRkaXRpb25hbElkbEZpbGVzKTsKKyAg
ICAgICAgICAgICRpZGxGb3VuZCA9IGdyZXAgeyAkXyBhbmQgZmlsZXBhcnNlKCRfKSBlcSBmaWxl
cGFyc2UoJHRhcmdldElkbEZpbGUpIH0gQGlkbEZpbGVzOworICAgICAgICB9CiAKLSAgICBpZiAo
ISRpZGxGb3VuZCkgewotICAgICAgICBteSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5ldyhc
QGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0SGVh
ZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9z
ZSk7CisgICAgICAgIGlmICghJGlkbEZvdW5kKSB7CisgICAgICAgICAgICBteSAkY29kZUdlbiA9
IENvZGVHZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0
RGlyZWN0b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRl
RGVwZW5kZW5jaWVzLCAkdmVyYm9zZSk7CiAKLSAgICAgICAgIyBXZSBnZW5lcmF0ZSBlbXB0eSAu
aCBhbmQgLmNwcCBmaWxlcyBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IC5oIGFuZCAu
Y3BwIGZpbGVzIGFyZSBjcmVhdGVkLgotICAgICAgICBnZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3Bw
KCRjb2RlR2VuLT5GaWxlTmFtZVByZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1
dEhlYWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpOwotICAgICAgICBleGl0IDA7Cisg
ICAgICAgICAgICAjIFdlIGdlbmVyYXRlIGVtcHR5IC5oIGFuZCAuY3BwIGZpbGVzIGp1c3QgdG8g
dGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgLmggYW5kIC5jcHAgZmlsZXMgYXJlIGNyZWF0ZWQuCisg
ICAgICAgICAgICBnZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCRjb2RlR2VuLT5GaWxlTmFtZVBy
ZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRv
dXRwdXREaXJlY3RvcnkpOworICAgICAgICAgICAgZXhpdCAwOworICAgICAgICB9CiAgICAgfQot
fQogCi1teSAkaW5wdXQ7Ci17Ci0gICAgbG9jYWwgJElOUFVUX1JFQ09SRF9TRVBBUkFUT1I7Ci0g
ICAgb3BlbihKU09OLCAiPCIsICRpZGxBdHRyaWJ1dGVzRmlsZSkgb3IgZGllICJDb3VsZG4ndCBv
cGVuICRpZGxBdHRyaWJ1dGVzRmlsZTogJCEiOwotICAgICRpbnB1dCA9IDxKU09OPjsKLSAgICBj
bG9zZShKU09OKTsKLX0KKyAgICBteSAkaW5wdXQ7CisgICAgeworICAgICAgICBsb2NhbCAkSU5Q
VVRfUkVDT1JEX1NFUEFSQVRPUjsKKyAgICAgICAgb3BlbihKU09OLCAiPCIsICRpZGxBdHRyaWJ1
dGVzRmlsZSkgb3IgZGllICJDb3VsZG4ndCBvcGVuICRpZGxBdHRyaWJ1dGVzRmlsZTogJCEiOwor
ICAgICAgICAkaW5wdXQgPSA8SlNPTj47CisgICAgICAgIGNsb3NlKEpTT04pOworICAgIH0KIAot
bXkgJGpzb25EZWNvZGVyID0gSlNPTjo6UFAtPm5ldy0+dXRmODsKLW15ICRqc29uSGFzaFJlZiA9
ICRqc29uRGVjb2Rlci0+ZGVjb2RlKCRpbnB1dCk7Ci1teSAkaWRsQXR0cmlidXRlcyA9ICRqc29u
SGFzaFJlZi0+e2F0dHJpYnV0ZXN9OwotCi0jIFBhcnNlIHRoZSB0YXJnZXQgSURMIGZpbGUuCi1t
eSAkdGFyZ2V0UGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKLW15ICR0YXJnZXRE
b2N1bWVudCA9ICR0YXJnZXRQYXJzZXItPlBhcnNlKCR0YXJnZXRJZGxGaWxlLCAkZGVmaW5lcywg
JHByZXByb2Nlc3NvciwgJGlkbEF0dHJpYnV0ZXMpOwotCi1mb3JlYWNoIG15ICRpZGxGaWxlIChA
c3VwcGxlbWVudGVkSWRsRmlsZXMpIHsKLSAgICBuZXh0IGlmICRpZGxGaWxlIGVxICR0YXJnZXRJ
ZGxGaWxlOwotCi0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoJGlkbEZpbGUsICIu
aWRsIik7Ci0gICAgbXkgJHBhcnNlciA9IElETFBhcnNlci0+bmV3KCEkdmVyYm9zZSk7Ci0gICAg
bXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUsICRkZWZpbmVzLCAkcHJlcHJv
Y2Vzc29yLCAkaWRsQXR0cmlidXRlcyk7Ci0KLSAgICBmb3JlYWNoIG15ICRpbnRlcmZhY2UgKEB7
JGRvY3VtZW50LT5pbnRlcmZhY2VzfSkgewotICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmlzUGFy
dGlhbCB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7
Ci0gICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7Ci0gICAgICAgICAgICBteSBAdGFyZ2V0
R2xvYmFsQ29udGV4dHM7Ci0gICAgICAgICAgICBmb3JlYWNoIG15ICRpbnRlcmZhY2UgKEB7JHRh
cmdldERvY3VtZW50LT5pbnRlcmZhY2VzfSkgewotICAgICAgICAgICAgICAgIGlmICgkaW50ZXJm
YWNlLT50eXBlLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICR0YXJnZXREYXRhTm9kZSA9ICRpbnRlcmZhY2U7Ci0gICAgICAgICAgICAgICAgICAg
IG15ICRleHBvc2VkQXR0cmlidXRlID0gJHRhcmdldERhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAgICAgICAgICAgICAgICAgICAkZXhwb3Nl
ZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEpIGlmIHN1YnN0cigk
ZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOwotICAgICAgICAgICAgICAgICAgICBAdGFy
Z2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmlidXRlKTsKLSAgICAg
ICAgICAgICAgICAgICAgbGFzdDsKKyAgICBteSAkanNvbkRlY29kZXIgPSBKU09OOjpQUC0+bmV3
LT51dGY4OworICAgIG15ICRqc29uSGFzaFJlZiA9ICRqc29uRGVjb2Rlci0+ZGVjb2RlKCRpbnB1
dCk7CisgICAgbXkgJGlkbEF0dHJpYnV0ZXMgPSAkanNvbkhhc2hSZWYtPnthdHRyaWJ1dGVzfTsK
KworICAgICMgUGFyc2UgdGhlIHRhcmdldCBJREwgZmlsZS4KKyAgICBteSAkdGFyZ2V0UGFyc2Vy
ID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKKyAgICBteSAkdGFyZ2V0RG9jdW1lbnQgPSAk
dGFyZ2V0UGFyc2VyLT5QYXJzZSgkdGFyZ2V0SWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNz
b3IsICRpZGxBdHRyaWJ1dGVzKTsKKworICAgIGZvcmVhY2ggbXkgJGlkbEZpbGUgKEBzdXBwbGVt
ZW50ZWRJZGxGaWxlcykgeworICAgICAgICBuZXh0IGlmICRpZGxGaWxlIGVxICR0YXJnZXRJZGxG
aWxlOworCisgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKCRpZGxGaWxlLCAi
LmlkbCIpOworICAgICAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsK
KyAgICAgICAgbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUsICRkZWZpbmVz
LCAkcHJlcHJvY2Vzc29yLCAkaWRsQXR0cmlidXRlcyk7CisKKyAgICAgICAgZm9yZWFjaCBteSAk
aW50ZXJmYWNlIChAeyRkb2N1bWVudC0+aW50ZXJmYWNlc30pIHsKKyAgICAgICAgICAgIGlmICgh
JGludGVyZmFjZS0+aXNQYXJ0aWFsIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgJHRhcmdl
dEludGVyZmFjZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7Cisg
ICAgICAgICAgICAgICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRzOworICAgICAgICAgICAgICAg
IGZvcmVhY2ggbXkgJGludGVyZmFjZSAoQHskdGFyZ2V0RG9jdW1lbnQtPmludGVyZmFjZXN9KSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJn
ZXRJbnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0RGF0YU5v
ZGUgPSAkaW50ZXJmYWNlOworICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGV4cG9zZWRBdHRy
aWJ1dGUgPSAkdGFyZ2V0RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2VkIn0g
fHwgIldpbmRvdyI7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9
IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEpIGlmIHN1YnN0cigkZXhwb3NlZEF0dHJp
YnV0ZSwgMCwgMSkgZXEgIigiOworICAgICAgICAgICAgICAgICAgICAgICAgQHRhcmdldEdsb2Jh
bENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGllICJOb3QgZm91bmQgYW4gaW50ZXJmYWNl
ICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRlcmZhY2VOYW1lfS5pZGwuIiB1
bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7CisgICAgICAgICAgICAgICAgZGllICJOb3Qg
Zm91bmQgYW4gaW50ZXJmYWNlICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRl
cmZhY2VOYW1lfS5pZGwuIiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7CiAKLSAgICAg
ICAgICAgICMgU3VwcG9ydCBmb3IgYXR0cmlidXRlcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0g
ICAgICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRl
c30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3Nl
ZCgkYXR0cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICAj
IFN1cHBvcnQgZm9yIGF0dHJpYnV0ZXMgb2YgcGFydGlhbCBpbnRlcmZhY2VzLgorICAgICAgICAg
ICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkg
eworICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3Nl
ZCgkYXR0cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKIAotICAgICAgICAgICAgICAg
ICMgUmVjb3JkIHRoYXQgdGhpcyBhdHRyaWJ1dGUgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFj
ZU5hbWUuCi0gICAgICAgICAgICAgICAgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlh
bCAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVmbGVjdH07CisgICAgICAg
ICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhpcyBhdHRyaWJ1dGUgaXMgaW1wbGVtZW50ZWQg
YnkgJGludGVyZmFjZU5hbWUuCisgICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50
ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Jl
ZmxlY3R9OwogCi0gICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQg
YXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICAgICBmb3JlYWNoIG15
ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXN9KSB7Ci0gICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgICMg
QWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRyaWJ1dGUu
CisgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGV4dGVuZGVkQXR0cmlidXRlTmFtZSAo
a2V5cyAleyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJp
YnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0
cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAeyR0YXJnZXREYXRhTm9kZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1dGUpOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5hdHRy
aWJ1dGVzfSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICMgU3Vw
cG9ydCBmb3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAgICAgICAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAg
ICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCBc
QHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIG1l
dGhvZHMgb2YgcGFydGlhbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkg
JG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgeworICAgICAgICAgICAgICAg
ICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCBcQHRh
cmdldEdsb2JhbENvbnRleHRzKTsKIAotICAgICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhp
cyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCi0gICAgICAgICAgICAg
ICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRp
bnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKKyAgICAgICAgICAgICAgICAg
ICAgIyBSZWNvcmQgdGhhdCB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNl
TmFtZS4KKyAgICAgICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFy
dGlhbDsKIAotICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0
dHJpYnV0ZXMgdG8gZWFjaCBtZXRob2QuCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0
ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
fSkgewotICAgICAgICAgICAgICAgICAgICAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgICAgICAjIEFkZCBp
bnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggbWV0aG9kLgorICAgICAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXsk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1l
fSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5h
bWV9OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2goQHsk
dGFyZ2V0RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkb3BlcmF0aW9uKTsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+b3BlcmF0aW9uc30s
ICRvcGVyYXRpb24pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAjIFN1cHBvcnQgZm9y
IGNvbnN0YW50cyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAgICAgICAgICBmb3JlYWNoIG15
ICRjb25zdGFudCAoQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSB7Ci0gICAgICAgICAgICAgICAg
bmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJGNvbnN0YW50LCBcQHRhcmdldEds
b2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGNvbnN0YW50cyBv
ZiBwYXJ0aWFsIGludGVyZmFjZXMuCisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3Rh
bnQgKEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkgeworICAgICAgICAgICAgICAgICAgICBuZXh0
IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkY29uc3RhbnQsIFxAdGFyZ2V0R2xvYmFs
Q29udGV4dHMpOwogCi0gICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGNvbnN0YW50
IGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgotICAgICAgICAgICAgICAgICRjb25z
dGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VO
YW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKKyAgICAgICAgICAgICAgICAgICAgIyBSZWNv
cmQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgor
ICAgICAgICAgICAgICAgICAgICAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWw7CiAK
LSAgICAgICAgICAgICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVz
IHRvIGVhY2ggY29uc3RhbnQuCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRB
dHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewot
ICAgICAgICAgICAgICAgICAgICAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRl
bmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4
dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFj
ZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBjb25zdGFudC4KKyAgICAgICAgICAg
ICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNv
bnN0YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9Owor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0
RGF0YU5vZGUtPmNvbnN0YW50c30sICRjb25zdGFudCk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmNvbnN0YW50c30sICRjb25zdGFu
dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpZSAiJGlkbEZpbGUg
aXMgbm90IGEgc3VwcGxlbWVudGFsIGRlcGVuZGVuY3kgb2YgJHRhcmdldElkbEZpbGUuIFRoZXJl
IG1heWJlIGEgYnVnIGluIHRoZSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBnZW5lcmF0b3IgKHBy
ZXByb2Nlc3MtaWRscy5wbCkuXG4iOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgZGllICIkaWRsRmlsZSBpcyBub3QgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5j
eSBvZiAkdGFyZ2V0SWRsRmlsZS4gVGhlcmUgbWF5YmUgYSBidWcgaW4gdGhlIHN1cHBsZW1lbnRh
bCBkZXBlbmRlbmN5IGdlbmVyYXRvciAocHJlcHJvY2Vzcy1pZGxzLnBsKS5cbiI7CiAgICAgICAg
IH0KICAgICB9Ci19CiAKLSMgR2VuZXJhdGUgZGVzaXJlZCBvdXRwdXQgZm9yIHRoZSB0YXJnZXQg
SURMIGZpbGUuCi1teSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9y
aWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9y
eSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9zZSwgJHRhcmdldElk
bEZpbGUsICRpZGxBdHRyaWJ1dGVzKTsKLSRjb2RlR2VuLT5Qcm9jZXNzRG9jdW1lbnQoJHRhcmdl
dERvY3VtZW50LCAkZGVmaW5lcyk7CisgICAgIyBHZW5lcmF0ZSBkZXNpcmVkIG91dHB1dCBmb3Ig
dGhlIHRhcmdldCBJREwgZmlsZS4KKyAgICBteSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5l
dyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0
SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVy
Ym9zZSwgJHRhcmdldElkbEZpbGUsICRpZGxBdHRyaWJ1dGVzKTsKKyAgICAkY29kZUdlbi0+UHJv
Y2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1bWVudCwgJGRlZmluZXMpOworfQogCiAjIEF0dHJpYnV0
ZXMgLyBPcGVyYXRpb25zIC8gQ29uc3RhbnRzIG9mIHN1cHBsZW1lbnRhbCBpbnRlcmZhY2VzIGNh
biBoYXZlIGFuIFtFeHBvc2VkPVhYXSBhdHRyaWJ1dGUgd2hpY2ggcmVzdHJpY3RzCiAjIG9uIHdo
aWNoIGdsb2JhbCBjb250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBvc2VkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327708</attachid>
            <date>2017-11-27 16:09:58 -0800</date>
            <delta_ts>2017-12-05 17:28:03 -0800</delta_ts>
            <desc>fix</desc>
            <filename>bug-179958.diff</filename>
            <type>text/plain</type>
            <size>16859</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDQ4NzViNWFmYi4uNThlOTVhY2RjODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNy0xMS0yMiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgRmFzdCBiaW5kaW5nIGdlbmVyYXRpb24gYnkgYmF0Y2hpbmcgc2V2
ZXJhbCBmaWxlcyBhdCBvbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzk5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
IFBhc3Npbmcgc2V2ZXJhbCBmaWxlcyB0byB0aGUgc3ViIHByb2Nlc3MgYXQgb25jZSBhbmQgcmVk
dWNpbmcgdGhlIHRvdGFsIGNvc3Qgb2YKKyAgICAgICAgcHJvY2VzcyBnZW5lcmF0aW9uLiBFc3Bl
Y2lhbGx5IFdpbmRvd3MgcG9ydCBoYXMgZ3JlYXQgc3BlZWQgaW1wcm92ZW1lbnQgYmVjYXVzZQor
ICAgICAgICBpdHMgaW1wbGVtZW50YXRpb24gb2YgZm9yay9leGVjIGlzIHRlcnJpYmxlLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy1hbGwucGw6CisgICAg
ICAgIChzcGF3bkdlbmVyYXRlQmluZGluZ3NJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDoKKyAgICAgICAgKGdlbmVyYXRlQmluZGluZ3Mp
OgorCiAyMDE3LTExLTIyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4K
IAogICAgICAgICBXZWJDb3JlT2JqQ0V4dHJhcy5oIGlzIGJlaW5nIGluY2x1ZGVkIGluIHRvbyBt
YW55IHBsYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9n
ZW5lcmF0ZS1iaW5kaW5ncy1hbGwucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L2dlbmVyYXRlLWJpbmRpbmdzLWFsbC5wbAppbmRleCA5NjhlYTExM2ViNC4uZDA4ZmYxMjVhNGYg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmlu
ZGluZ3MtYWxsLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJh
dGUtYmluZGluZ3MtYWxsLnBsCkBAIC0xNjMsMTEgKzE2MywxNSBAQCBzdWIgc3Bhd25HZW5lcmF0
ZUJpbmRpbmdzSWZOZWVkZWQKIHsKICAgICByZXR1cm4gaWYgJGFib3J0OwogICAgIHJldHVybiB1
bmxlc3MgQGlkbEZpbGVzVG9VcGRhdGU7Ci0gICAgbXkgJGZpbGUgPSBzaGlmdCBAaWRsRmlsZXNU
b1VwZGF0ZTsKLSAgICAkY3VycmVudENvdW50Kys7Ci0gICAgbXkgJGJhc2VuYW1lID0gYmFzZW5h
bWUoJGZpbGUpOwotICAgIHByaW50UHJvZ3Jlc3MoIlskY3VycmVudENvdW50LyR0b3RhbENvdW50
XSAkYmFzZW5hbWUiKTsKLSAgICBteSAkcGlkID0gc3Bhd25Db21tYW5kKCRwZXJsLCBAYXJncywg
JGZpbGUpOworICAgIG15ICRiYXRjaENvdW50ID0gMzA7CisgICAgIyBteSAkYmF0Y2hDb3VudCA9
IGludCgoJHRvdGFsQ291bnQgLSAkY3VycmVudENvdW50KSAvICRudW1PZkpvYnMpIHx8IDE7Cisg
ICAgbXkgQGZpbGVzID0gc3BsaWNlKEBpZGxGaWxlc1RvVXBkYXRlLCAwLCAkYmF0Y2hDb3VudCk7
CisgICAgZm9yIChAZmlsZXMpIHsKKyAgICAgICAgJGN1cnJlbnRDb3VudCsrOworICAgICAgICBt
eSAkYmFzZW5hbWUgPSBiYXNlbmFtZSgkXyk7CisgICAgICAgIHByaW50UHJvZ3Jlc3MoIlskY3Vy
cmVudENvdW50LyR0b3RhbENvdW50XSAkYmFzZW5hbWUiKTsKKyAgICB9CisgICAgbXkgJHBpZCA9
IHNwYXduQ29tbWFuZCgkcGVybCwgQGFyZ3MsIEBmaWxlcyk7CiAgICAgJGFib3J0ID0gMSB1bmxl
c3MgZGVmaW5lZCAkcGlkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAppbmRleCAyMzA0M2ZkYWZhNC4uNWU0ZGMyYWFl
ZTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0
ZS1iaW5kaW5ncy5wbApAQCAtNzEsOSArNzEsNyBAQCBHZXRPcHRpb25zKCdpbmNsdWRlPXNAJyA9
PiBcQGlkbERpcmVjdG9yaWVzLAogICAgICAgICAgICAnYWRkaXRpb25hbElkbEZpbGVzPXMnID0+
IFwkYWRkaXRpb25hbElkbEZpbGVzLAogICAgICAgICAgICAnaWRsQXR0cmlidXRlc0ZpbGU9cycg
PT4gXCRpZGxBdHRyaWJ1dGVzRmlsZSk7CiAKLW15ICR0YXJnZXRJZGxGaWxlID0gJEFSR1ZbMF07
Ci0KLWRpZSgnTXVzdCBzcGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRlZmluZWQoJHRhcmdl
dElkbEZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkgaW5wdXQgZmlsZS4nKSB1bmxlc3MgQEFSR1Y7
CiBkaWUoJ011c3Qgc3BlY2lmeSBnZW5lcmF0b3InKSB1bmxlc3MgZGVmaW5lZCgkZ2VuZXJhdG9y
KTsKIGRpZSgnTXVzdCBzcGVjaWZ5IG91dHB1dCBkaXJlY3RvcnkuJykgdW5sZXNzIGRlZmluZWQo
JG91dHB1dERpcmVjdG9yeSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBJREwgYXR0cmlidXRlcyBmaWxl
LicpIHVubGVzcyBkZWZpbmVkKCRpZGxBdHRyaWJ1dGVzRmlsZSk7CkBAIC04MSwxNDAgKzc5LDE0
OCBAQCBkaWUoJ011c3Qgc3BlY2lmeSBJREwgYXR0cmlidXRlcyBmaWxlLicpIHVubGVzcyBkZWZp
bmVkKCRpZGxBdHRyaWJ1dGVzRmlsZSk7CiBpZiAoISRvdXRwdXRIZWFkZXJzRGlyZWN0b3J5KSB7
CiAgICAgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnkgPSAkb3V0cHV0RGlyZWN0b3J5OwogfQotJHRh
cmdldElkbEZpbGUgPSBDd2Q6OnJlYWxwYXRoKCR0YXJnZXRJZGxGaWxlKTsKLWlmICgkdmVyYm9z
ZSkgewotICAgIHByaW50ICIkZ2VuZXJhdG9yOiAkdGFyZ2V0SWRsRmlsZVxuIjsKLX0KLW15ICR0
YXJnZXRJbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKCR0YXJnZXRJZGxGaWxlLCAiLmlkbCIpOwot
Ci1teSAkaWRsRm91bmQgPSAwOwotbXkgQHN1cHBsZW1lbnRlZElkbEZpbGVzOwotaWYgKCRzdXBw
bGVtZW50YWxEZXBlbmRlbmN5RmlsZSkgewotICAgICMgVGhlIGZvcm1hdCBvZiBhIHN1cHBsZW1l
bnRhbCBkZXBlbmRlbmN5IGZpbGU6Ci0gICAgIwotICAgICMgRE9NV2luZG93LmlkbCBQLmlkbCBR
LmlkbCBSLmlkbAotICAgICMgRG9jdW1lbnQuaWRsIFMuaWRsCi0gICAgIyBFdmVudC5pZGwKLSAg
ICAjIC4uLgotICAgICMKLSAgICAjIFRoZSBhYm92ZSBpbmRpY2F0ZXMgdGhhdCBET01XaW5kb3cu
aWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwgYW5kIFIuaWRsLAotICAgICMgRG9j
dW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBw
bGVtZW50ZWQgYnkgbm8gSURMcy4KLSAgICAjIFRoZSBJREwgdGhhdCBzdXBwbGVtZW50cyBhbm90
aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2ZXIgYXBwZWFycyBpbiB0aGUgZGVwZW5kZW5jeSBmaWxl
LgotICAgIG9wZW4gRkgsICI8ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSIgb3IgZGllICJD
YW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGVcbiI7Ci0gICAgd2hpbGUgKG15
ICRsaW5lID0gPEZIPikgewotICAgICAgICBteSAoJGlkbEZpbGUsIEBmb2xsb3dpbmdJZGxGaWxl
cykgPSBzcGxpdCgvXHMrLywgJGxpbmUpOwotICAgICAgICBpZiAoJGlkbEZpbGUgYW5kIGZpbGVw
YXJzZSgkaWRsRmlsZSkgZXEgZmlsZXBhcnNlKCR0YXJnZXRJZGxGaWxlKSkgewotICAgICAgICAg
ICAgJGlkbEZvdW5kID0gMTsKLSAgICAgICAgICAgIEBzdXBwbGVtZW50ZWRJZGxGaWxlcyA9IHNv
cnQgQGZvbGxvd2luZ0lkbEZpbGVzOwotICAgICAgICB9Ci0gICAgfQotICAgIGNsb3NlIEZIOwog
Ci0gICAgIyAkYWRkaXRpb25hbElkbEZpbGVzIGlzIGxpc3Qgb2YgSURMIGZpbGVzIHdoaWNoIHNo
b3VsZCBub3QgYmUgaW5jbHVkZWQgaW4KLSAgICAjIERlcml2ZWRTb3VyY2VzKi5jcHAgKGkuZS4g
dGhleSBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc3VwcGxlbWVudGFsCi0gICAgIyBkZXBlbmRl
bmN5IGZpbGUpIGJ1dCBzaG91bGQgZ2VuZXJhdGUgLmggYW5kIC5jcHAgZmlsZXMuCi0gICAgaWYg
KCEkaWRsRm91bmQgYW5kICRhZGRpdGlvbmFsSWRsRmlsZXMpIHsKLSAgICAgICAgbXkgQGlkbEZp
bGVzID0gc2hlbGx3b3JkcygkYWRkaXRpb25hbElkbEZpbGVzKTsKLSAgICAgICAgJGlkbEZvdW5k
ID0gZ3JlcCB7ICRfIGFuZCBmaWxlcGFyc2UoJF8pIGVxIGZpbGVwYXJzZSgkdGFyZ2V0SWRsRmls
ZSkgfSBAaWRsRmlsZXM7CitnZW5lcmF0ZUJpbmRpbmdzKCRfKSBmb3IgKEBBUkdWKTsKKworc3Vi
IGdlbmVyYXRlQmluZGluZ3MKK3sKKyAgICBteSAoJHRhcmdldElkbEZpbGUpID0gQF87CisKKyAg
ICAkdGFyZ2V0SWRsRmlsZSA9IEN3ZDo6cmVhbHBhdGgoJHRhcmdldElkbEZpbGUpOworICAgIGlm
ICgkdmVyYm9zZSkgeworICAgICAgICBwcmludCAiJGdlbmVyYXRvcjogJHRhcmdldElkbEZpbGVc
biI7CiAgICAgfQorICAgIG15ICR0YXJnZXRJbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKCR0YXJn
ZXRJZGxGaWxlLCAiLmlkbCIpOworCisgICAgbXkgJGlkbEZvdW5kID0gMDsKKyAgICBteSBAc3Vw
cGxlbWVudGVkSWRsRmlsZXM7CisgICAgaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkg
eworICAgICAgICAjIFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBmaWxl
OgorICAgICAgICAjCisgICAgICAgICMgRE9NV2luZG93LmlkbCBQLmlkbCBRLmlkbCBSLmlkbAor
ICAgICAgICAjIERvY3VtZW50LmlkbCBTLmlkbAorICAgICAgICAjIEV2ZW50LmlkbAorICAgICAg
ICAjIC4uLgorICAgICAgICAjCisgICAgICAgICMgVGhlIGFib3ZlIGluZGljYXRlcyB0aGF0IERP
TVdpbmRvdy5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBhbmQgUi5pZGwsCisg
ICAgICAgICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50
LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KKyAgICAgICAgIyBUaGUgSURMIHRoYXQg
c3VwcGxlbWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFwcGVhcnMgaW4gdGhl
IGRlcGVuZGVuY3kgZmlsZS4KKyAgICAgICAgb3BlbiBGSCwgIjwgJHN1cHBsZW1lbnRhbERlcGVu
ZGVuY3lGaWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5Rmls
ZVxuIjsKKyAgICAgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgeworICAgICAgICAgICAgbXkg
KCRpZGxGaWxlLCBAZm9sbG93aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8sICRsaW5lKTsKKyAg
ICAgICAgICAgIGlmICgkaWRsRmlsZSBhbmQgZmlsZXBhcnNlKCRpZGxGaWxlKSBlcSBmaWxlcGFy
c2UoJHRhcmdldElkbEZpbGUpKSB7CisgICAgICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsKKyAg
ICAgICAgICAgICAgICBAc3VwcGxlbWVudGVkSWRsRmlsZXMgPSBzb3J0IEBmb2xsb3dpbmdJZGxG
aWxlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjbG9zZSBGSDsKKworICAg
ICAgICAjICRhZGRpdGlvbmFsSWRsRmlsZXMgaXMgbGlzdCBvZiBJREwgZmlsZXMgd2hpY2ggc2hv
dWxkIG5vdCBiZSBpbmNsdWRlZCBpbgorICAgICAgICAjIERlcml2ZWRTb3VyY2VzKi5jcHAgKGku
ZS4gdGhleSBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc3VwcGxlbWVudGFsCisgICAgICAgICMg
ZGVwZW5kZW5jeSBmaWxlKSBidXQgc2hvdWxkIGdlbmVyYXRlIC5oIGFuZCAuY3BwIGZpbGVzLgor
ICAgICAgICBpZiAoISRpZGxGb3VuZCBhbmQgJGFkZGl0aW9uYWxJZGxGaWxlcykgeworICAgICAg
ICAgICAgbXkgQGlkbEZpbGVzID0gc2hlbGx3b3JkcygkYWRkaXRpb25hbElkbEZpbGVzKTsKKyAg
ICAgICAgICAgICRpZGxGb3VuZCA9IGdyZXAgeyAkXyBhbmQgZmlsZXBhcnNlKCRfKSBlcSBmaWxl
cGFyc2UoJHRhcmdldElkbEZpbGUpIH0gQGlkbEZpbGVzOworICAgICAgICB9CiAKLSAgICBpZiAo
ISRpZGxGb3VuZCkgewotICAgICAgICBteSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5ldyhc
QGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0SGVh
ZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9z
ZSk7CisgICAgICAgIGlmICghJGlkbEZvdW5kKSB7CisgICAgICAgICAgICBteSAkY29kZUdlbiA9
IENvZGVHZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0
RGlyZWN0b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRl
RGVwZW5kZW5jaWVzLCAkdmVyYm9zZSk7CiAKLSAgICAgICAgIyBXZSBnZW5lcmF0ZSBlbXB0eSAu
aCBhbmQgLmNwcCBmaWxlcyBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0aGF0IC5oIGFuZCAu
Y3BwIGZpbGVzIGFyZSBjcmVhdGVkLgotICAgICAgICBnZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3Bw
KCRjb2RlR2VuLT5GaWxlTmFtZVByZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1
dEhlYWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpOwotICAgICAgICBleGl0IDA7Cisg
ICAgICAgICAgICAjIFdlIGdlbmVyYXRlIGVtcHR5IC5oIGFuZCAuY3BwIGZpbGVzIGp1c3QgdG8g
dGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgLmggYW5kIC5jcHAgZmlsZXMgYXJlIGNyZWF0ZWQuCisg
ICAgICAgICAgICBnZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCRjb2RlR2VuLT5GaWxlTmFtZVBy
ZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRv
dXRwdXREaXJlY3RvcnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQot
fQogCi1teSAkaW5wdXQ7Ci17Ci0gICAgbG9jYWwgJElOUFVUX1JFQ09SRF9TRVBBUkFUT1I7Ci0g
ICAgb3BlbihKU09OLCAiPCIsICRpZGxBdHRyaWJ1dGVzRmlsZSkgb3IgZGllICJDb3VsZG4ndCBv
cGVuICRpZGxBdHRyaWJ1dGVzRmlsZTogJCEiOwotICAgICRpbnB1dCA9IDxKU09OPjsKLSAgICBj
bG9zZShKU09OKTsKLX0KKyAgICBteSAkaW5wdXQ7CisgICAgeworICAgICAgICBsb2NhbCAkSU5Q
VVRfUkVDT1JEX1NFUEFSQVRPUjsKKyAgICAgICAgb3BlbihKU09OLCAiPCIsICRpZGxBdHRyaWJ1
dGVzRmlsZSkgb3IgZGllICJDb3VsZG4ndCBvcGVuICRpZGxBdHRyaWJ1dGVzRmlsZTogJCEiOwor
ICAgICAgICAkaW5wdXQgPSA8SlNPTj47CisgICAgICAgIGNsb3NlKEpTT04pOworICAgIH0KIAot
bXkgJGpzb25EZWNvZGVyID0gSlNPTjo6UFAtPm5ldy0+dXRmODsKLW15ICRqc29uSGFzaFJlZiA9
ICRqc29uRGVjb2Rlci0+ZGVjb2RlKCRpbnB1dCk7Ci1teSAkaWRsQXR0cmlidXRlcyA9ICRqc29u
SGFzaFJlZi0+e2F0dHJpYnV0ZXN9OwotCi0jIFBhcnNlIHRoZSB0YXJnZXQgSURMIGZpbGUuCi1t
eSAkdGFyZ2V0UGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKLW15ICR0YXJnZXRE
b2N1bWVudCA9ICR0YXJnZXRQYXJzZXItPlBhcnNlKCR0YXJnZXRJZGxGaWxlLCAkZGVmaW5lcywg
JHByZXByb2Nlc3NvciwgJGlkbEF0dHJpYnV0ZXMpOwotCi1mb3JlYWNoIG15ICRpZGxGaWxlIChA
c3VwcGxlbWVudGVkSWRsRmlsZXMpIHsKLSAgICBuZXh0IGlmICRpZGxGaWxlIGVxICR0YXJnZXRJ
ZGxGaWxlOwotCi0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2UoJGlkbEZpbGUsICIu
aWRsIik7Ci0gICAgbXkgJHBhcnNlciA9IElETFBhcnNlci0+bmV3KCEkdmVyYm9zZSk7Ci0gICAg
bXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUsICRkZWZpbmVzLCAkcHJlcHJv
Y2Vzc29yLCAkaWRsQXR0cmlidXRlcyk7Ci0KLSAgICBmb3JlYWNoIG15ICRpbnRlcmZhY2UgKEB7
JGRvY3VtZW50LT5pbnRlcmZhY2VzfSkgewotICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmlzUGFy
dGlhbCB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7
Ci0gICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7Ci0gICAgICAgICAgICBteSBAdGFyZ2V0
R2xvYmFsQ29udGV4dHM7Ci0gICAgICAgICAgICBmb3JlYWNoIG15ICRpbnRlcmZhY2UgKEB7JHRh
cmdldERvY3VtZW50LT5pbnRlcmZhY2VzfSkgewotICAgICAgICAgICAgICAgIGlmICgkaW50ZXJm
YWNlLT50eXBlLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICR0YXJnZXREYXRhTm9kZSA9ICRpbnRlcmZhY2U7Ci0gICAgICAgICAgICAgICAgICAg
IG15ICRleHBvc2VkQXR0cmlidXRlID0gJHRhcmdldERhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAgICAgICAgICAgICAgICAgICAkZXhwb3Nl
ZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEpIGlmIHN1YnN0cigk
ZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOwotICAgICAgICAgICAgICAgICAgICBAdGFy
Z2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmlidXRlKTsKLSAgICAg
ICAgICAgICAgICAgICAgbGFzdDsKKyAgICBteSAkanNvbkRlY29kZXIgPSBKU09OOjpQUC0+bmV3
LT51dGY4OworICAgIG15ICRqc29uSGFzaFJlZiA9ICRqc29uRGVjb2Rlci0+ZGVjb2RlKCRpbnB1
dCk7CisgICAgbXkgJGlkbEF0dHJpYnV0ZXMgPSAkanNvbkhhc2hSZWYtPnthdHRyaWJ1dGVzfTsK
KworICAgICMgUGFyc2UgdGhlIHRhcmdldCBJREwgZmlsZS4KKyAgICBteSAkdGFyZ2V0UGFyc2Vy
ID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKKyAgICBteSAkdGFyZ2V0RG9jdW1lbnQgPSAk
dGFyZ2V0UGFyc2VyLT5QYXJzZSgkdGFyZ2V0SWRsRmlsZSwgJGRlZmluZXMsICRwcmVwcm9jZXNz
b3IsICRpZGxBdHRyaWJ1dGVzKTsKKworICAgIGZvcmVhY2ggbXkgJGlkbEZpbGUgKEBzdXBwbGVt
ZW50ZWRJZGxGaWxlcykgeworICAgICAgICBuZXh0IGlmICRpZGxGaWxlIGVxICR0YXJnZXRJZGxG
aWxlOworCisgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKCRpZGxGaWxlLCAi
LmlkbCIpOworICAgICAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsK
KyAgICAgICAgbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUsICRkZWZpbmVz
LCAkcHJlcHJvY2Vzc29yLCAkaWRsQXR0cmlidXRlcyk7CisKKyAgICAgICAgZm9yZWFjaCBteSAk
aW50ZXJmYWNlIChAeyRkb2N1bWVudC0+aW50ZXJmYWNlc30pIHsKKyAgICAgICAgICAgIGlmICgh
JGludGVyZmFjZS0+aXNQYXJ0aWFsIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgJHRhcmdl
dEludGVyZmFjZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7Cisg
ICAgICAgICAgICAgICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRzOworICAgICAgICAgICAgICAg
IGZvcmVhY2ggbXkgJGludGVyZmFjZSAoQHskdGFyZ2V0RG9jdW1lbnQtPmludGVyZmFjZXN9KSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJn
ZXRJbnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0RGF0YU5v
ZGUgPSAkaW50ZXJmYWNlOworICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGV4cG9zZWRBdHRy
aWJ1dGUgPSAkdGFyZ2V0RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFeHBvc2VkIn0g
fHwgIldpbmRvdyI7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9
IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEpIGlmIHN1YnN0cigkZXhwb3NlZEF0dHJp
YnV0ZSwgMCwgMSkgZXEgIigiOworICAgICAgICAgICAgICAgICAgICAgICAgQHRhcmdldEdsb2Jh
bENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGllICJOb3QgZm91bmQgYW4gaW50ZXJmYWNl
ICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRlcmZhY2VOYW1lfS5pZGwuIiB1
bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7CisgICAgICAgICAgICAgICAgZGllICJOb3Qg
Zm91bmQgYW4gaW50ZXJmYWNlICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRl
cmZhY2VOYW1lfS5pZGwuIiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7CiAKLSAgICAg
ICAgICAgICMgU3VwcG9ydCBmb3IgYXR0cmlidXRlcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0g
ICAgICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRl
c30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3Nl
ZCgkYXR0cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICAj
IFN1cHBvcnQgZm9yIGF0dHJpYnV0ZXMgb2YgcGFydGlhbCBpbnRlcmZhY2VzLgorICAgICAgICAg
ICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkg
eworICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3Nl
ZCgkYXR0cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKIAotICAgICAgICAgICAgICAg
ICMgUmVjb3JkIHRoYXQgdGhpcyBhdHRyaWJ1dGUgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFj
ZU5hbWUuCi0gICAgICAgICAgICAgICAgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlh
bCAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVmbGVjdH07CisgICAgICAg
ICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhpcyBhdHRyaWJ1dGUgaXMgaW1wbGVtZW50ZWQg
YnkgJGludGVyZmFjZU5hbWUuCisgICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50
ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Jl
ZmxlY3R9OwogCi0gICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQg
YXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICAgICBmb3JlYWNoIG15
ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXN9KSB7Ci0gICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgICMg
QWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBhdHRyaWJ1dGUu
CisgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGV4dGVuZGVkQXR0cmlidXRlTmFtZSAo
a2V5cyAleyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJp
YnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0
cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAeyR0YXJnZXREYXRhTm9kZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1dGUpOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5hdHRy
aWJ1dGVzfSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICMgU3Vw
cG9ydCBmb3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAgICAgICAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKLSAgICAgICAg
ICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCBc
QHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIG1l
dGhvZHMgb2YgcGFydGlhbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkg
JG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgeworICAgICAgICAgICAgICAg
ICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3BlcmF0aW9uLCBcQHRh
cmdldEdsb2JhbENvbnRleHRzKTsKIAotICAgICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhp
cyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCi0gICAgICAgICAgICAg
ICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRp
bnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKKyAgICAgICAgICAgICAgICAg
ICAgIyBSZWNvcmQgdGhhdCB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNl
TmFtZS4KKyAgICAgICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFy
dGlhbDsKIAotICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0
dHJpYnV0ZXMgdG8gZWFjaCBtZXRob2QuCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0
ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
fSkgewotICAgICAgICAgICAgICAgICAgICAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgICAgICAjIEFkZCBp
bnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggbWV0aG9kLgorICAgICAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXsk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1l
fSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5h
bWV9OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2goQHsk
dGFyZ2V0RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkb3BlcmF0aW9uKTsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+b3BlcmF0aW9uc30s
ICRvcGVyYXRpb24pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAjIFN1cHBvcnQgZm9y
IGNvbnN0YW50cyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAgICAgICAgICBmb3JlYWNoIG15
ICRjb25zdGFudCAoQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSB7Ci0gICAgICAgICAgICAgICAg
bmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJGNvbnN0YW50LCBcQHRhcmdldEds
b2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGNvbnN0YW50cyBv
ZiBwYXJ0aWFsIGludGVyZmFjZXMuCisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3Rh
bnQgKEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkgeworICAgICAgICAgICAgICAgICAgICBuZXh0
IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkY29uc3RhbnQsIFxAdGFyZ2V0R2xvYmFs
Q29udGV4dHMpOwogCi0gICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGNvbnN0YW50
IGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgotICAgICAgICAgICAgICAgICRjb25z
dGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VO
YW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKKyAgICAgICAgICAgICAgICAgICAgIyBSZWNv
cmQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgor
ICAgICAgICAgICAgICAgICAgICAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWw7CiAK
LSAgICAgICAgICAgICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVz
IHRvIGVhY2ggY29uc3RhbnQuCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRB
dHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewot
ICAgICAgICAgICAgICAgICAgICAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRl
bmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4
dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFj
ZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBjb25zdGFudC4KKyAgICAgICAgICAg
ICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJGNv
bnN0YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9Owor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0
RGF0YU5vZGUtPmNvbnN0YW50c30sICRjb25zdGFudCk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmNvbnN0YW50c30sICRjb25zdGFu
dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpZSAiJGlkbEZpbGUg
aXMgbm90IGEgc3VwcGxlbWVudGFsIGRlcGVuZGVuY3kgb2YgJHRhcmdldElkbEZpbGUuIFRoZXJl
IG1heWJlIGEgYnVnIGluIHRoZSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBnZW5lcmF0b3IgKHBy
ZXByb2Nlc3MtaWRscy5wbCkuXG4iOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgZGllICIkaWRsRmlsZSBpcyBub3QgYSBzdXBwbGVtZW50YWwgZGVwZW5kZW5j
eSBvZiAkdGFyZ2V0SWRsRmlsZS4gVGhlcmUgbWF5YmUgYSBidWcgaW4gdGhlIHN1cHBsZW1lbnRh
bCBkZXBlbmRlbmN5IGdlbmVyYXRvciAocHJlcHJvY2Vzcy1pZGxzLnBsKS5cbiI7CiAgICAgICAg
IH0KICAgICB9Ci19CiAKLSMgR2VuZXJhdGUgZGVzaXJlZCBvdXRwdXQgZm9yIHRoZSB0YXJnZXQg
SURMIGZpbGUuCi1teSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9y
aWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9y
eSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9zZSwgJHRhcmdldElk
bEZpbGUsICRpZGxBdHRyaWJ1dGVzKTsKLSRjb2RlR2VuLT5Qcm9jZXNzRG9jdW1lbnQoJHRhcmdl
dERvY3VtZW50LCAkZGVmaW5lcyk7CisgICAgIyBHZW5lcmF0ZSBkZXNpcmVkIG91dHB1dCBmb3Ig
dGhlIHRhcmdldCBJREwgZmlsZS4KKyAgICBteSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5l
dyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0
SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVy
Ym9zZSwgJHRhcmdldElkbEZpbGUsICRpZGxBdHRyaWJ1dGVzKTsKKyAgICAkY29kZUdlbi0+UHJv
Y2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1bWVudCwgJGRlZmluZXMpOworfQogCiAjIEF0dHJpYnV0
ZXMgLyBPcGVyYXRpb25zIC8gQ29uc3RhbnRzIG9mIHN1cHBsZW1lbnRhbCBpbnRlcmZhY2VzIGNh
biBoYXZlIGFuIFtFeHBvc2VkPVhYXSBhdHRyaWJ1dGUgd2hpY2ggcmVzdHJpY3RzCiAjIG9uIHdo
aWNoIGdsb2JhbCBjb250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBvc2VkLgo=
</data>
<flag name="review"
          id="346891"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="346892"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328537</attachid>
            <date>2017-12-05 17:28:03 -0800</date>
            <delta_ts>2017-12-05 19:54:54 -0800</delta_ts>
            <desc>fixed</desc>
            <filename>bug-179958.diff</filename>
            <type>text/plain</type>
            <size>16814</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMDQ4NzViNWFmYi4uOTRiMmI2YTNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNy0xMS0yMiAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29u
eS5jb20+CisKKyAgICAgICAgRmFzdCBiaW5kaW5nIGdlbmVyYXRpb24gYnkgYmF0Y2hpbmcgc2V2
ZXJhbCBmaWxlcyBhdCBvbmNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzk5NTgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2Vu
LgorCisgICAgICAgIFBhc3Npbmcgc2V2ZXJhbCBmaWxlcyB0byB0aGUgc3ViIHByb2Nlc3MgYXQg
b25jZSBhbmQgcmVkdWNpbmcgdGhlIHRvdGFsIGNvc3Qgb2YKKyAgICAgICAgcHJvY2VzcyBnZW5l
cmF0aW9uLiBFc3BlY2lhbGx5IFdpbmRvd3MgcG9ydCBoYXMgZ3JlYXQgc3BlZWQgaW1wcm92ZW1l
bnQgYmVjYXVzZQorICAgICAgICBpdHMgaW1wbGVtZW50YXRpb24gb2YgZm9yay9leGVjIGlzIHRl
cnJpYmxlLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy1h
bGwucGw6CisgICAgICAgIChzcGF3bkdlbmVyYXRlQmluZGluZ3NJZk5lZWRlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbDoKKyAgICAgICAgKGdlbmVy
YXRlQmluZGluZ3MpOgorCiAyMDE3LTExLTIyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVp
ZEBzb255LmNvbT4KIAogICAgICAgICBXZWJDb3JlT2JqQ0V4dHJhcy5oIGlzIGJlaW5nIGluY2x1
ZGVkIGluIHRvbyBtYW55IHBsYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy1hbGwucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLWFsbC5wbAppbmRleCA5NjhlYTExM2ViNC4u
ZDA4ZmYxMjVhNGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Z2VuZXJhdGUtYmluZGluZ3MtYWxsLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MtYWxsLnBsCkBAIC0xNjMsMTEgKzE2MywxNSBAQCBzdWIg
c3Bhd25HZW5lcmF0ZUJpbmRpbmdzSWZOZWVkZWQKIHsKICAgICByZXR1cm4gaWYgJGFib3J0Owog
ICAgIHJldHVybiB1bmxlc3MgQGlkbEZpbGVzVG9VcGRhdGU7Ci0gICAgbXkgJGZpbGUgPSBzaGlm
dCBAaWRsRmlsZXNUb1VwZGF0ZTsKLSAgICAkY3VycmVudENvdW50Kys7Ci0gICAgbXkgJGJhc2Vu
YW1lID0gYmFzZW5hbWUoJGZpbGUpOwotICAgIHByaW50UHJvZ3Jlc3MoIlskY3VycmVudENvdW50
LyR0b3RhbENvdW50XSAkYmFzZW5hbWUiKTsKLSAgICBteSAkcGlkID0gc3Bhd25Db21tYW5kKCRw
ZXJsLCBAYXJncywgJGZpbGUpOworICAgIG15ICRiYXRjaENvdW50ID0gMzA7CisgICAgIyBteSAk
YmF0Y2hDb3VudCA9IGludCgoJHRvdGFsQ291bnQgLSAkY3VycmVudENvdW50KSAvICRudW1PZkpv
YnMpIHx8IDE7CisgICAgbXkgQGZpbGVzID0gc3BsaWNlKEBpZGxGaWxlc1RvVXBkYXRlLCAwLCAk
YmF0Y2hDb3VudCk7CisgICAgZm9yIChAZmlsZXMpIHsKKyAgICAgICAgJGN1cnJlbnRDb3VudCsr
OworICAgICAgICBteSAkYmFzZW5hbWUgPSBiYXNlbmFtZSgkXyk7CisgICAgICAgIHByaW50UHJv
Z3Jlc3MoIlskY3VycmVudENvdW50LyR0b3RhbENvdW50XSAkYmFzZW5hbWUiKTsKKyAgICB9Cisg
ICAgbXkgJHBpZCA9IHNwYXduQ29tbWFuZCgkcGVybCwgQGFyZ3MsIEBmaWxlcyk7CiAgICAgJGFi
b3J0ID0gMSB1bmxlc3MgZGVmaW5lZCAkcGlkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAppbmRleCAyMzA0M2ZkYWZh
NC4uNWU0ZGMyYWFlZTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbApAQCAtNzEsOSArNzEsNyBAQCBHZXRPcHRpb25zKCdp
bmNsdWRlPXNAJyA9PiBcQGlkbERpcmVjdG9yaWVzLAogICAgICAgICAgICAnYWRkaXRpb25hbElk
bEZpbGVzPXMnID0+IFwkYWRkaXRpb25hbElkbEZpbGVzLAogICAgICAgICAgICAnaWRsQXR0cmli
dXRlc0ZpbGU9cycgPT4gXCRpZGxBdHRyaWJ1dGVzRmlsZSk7CiAKLW15ICR0YXJnZXRJZGxGaWxl
ID0gJEFSR1ZbMF07Ci0KLWRpZSgnTXVzdCBzcGVjaWZ5IGlucHV0IGZpbGUuJykgdW5sZXNzIGRl
ZmluZWQoJHRhcmdldElkbEZpbGUpOworZGllKCdNdXN0IHNwZWNpZnkgaW5wdXQgZmlsZS4nKSB1
bmxlc3MgQEFSR1Y7CiBkaWUoJ011c3Qgc3BlY2lmeSBnZW5lcmF0b3InKSB1bmxlc3MgZGVmaW5l
ZCgkZ2VuZXJhdG9yKTsKIGRpZSgnTXVzdCBzcGVjaWZ5IG91dHB1dCBkaXJlY3RvcnkuJykgdW5s
ZXNzIGRlZmluZWQoJG91dHB1dERpcmVjdG9yeSk7CiBkaWUoJ011c3Qgc3BlY2lmeSBJREwgYXR0
cmlidXRlcyBmaWxlLicpIHVubGVzcyBkZWZpbmVkKCRpZGxBdHRyaWJ1dGVzRmlsZSk7CkBAIC04
MSwxNDAgKzc5LDE0OCBAQCBkaWUoJ011c3Qgc3BlY2lmeSBJREwgYXR0cmlidXRlcyBmaWxlLicp
IHVubGVzcyBkZWZpbmVkKCRpZGxBdHRyaWJ1dGVzRmlsZSk7CiBpZiAoISRvdXRwdXRIZWFkZXJz
RGlyZWN0b3J5KSB7CiAgICAgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnkgPSAkb3V0cHV0RGlyZWN0
b3J5OwogfQotJHRhcmdldElkbEZpbGUgPSBDd2Q6OnJlYWxwYXRoKCR0YXJnZXRJZGxGaWxlKTsK
LWlmICgkdmVyYm9zZSkgewotICAgIHByaW50ICIkZ2VuZXJhdG9yOiAkdGFyZ2V0SWRsRmlsZVxu
IjsKLX0KLW15ICR0YXJnZXRJbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNlKCR0YXJnZXRJZGxGaWxl
LCAiLmlkbCIpOwotCi1teSAkaWRsRm91bmQgPSAwOwotbXkgQHN1cHBsZW1lbnRlZElkbEZpbGVz
OwotaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkgewotICAgICMgVGhlIGZvcm1hdCBv
ZiBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGU6Ci0gICAgIwotICAgICMgRE9NV2luZG93
LmlkbCBQLmlkbCBRLmlkbCBSLmlkbAotICAgICMgRG9jdW1lbnQuaWRsIFMuaWRsCi0gICAgIyBF
dmVudC5pZGwKLSAgICAjIC4uLgotICAgICMKLSAgICAjIFRoZSBhYm92ZSBpbmRpY2F0ZXMgdGhh
dCBET01XaW5kb3cuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBQLmlkbCwgUS5pZGwgYW5kIFIuaWRs
LAotICAgICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlkbCwgYW5kIEV2ZW50
LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KLSAgICAjIFRoZSBJREwgdGhhdCBzdXBw
bGVtZW50cyBhbm90aGVyIElETCAoZS5nLiBQLmlkbCkgbmV2ZXIgYXBwZWFycyBpbiB0aGUgZGVw
ZW5kZW5jeSBmaWxlLgotICAgIG9wZW4gRkgsICI8ICRzdXBwbGVtZW50YWxEZXBlbmRlbmN5Rmls
ZSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGVcbiI7Ci0g
ICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgewotICAgICAgICBteSAoJGlkbEZpbGUsIEBmb2xs
b3dpbmdJZGxGaWxlcykgPSBzcGxpdCgvXHMrLywgJGxpbmUpOwotICAgICAgICBpZiAoJGlkbEZp
bGUgYW5kIGZpbGVwYXJzZSgkaWRsRmlsZSkgZXEgZmlsZXBhcnNlKCR0YXJnZXRJZGxGaWxlKSkg
ewotICAgICAgICAgICAgJGlkbEZvdW5kID0gMTsKLSAgICAgICAgICAgIEBzdXBwbGVtZW50ZWRJ
ZGxGaWxlcyA9IHNvcnQgQGZvbGxvd2luZ0lkbEZpbGVzOwotICAgICAgICB9Ci0gICAgfQotICAg
IGNsb3NlIEZIOwogCi0gICAgIyAkYWRkaXRpb25hbElkbEZpbGVzIGlzIGxpc3Qgb2YgSURMIGZp
bGVzIHdoaWNoIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4KLSAgICAjIERlcml2ZWRTb3VyY2Vz
Ki5jcHAgKGkuZS4gdGhleSBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc3VwcGxlbWVudGFsCi0g
ICAgIyBkZXBlbmRlbmN5IGZpbGUpIGJ1dCBzaG91bGQgZ2VuZXJhdGUgLmggYW5kIC5jcHAgZmls
ZXMuCi0gICAgaWYgKCEkaWRsRm91bmQgYW5kICRhZGRpdGlvbmFsSWRsRmlsZXMpIHsKLSAgICAg
ICAgbXkgQGlkbEZpbGVzID0gc2hlbGx3b3JkcygkYWRkaXRpb25hbElkbEZpbGVzKTsKLSAgICAg
ICAgJGlkbEZvdW5kID0gZ3JlcCB7ICRfIGFuZCBmaWxlcGFyc2UoJF8pIGVxIGZpbGVwYXJzZSgk
dGFyZ2V0SWRsRmlsZSkgfSBAaWRsRmlsZXM7CitnZW5lcmF0ZUJpbmRpbmdzKCRfKSBmb3IgKEBB
UkdWKTsKKworc3ViIGdlbmVyYXRlQmluZGluZ3MKK3sKKyAgICBteSAoJHRhcmdldElkbEZpbGUp
ID0gQF87CisKKyAgICAkdGFyZ2V0SWRsRmlsZSA9IEN3ZDo6cmVhbHBhdGgoJHRhcmdldElkbEZp
bGUpOworICAgIGlmICgkdmVyYm9zZSkgeworICAgICAgICBwcmludCAiJGdlbmVyYXRvcjogJHRh
cmdldElkbEZpbGVcbiI7CiAgICAgfQorICAgIG15ICR0YXJnZXRJbnRlcmZhY2VOYW1lID0gZmls
ZXBhcnNlKCR0YXJnZXRJZGxGaWxlLCAiLmlkbCIpOworCisgICAgbXkgJGlkbEZvdW5kID0gMDsK
KyAgICBteSBAc3VwcGxlbWVudGVkSWRsRmlsZXM7CisgICAgaWYgKCRzdXBwbGVtZW50YWxEZXBl
bmRlbmN5RmlsZSkgeworICAgICAgICAjIFRoZSBmb3JtYXQgb2YgYSBzdXBwbGVtZW50YWwgZGVw
ZW5kZW5jeSBmaWxlOgorICAgICAgICAjCisgICAgICAgICMgRE9NV2luZG93LmlkbCBQLmlkbCBR
LmlkbCBSLmlkbAorICAgICAgICAjIERvY3VtZW50LmlkbCBTLmlkbAorICAgICAgICAjIEV2ZW50
LmlkbAorICAgICAgICAjIC4uLgorICAgICAgICAjCisgICAgICAgICMgVGhlIGFib3ZlIGluZGlj
YXRlcyB0aGF0IERPTVdpbmRvdy5pZGwgaXMgc3VwcGxlbWVudGVkIGJ5IFAuaWRsLCBRLmlkbCBh
bmQgUi5pZGwsCisgICAgICAgICMgRG9jdW1lbnQuaWRsIGlzIHN1cHBsZW1lbnRlZCBieSBTLmlk
bCwgYW5kIEV2ZW50LmlkbCBpcyBzdXBwbGVtZW50ZWQgYnkgbm8gSURMcy4KKyAgICAgICAgIyBU
aGUgSURMIHRoYXQgc3VwcGxlbWVudHMgYW5vdGhlciBJREwgKGUuZy4gUC5pZGwpIG5ldmVyIGFw
cGVhcnMgaW4gdGhlIGRlcGVuZGVuY3kgZmlsZS4KKyAgICAgICAgb3BlbiBGSCwgIjwgJHN1cHBs
ZW1lbnRhbERlcGVuZGVuY3lGaWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRzdXBwbGVtZW50YWxE
ZXBlbmRlbmN5RmlsZVxuIjsKKyAgICAgICAgd2hpbGUgKG15ICRsaW5lID0gPEZIPikgeworICAg
ICAgICAgICAgbXkgKCRpZGxGaWxlLCBAZm9sbG93aW5nSWRsRmlsZXMpID0gc3BsaXQoL1xzKy8s
ICRsaW5lKTsKKyAgICAgICAgICAgIGlmICgkaWRsRmlsZSBhbmQgZmlsZXBhcnNlKCRpZGxGaWxl
KSBlcSBmaWxlcGFyc2UoJHRhcmdldElkbEZpbGUpKSB7CisgICAgICAgICAgICAgICAgJGlkbEZv
dW5kID0gMTsKKyAgICAgICAgICAgICAgICBAc3VwcGxlbWVudGVkSWRsRmlsZXMgPSBzb3J0IEBm
b2xsb3dpbmdJZGxGaWxlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjbG9z
ZSBGSDsKKworICAgICAgICAjICRhZGRpdGlvbmFsSWRsRmlsZXMgaXMgbGlzdCBvZiBJREwgZmls
ZXMgd2hpY2ggc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbgorICAgICAgICAjIERlcml2ZWRTb3Vy
Y2VzKi5jcHAgKGkuZS4gdGhleSBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc3VwcGxlbWVudGFs
CisgICAgICAgICMgZGVwZW5kZW5jeSBmaWxlKSBidXQgc2hvdWxkIGdlbmVyYXRlIC5oIGFuZCAu
Y3BwIGZpbGVzLgorICAgICAgICBpZiAoISRpZGxGb3VuZCBhbmQgJGFkZGl0aW9uYWxJZGxGaWxl
cykgeworICAgICAgICAgICAgbXkgQGlkbEZpbGVzID0gc2hlbGx3b3JkcygkYWRkaXRpb25hbElk
bEZpbGVzKTsKKyAgICAgICAgICAgICRpZGxGb3VuZCA9IGdyZXAgeyAkXyBhbmQgZmlsZXBhcnNl
KCRfKSBlcSBmaWxlcGFyc2UoJHRhcmdldElkbEZpbGUpIH0gQGlkbEZpbGVzOworICAgICAgICB9
CiAKLSAgICBpZiAoISRpZGxGb3VuZCkgewotICAgICAgICBteSAkY29kZUdlbiA9IENvZGVHZW5l
cmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5
LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5j
aWVzLCAkdmVyYm9zZSk7CisgICAgICAgIGlmICghJGlkbEZvdW5kKSB7CisgICAgICAgICAgICBt
eSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJh
dG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nl
c3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9zZSk7CiAKLSAgICAgICAgIyBXZSBnZW5l
cmF0ZSBlbXB0eSAuaCBhbmQgLmNwcCBmaWxlcyBqdXN0IHRvIHRlbGwgYnVpbGQgc2NyaXB0cyB0
aGF0IC5oIGFuZCAuY3BwIGZpbGVzIGFyZSBjcmVhdGVkLgotICAgICAgICBnZW5lcmF0ZUVtcHR5
SGVhZGVyQW5kQ3BwKCRjb2RlR2VuLT5GaWxlTmFtZVByZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNl
TmFtZSwgJG91dHB1dEhlYWRlcnNEaXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpOwotICAgICAg
ICBleGl0IDA7CisgICAgICAgICAgICAjIFdlIGdlbmVyYXRlIGVtcHR5IC5oIGFuZCAuY3BwIGZp
bGVzIGp1c3QgdG8gdGVsbCBidWlsZCBzY3JpcHRzIHRoYXQgLmggYW5kIC5jcHAgZmlsZXMgYXJl
IGNyZWF0ZWQuCisgICAgICAgICAgICBnZW5lcmF0ZUVtcHR5SGVhZGVyQW5kQ3BwKCRjb2RlR2Vu
LT5GaWxlTmFtZVByZWZpeCgpLCAkdGFyZ2V0SW50ZXJmYWNlTmFtZSwgJG91dHB1dEhlYWRlcnNE
aXJlY3RvcnksICRvdXRwdXREaXJlY3RvcnkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CiAgICAgfQotfQogCi1teSAkaW5wdXQ7Ci17Ci0gICAgbG9jYWwgJElOUFVUX1JFQ09SRF9T
RVBBUkFUT1I7Ci0gICAgb3BlbihKU09OLCAiPCIsICRpZGxBdHRyaWJ1dGVzRmlsZSkgb3IgZGll
ICJDb3VsZG4ndCBvcGVuICRpZGxBdHRyaWJ1dGVzRmlsZTogJCEiOwotICAgICRpbnB1dCA9IDxK
U09OPjsKLSAgICBjbG9zZShKU09OKTsKLX0KKyAgICBteSAkaW5wdXQ7CisgICAgeworICAgICAg
ICBsb2NhbCAkSU5QVVRfUkVDT1JEX1NFUEFSQVRPUjsKKyAgICAgICAgb3BlbihKU09OLCAiPCIs
ICRpZGxBdHRyaWJ1dGVzRmlsZSkgb3IgZGllICJDb3VsZG4ndCBvcGVuICRpZGxBdHRyaWJ1dGVz
RmlsZTogJCEiOworICAgICAgICAkaW5wdXQgPSA8SlNPTj47CisgICAgICAgIGNsb3NlKEpTT04p
OworICAgIH0KIAotbXkgJGpzb25EZWNvZGVyID0gSlNPTjo6UFAtPm5ldy0+dXRmODsKLW15ICRq
c29uSGFzaFJlZiA9ICRqc29uRGVjb2Rlci0+ZGVjb2RlKCRpbnB1dCk7Ci1teSAkaWRsQXR0cmli
dXRlcyA9ICRqc29uSGFzaFJlZi0+e2F0dHJpYnV0ZXN9OwotCi0jIFBhcnNlIHRoZSB0YXJnZXQg
SURMIGZpbGUuCi1teSAkdGFyZ2V0UGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsK
LW15ICR0YXJnZXREb2N1bWVudCA9ICR0YXJnZXRQYXJzZXItPlBhcnNlKCR0YXJnZXRJZGxGaWxl
LCAkZGVmaW5lcywgJHByZXByb2Nlc3NvciwgJGlkbEF0dHJpYnV0ZXMpOwotCi1mb3JlYWNoIG15
ICRpZGxGaWxlIChAc3VwcGxlbWVudGVkSWRsRmlsZXMpIHsKLSAgICBuZXh0IGlmICRpZGxGaWxl
IGVxICR0YXJnZXRJZGxGaWxlOwotCi0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBmaWxlcGFyc2Uo
JGlkbEZpbGUsICIuaWRsIik7Ci0gICAgbXkgJHBhcnNlciA9IElETFBhcnNlci0+bmV3KCEkdmVy
Ym9zZSk7Ci0gICAgbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZpbGUsICRkZWZp
bmVzLCAkcHJlcHJvY2Vzc29yLCAkaWRsQXR0cmlidXRlcyk7Ci0KLSAgICBmb3JlYWNoIG15ICRp
bnRlcmZhY2UgKEB7JGRvY3VtZW50LT5pbnRlcmZhY2VzfSkgewotICAgICAgICBpZiAoISRpbnRl
cmZhY2UtPmlzUGFydGlhbCB8fCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJnZXRJbnRl
cmZhY2VOYW1lKSB7Ci0gICAgICAgICAgICBteSAkdGFyZ2V0RGF0YU5vZGU7Ci0gICAgICAgICAg
ICBteSBAdGFyZ2V0R2xvYmFsQ29udGV4dHM7Ci0gICAgICAgICAgICBmb3JlYWNoIG15ICRpbnRl
cmZhY2UgKEB7JHRhcmdldERvY3VtZW50LT5pbnRlcmZhY2VzfSkgewotICAgICAgICAgICAgICAg
IGlmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICR0YXJnZXREYXRhTm9kZSA9ICRpbnRlcmZhY2U7Ci0gICAgICAg
ICAgICAgICAgICAgIG15ICRleHBvc2VkQXR0cmlidXRlID0gJHRhcmdldERhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRXhwb3NlZCJ9IHx8ICJXaW5kb3ciOwotICAgICAgICAgICAgICAg
ICAgICAkZXhwb3NlZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEp
IGlmIHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOwotICAgICAgICAgICAg
ICAgICAgICBAdGFyZ2V0R2xvYmFsQ29udGV4dHMgPSBzcGxpdCgiLCIsICRleHBvc2VkQXR0cmli
dXRlKTsKLSAgICAgICAgICAgICAgICAgICAgbGFzdDsKKyAgICBteSAkanNvbkRlY29kZXIgPSBK
U09OOjpQUC0+bmV3LT51dGY4OworICAgIG15ICRqc29uSGFzaFJlZiA9ICRqc29uRGVjb2Rlci0+
ZGVjb2RlKCRpbnB1dCk7CisgICAgbXkgJGlkbEF0dHJpYnV0ZXMgPSAkanNvbkhhc2hSZWYtPnth
dHRyaWJ1dGVzfTsKKworICAgICMgUGFyc2UgdGhlIHRhcmdldCBJREwgZmlsZS4KKyAgICBteSAk
dGFyZ2V0UGFyc2VyID0gSURMUGFyc2VyLT5uZXcoISR2ZXJib3NlKTsKKyAgICBteSAkdGFyZ2V0
RG9jdW1lbnQgPSAkdGFyZ2V0UGFyc2VyLT5QYXJzZSgkdGFyZ2V0SWRsRmlsZSwgJGRlZmluZXMs
ICRwcmVwcm9jZXNzb3IsICRpZGxBdHRyaWJ1dGVzKTsKKworICAgIGZvcmVhY2ggbXkgJGlkbEZp
bGUgKEBzdXBwbGVtZW50ZWRJZGxGaWxlcykgeworICAgICAgICBuZXh0IGlmICRpZGxGaWxlIGVx
ICR0YXJnZXRJZGxGaWxlOworCisgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gZmlsZXBhcnNl
KCRpZGxGaWxlLCAiLmlkbCIpOworICAgICAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXco
ISR2ZXJib3NlKTsKKyAgICAgICAgbXkgJGRvY3VtZW50ID0gJHBhcnNlci0+UGFyc2UoJGlkbEZp
bGUsICRkZWZpbmVzLCAkcHJlcHJvY2Vzc29yLCAkaWRsQXR0cmlidXRlcyk7CisKKyAgICAgICAg
Zm9yZWFjaCBteSAkaW50ZXJmYWNlIChAeyRkb2N1bWVudC0+aW50ZXJmYWNlc30pIHsKKyAgICAg
ICAgICAgIGlmICghJGludGVyZmFjZS0+aXNQYXJ0aWFsIHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5h
bWUgZXEgJHRhcmdldEludGVyZmFjZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBteSAkdGFyZ2V0
RGF0YU5vZGU7CisgICAgICAgICAgICAgICAgbXkgQHRhcmdldEdsb2JhbENvbnRleHRzOworICAg
ICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGludGVyZmFjZSAoQHskdGFyZ2V0RG9jdW1lbnQtPmlu
dGVyZmFjZXN9KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT50eXBlLT5u
YW1lIGVxICR0YXJnZXRJbnRlcmZhY2VOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAk
dGFyZ2V0RGF0YU5vZGUgPSAkaW50ZXJmYWNlOworICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JGV4cG9zZWRBdHRyaWJ1dGUgPSAkdGFyZ2V0RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJFeHBvc2VkIn0gfHwgIldpbmRvdyI7CisgICAgICAgICAgICAgICAgICAgICAgICAkZXhwb3Nl
ZEF0dHJpYnV0ZSA9IHN1YnN0cigkZXhwb3NlZEF0dHJpYnV0ZSwgMSwgLTEpIGlmIHN1YnN0cigk
ZXhwb3NlZEF0dHJpYnV0ZSwgMCwgMSkgZXEgIigiOworICAgICAgICAgICAgICAgICAgICAgICAg
QHRhcmdldEdsb2JhbENvbnRleHRzID0gc3BsaXQoIiwiLCAkZXhwb3NlZEF0dHJpYnV0ZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGllICJOb3QgZm91bmQg
YW4gaW50ZXJmYWNlICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4gJHt0YXJnZXRJbnRlcmZhY2VO
YW1lfS5pZGwuIiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5vZGU7CisgICAgICAgICAgICAg
ICAgZGllICJOb3QgZm91bmQgYW4gaW50ZXJmYWNlICR7dGFyZ2V0SW50ZXJmYWNlTmFtZX0gaW4g
JHt0YXJnZXRJbnRlcmZhY2VOYW1lfS5pZGwuIiB1bmxlc3MgZGVmaW5lZCAkdGFyZ2V0RGF0YU5v
ZGU7CiAKLSAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgYXR0cmlidXRlcyBvZiBwYXJ0aWFsIGlu
dGVyZmFjZXMuCi0gICAgICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFj
ZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9w
ZXJ0eUJlRXhwb3NlZCgkYXR0cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAg
ICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGF0dHJpYnV0ZXMgb2YgcGFydGlhbCBpbnRlcmZhY2Vz
LgorICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5h
dHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9w
ZXJ0eUJlRXhwb3NlZCgkYXR0cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKIAotICAg
ICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhpcyBhdHRyaWJ1dGUgaXMgaW1wbGVtZW50ZWQg
YnkgJGludGVyZmFjZU5hbWUuCi0gICAgICAgICAgICAgICAgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZh
Y2UtPmlzUGFydGlhbCAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVmbGVj
dH07CisgICAgICAgICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhpcyBhdHRyaWJ1dGUgaXMg
aW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCisgICAgICAgICAgICAgICAgICAgICRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNl
TmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWwgJiYgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1JlZmxlY3R9OwogCi0gICAgICAgICAgICAgICAgIyBBZGQgaW50ZXJmYWNlLXdp
ZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIGF0dHJpYnV0ZS4KLSAgICAgICAgICAgICAg
ICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAg
ICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFj
aCBhdHRyaWJ1dGUuCisgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGV4dGVuZGVkQXR0
cmlidXRlTmFtZSAoa2V5cyAleyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRl
eHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1
dGUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERh
dGFOb2RlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICMgU3VwcG9ydCBmb3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAg
ICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30p
IHsKLSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgk
b3BlcmF0aW9uLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICAjIFN1
cHBvcnQgZm9yIG1ldGhvZHMgb2YgcGFydGlhbCBpbnRlcmZhY2VzLgorICAgICAgICAgICAgICAg
IGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgeworICAg
ICAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkb3Bl
cmF0aW9uLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKIAotICAgICAgICAgICAgICAgICMgUmVj
b3JkIHRoYXQgdGhpcyBtZXRob2QgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCi0g
ICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVu
dGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKKyAgICAg
ICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBi
eSAkaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRl
cmZhY2UtPmlzUGFydGlhbDsKIAotICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRl
IGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBtZXRob2QuCi0gICAgICAgICAgICAgICAgZm9y
ZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgICAgICAgICAkb3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAg
ICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggbWV0
aG9kLgorICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5h
bWUgKGtleXMgJXskaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRB
dHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRl
ZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkb3BlcmF0aW9uKTsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+
b3BlcmF0aW9uc30sICRvcGVyYXRpb24pOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAj
IFN1cHBvcnQgZm9yIGNvbnN0YW50cyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAgICAgICAg
ICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHskaW50ZXJmYWNlLT5jb25zdGFudHN9KSB7Ci0gICAg
ICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJGNvbnN0YW50
LCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICAjIFN1cHBvcnQgZm9y
IGNvbnN0YW50cyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCisgICAgICAgICAgICAgICAgZm9yZWFj
aCBteSAkY29uc3RhbnQgKEB7JGludGVyZmFjZS0+Y29uc3RhbnRzfSkgeworICAgICAgICAgICAg
ICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkY29uc3RhbnQsIFxA
dGFyZ2V0R2xvYmFsQ29udGV4dHMpOwogCi0gICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0
aGlzIGNvbnN0YW50IGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgotICAgICAgICAg
ICAgICAgICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9
ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKKyAgICAgICAgICAgICAg
ICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIGNvbnN0YW50IGlzIGltcGxlbWVudGVkIGJ5ICRpbnRl
cmZhY2VOYW1lLgorICAgICAgICAgICAgICAgICAgICAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5p
c1BhcnRpYWw7CiAKLSAgICAgICAgICAgICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRl
ZCBhdHRyaWJ1dGVzIHRvIGVhY2ggY29uc3RhbnQuCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBt
eSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzfSkgewotICAgICAgICAgICAgICAgICAgICAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgICMg
QWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBjb25zdGFudC4K
KyAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChr
ZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgJGNvbnN0YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1
dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJp
YnV0ZU5hbWV9OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQHskdGFyZ2V0RGF0YU5vZGUtPmNvbnN0YW50c30sICRjb25zdGFudCk7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmNvbnN0YW50
c30sICRjb25zdGFudCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
ZSAiJGlkbEZpbGUgaXMgbm90IGEgc3VwcGxlbWVudGFsIGRlcGVuZGVuY3kgb2YgJHRhcmdldElk
bEZpbGUuIFRoZXJlIG1heWJlIGEgYnVnIGluIHRoZSBzdXBwbGVtZW50YWwgZGVwZW5kZW5jeSBn
ZW5lcmF0b3IgKHByZXByb2Nlc3MtaWRscy5wbCkuXG4iOwogICAgICAgICAgICAgfQotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgZGllICIkaWRsRmlsZSBpcyBub3QgYSBzdXBwbGVtZW50
YWwgZGVwZW5kZW5jeSBvZiAkdGFyZ2V0SWRsRmlsZS4gVGhlcmUgbWF5YmUgYSBidWcgaW4gdGhl
IHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGdlbmVyYXRvciAocHJlcHJvY2Vzcy1pZGxzLnBsKS5c
biI7CiAgICAgICAgIH0KICAgICB9Ci19CiAKLSMgR2VuZXJhdGUgZGVzaXJlZCBvdXRwdXQgZm9y
IHRoZSB0YXJnZXQgSURMIGZpbGUuCi1teSAkY29kZUdlbiA9IENvZGVHZW5lcmF0b3ItPm5ldyhc
QGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0b3J5LCAkb3V0cHV0SGVh
ZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5kZW5jaWVzLCAkdmVyYm9z
ZSwgJHRhcmdldElkbEZpbGUsICRpZGxBdHRyaWJ1dGVzKTsKLSRjb2RlR2VuLT5Qcm9jZXNzRG9j
dW1lbnQoJHRhcmdldERvY3VtZW50LCAkZGVmaW5lcyk7CisgICAgIyBHZW5lcmF0ZSBkZXNpcmVk
IG91dHB1dCBmb3IgdGhlIHRhcmdldCBJREwgZmlsZS4KKyAgICBteSAkY29kZUdlbiA9IENvZGVH
ZW5lcmF0b3ItPm5ldyhcQGlkbERpcmVjdG9yaWVzLCAkZ2VuZXJhdG9yLCAkb3V0cHV0RGlyZWN0
b3J5LCAkb3V0cHV0SGVhZGVyc0RpcmVjdG9yeSwgJHByZXByb2Nlc3NvciwgJHdyaXRlRGVwZW5k
ZW5jaWVzLCAkdmVyYm9zZSwgJHRhcmdldElkbEZpbGUsICRpZGxBdHRyaWJ1dGVzKTsKKyAgICAk
Y29kZUdlbi0+UHJvY2Vzc0RvY3VtZW50KCR0YXJnZXREb2N1bWVudCwgJGRlZmluZXMpOworfQog
CiAjIEF0dHJpYnV0ZXMgLyBPcGVyYXRpb25zIC8gQ29uc3RhbnRzIG9mIHN1cHBsZW1lbnRhbCBp
bnRlcmZhY2VzIGNhbiBoYXZlIGFuIFtFeHBvc2VkPVhYXSBhdHRyaWJ1dGUgd2hpY2ggcmVzdHJp
Y3RzCiAjIG9uIHdoaWNoIGdsb2JhbCBjb250ZXh0cyB0aGV5IHNob3VsZCBiZSBleHBvc2VkLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>