<?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>176331</bug_id>
          
          <creation_ts>2017-09-04 07:48:37 -0700</creation_ts>
          <short_desc>[JSC] Remove &quot;malloc&quot; and &quot;free&quot; from JSC/API</short_desc>
          <delta_ts>2017-09-27 12:37:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345211</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-04 07:48:37 -0700</bug_when>
    <thetext>[JSC] Remove &quot;malloc&quot; and &quot;free&quot; from JSC/API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345212</commentid>
    <comment_count>1</comment_count>
      <attachid>319852</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-04 07:48:47 -0700</bug_when>
    <thetext>Created attachment 319852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345213</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-04 07:50:57 -0700</bug_when>
    <thetext>Attachment 319852 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSWrapperMap.mm:303:  Use equivelent function in &lt;wtf/ASCIICType.h&gt; instead of the toupper() function.  [runtime/ctype_function] [4]
ERROR: Source/JavaScriptCore/API/ObjcRuntimeExtras.h:133:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345287</commentid>
    <comment_count>3</comment_count>
      <attachid>319866</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-04 17:38:26 -0700</bug_when>
    <thetext>Created attachment 319866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345288</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-04 17:39:27 -0700</bug_when>
    <thetext>Attachment 319866 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSWrapperMap.mm:303:  Use equivelent function in &lt;wtf/ASCIICType.h&gt; instead of the toupper() function.  [runtime/ctype_function] [4]
ERROR: Source/JavaScriptCore/API/ObjcRuntimeExtras.h:133:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345932</commentid>
    <comment_count>5</comment_count>
      <attachid>320023</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-06 08:48:40 -0700</bug_when>
    <thetext>Created attachment 320023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345933</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-06 08:51:33 -0700</bug_when>
    <thetext>Attachment 320023 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSWrapperMap.mm:302:  Use equivelent function in &lt;wtf/ASCIICType.h&gt; instead of the toupper() function.  [runtime/ctype_function] [4]
ERROR: Source/JavaScriptCore/API/JSValue.mm:1059:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345942</commentid>
    <comment_count>7</comment_count>
      <attachid>320025</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-06 09:06:02 -0700</bug_when>
    <thetext>Created attachment 320025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345945</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-06 09:08:09 -0700</bug_when>
    <thetext>Attachment 320025 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSWrapperMap.mm:302:  Use equivelent function in &lt;wtf/ASCIICType.h&gt; instead of the toupper() function.  [runtime/ctype_function] [4]
ERROR: Source/JavaScriptCore/API/JSValue.mm:1059:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345955</commentid>
    <comment_count>9</comment_count>
      <attachid>320025</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-06 09:31:05 -0700</bug_when>
    <thetext>Comment on attachment 320025
Patch

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

r=me. This is a nice cleanup patch!

&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:278
&gt; +                property.getterName = @(attributes[i].value);

Wow, I didn&apos;t know there was a magic @ operator in Obj-C. Learn something new everyday!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345959</commentid>
    <comment_count>10</comment_count>
      <attachid>320025</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-06 09:33:28 -0700</bug_when>
    <thetext>Comment on attachment 320025
Patch

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

&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:302
&gt; +    buffer[3] = toupper(*name);

Style checker is correct about this, should be using toASCIIUpper instead of toupper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346242</commentid>
    <comment_count>11</comment_count>
      <attachid>320025</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-07 01:05:28 -0700</bug_when>
    <thetext>Comment on attachment 320025
Patch

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

&gt;&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:302
&gt;&gt; +    buffer[3] = toupper(*name);
&gt; 
&gt; Style checker is correct about this, should be using toASCIIUpper instead of toupper.

OK, fixed. I was a bit worried about the difference between toupper and toASCIIUpper. But maybe, it is not a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346243</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-07 01:14:39 -0700</bug_when>
    <thetext>Committed r221723: &lt;http://trac.webkit.org/changeset/221723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353547</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:37:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693642&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319852</attachid>
            <date>2017-09-04 07:48:47 -0700</date>
            <delta_ts>2017-09-04 17:38:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176331-20170904234846.patch</filename>
            <type>text/plain</type>
            <size>12150</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MGEzNWQ2ZDBhNDJmYzBmMDA4NjUyNjYyN2RlZDRkYWFjYzBjZjdlLi45ODc5OWI3ODI2NDY1ZjFk
NGM2YjliYjI0OGQzMjY5NzViNDg0MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgIm1hbGxvYyIgYW5kICJmcmVlIiBmcm9tIEpT
Qy9BUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NjMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
QVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKHBhcnNlUHJvcGVydHlBdHRyaWJ1dGVzKToK
KyAgICAgICAgKG1ha2VTZXR0ZXJOYW1lKToKKyAgICAgICAgKGNvcHlQcm90b3R5cGVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKiBBUEkvT2JqY1J1bnRpbWVFeHRyYXMuaDoKKyAgICAgICAgKGFkb3B0
U3lzdGVtKToKKyAgICAgICAgKHByb3RvY29sSW1wbGVtZW50c1Byb3RvY29sKToKKyAgICAgICAg
KGZvckVhY2hQcm90b2NvbEltcGxlbWVudGluZ1Byb3RvY29sKToKKyAgICAgICAgKGZvckVhY2hN
ZXRob2RJbkNsYXNzKToKKyAgICAgICAgKGZvckVhY2hNZXRob2RJblByb3RvY29sKToKKyAgICAg
ICAgKGZvckVhY2hQcm9wZXJ0eUluUHJvdG9jb2wpOgorICAgICAgICAoU3RyaW5nUmFuZ2U6OlN0
cmluZ1JhbmdlKToKKyAgICAgICAgKFN0cmluZ1JhbmdlOjpvcGVyYXRvciBjb25zdCBjaGFyKiBj
b25zdCk6CisgICAgICAgIChTdHJpbmdSYW5nZTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFN0cnVj
dEJ1ZmZlcjo6U3RydWN0QnVmZmVyKToKKyAgICAgICAgKFN0cnVjdEJ1ZmZlcjo6flN0cnVjdEJ1
ZmZlcik6CisgICAgICAgIChTdHJpbmdSYW5nZTo6flN0cmluZ1JhbmdlKTogRGVsZXRlZC4KKwog
MjAxNy0wOS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJ
RExdIFVuaWZ5IGFuZCBzaW1wbGlmeSBFbmFibGVCeVNldHRpbmdzIHdpdGggdGhlIHJlc3Qgb2Yg
dGhlIHJ1bnRpbWUgc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJN
YXAubW0KaW5kZXggMDZjYzVmODhmN2RjOGQxZjllZTY5ZTU3OGMwMGQxMWZkODA5ZDA1Ny4uNTU5
NjNmOGRiMGM0ZWViODA0OGVhYTA2NTE4MTNlYjMxOTFlMmFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTI2MCwxOSArMjYwLDI1IEBAIHN0YXRpYyB2
b2lkIGNvcHlNZXRob2RzVG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xh
c3MsIFByb3RvY29sICpwCiAgICAgW3JlbmFtZU1hcCByZWxlYXNlXTsKIH0KIAotc3RhdGljIGJv
b2wgcGFyc2VQcm9wZXJ0eUF0dHJpYnV0ZXMob2JqY19wcm9wZXJ0eV90IHByb3BlcnR5LCBjaGFy
KiYgZ2V0dGVyTmFtZSwgY2hhciomIHNldHRlck5hbWUpCitzdHJ1Y3QgUHJvcGVydHkgeworICAg
IGNvbnN0IGNoYXIqIG5hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBnZXR0ZXJOYW1lOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gc2V0dGVyTmFtZTsKK307CisKK3N0YXRpYyBib29sIHBh
cnNlUHJvcGVydHlBdHRyaWJ1dGVzKG9iamNfcHJvcGVydHlfdCBvYmpjUHJvcGVydHksIFByb3Bl
cnR5JiBwcm9wZXJ0eSkKIHsKICAgICBib29sIHJlYWRvbmx5ID0gZmFsc2U7CiAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlQ291bnQ7Ci0gICAgb2JqY19wcm9wZXJ0eV9hdHRyaWJ1dGVfdCogYXR0cmli
dXRlcyA9IHByb3BlcnR5X2NvcHlBdHRyaWJ1dGVMaXN0KHByb3BlcnR5LCAmYXR0cmlidXRlQ291
bnQpOworICAgIG9iamNfcHJvcGVydHlfYXR0cmlidXRlX3QqIGF0dHJpYnV0ZXMgPSBwcm9wZXJ0
eV9jb3B5QXR0cmlidXRlTGlzdChvYmpjUHJvcGVydHksICZhdHRyaWJ1dGVDb3VudCk7CiAgICAg
aWYgKGF0dHJpYnV0ZUNvdW50KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBh
dHRyaWJ1dGVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKCooYXR0cmlidXRlc1tp
XS5uYW1lKSkgewogICAgICAgICAgICAgY2FzZSAnRyc6Ci0gICAgICAgICAgICAgICAgZ2V0dGVy
TmFtZSA9IHN0cmR1cChhdHRyaWJ1dGVzW2ldLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eS5nZXR0ZXJOYW1lID0gQChhdHRyaWJ1dGVzW2ldLnZhbHVlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgICAgIHNldHRlck5h
bWUgPSBzdHJkdXAoYXR0cmlidXRlc1tpXS52YWx1ZSk7CisgICAgICAgICAgICAgICAgcHJvcGVy
dHkuc2V0dGVyTmFtZSA9IEAoYXR0cmlidXRlc1tpXS52YWx1ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlICdSJzoKICAgICAgICAgICAgICAgICByZWFkb25seSA9
IHRydWU7CkBAIC0yODYsMjggKzI5MiwyNCBAQCBzdGF0aWMgYm9vbCBwYXJzZVByb3BlcnR5QXR0
cmlidXRlcyhvYmpjX3Byb3BlcnR5X3QgcHJvcGVydHksIGNoYXIqJiBnZXR0ZXJOYW1lLAogICAg
IHJldHVybiByZWFkb25seTsKIH0KIAotc3RhdGljIGNoYXIqIG1ha2VTZXR0ZXJOYW1lKGNvbnN0
IGNoYXIqIG5hbWUpCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYWtlU2V0dGVyTmFtZShj
b25zdCBjaGFyKiBuYW1lKQogewogICAgIHNpemVfdCBuYW1lTGVuZ3RoID0gc3RybGVuKG5hbWUp
OwotICAgIGNoYXIqIHNldHRlck5hbWUgPSAoY2hhciopbWFsbG9jKG5hbWVMZW5ndGggKyA1KTsg
Ly8gInNldCIgTmFtZSAiOlwwIgotICAgIHNldHRlck5hbWVbMF0gPSAncyc7Ci0gICAgc2V0dGVy
TmFtZVsxXSA9ICdlJzsKLSAgICBzZXR0ZXJOYW1lWzJdID0gJ3QnOwotICAgIHNldHRlck5hbWVb
M10gPSB0b3VwcGVyKCpuYW1lKTsKLSAgICBtZW1jcHkoc2V0dGVyTmFtZSArIDQsIG5hbWUgKyAx
LCBuYW1lTGVuZ3RoIC0gMSk7Ci0gICAgc2V0dGVyTmFtZVtuYW1lTGVuZ3RoICsgM10gPSAnOic7
Ci0gICAgc2V0dGVyTmFtZVtuYW1lTGVuZ3RoICsgNF0gPSAnXDAnOwotICAgIHJldHVybiBzZXR0
ZXJOYW1lOworICAgIC8vICJzZXQiIE5hbWUgIjpcMCIgID0+IG5hbWVMZW5ndGggKyA1LgorICAg
IFZlY3RvcjxjaGFyLCAxMjg+IGJ1ZmZlcihuYW1lTGVuZ3RoICsgNSk7CisgICAgYnVmZmVyWzBd
ID0gJ3MnOworICAgIGJ1ZmZlclsxXSA9ICdlJzsKKyAgICBidWZmZXJbMl0gPSAndCc7CisgICAg
YnVmZmVyWzNdID0gdG91cHBlcigqbmFtZSk7CisgICAgbWVtY3B5KGJ1ZmZlci5kYXRhKCkgKyA0
LCBuYW1lICsgMSwgbmFtZUxlbmd0aCAtIDEpOworICAgIGJ1ZmZlcltuYW1lTGVuZ3RoICsgM10g
PSAnOic7CisgICAgYnVmZmVyW25hbWVMZW5ndGggKyA0XSA9ICdcMCc7CisgICAgcmV0dXJuIEAo
YnVmZmVyLmRhdGEoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvcHlQcm90b3R5cGVQcm9wZXJ0aWVz
KEpTQ29udGV4dCAqY29udGV4dCwgQ2xhc3Mgb2JqY0NsYXNzLCBQcm90b2NvbCAqcHJvdG9jb2ws
IEpTVmFsdWUgKnByb3RvdHlwZVZhbHVlKQogewogICAgIC8vIEZpcnN0IGdhdGhlciBwcm9wcmV0
aWVzIGludG8gdGhpcyBsaXN0LCB0aGVuIGhhbmRsZSB0aGUgbWV0aG9kcyAoY2FwdHVyaW5nIHRo
ZSBhY2Nlc3NvciBtZXRob2RzKS4KLSAgICBzdHJ1Y3QgUHJvcGVydHkgewotICAgICAgICBjb25z
dCBjaGFyKiBuYW1lOwotICAgICAgICBjaGFyKiBnZXR0ZXJOYW1lOwotICAgICAgICBjaGFyKiBz
ZXR0ZXJOYW1lOwotICAgIH07CiAgICAgX19ibG9jayBWZWN0b3I8UHJvcGVydHk+IHByb3BlcnR5
TGlzdDsKIAogICAgIC8vIE1hcCByZWNvcmRpbmcgdGhlIG1ldGhvZHMgdXNlZCBhcyBnZXR0ZXJz
L3NldHRlcnMuCkBAIC0zMTYsNDEgKzMxOCwzNiBAQCBzdGF0aWMgdm9pZCBjb3B5UHJvdG90eXBl
UHJvcGVydGllcyhKU0NvbnRleHQgKmNvbnRleHQsIENsYXNzIG9iamNDbGFzcywgUHJvdG9jbwog
ICAgIC8vIFVzZWZ1bCB2YWx1ZS4KICAgICBKU1ZhbHVlICp1bmRlZmluZWQgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07CiAKLSAgICBmb3JFYWNoUHJvcGVy
dHlJblByb3RvY29sKHByb3RvY29sLCBeKG9iamNfcHJvcGVydHlfdCBwcm9wZXJ0eSl7Ci0gICAg
ICAgIGNoYXIqIGdldHRlck5hbWUgPSAwOwotICAgICAgICBjaGFyKiBzZXR0ZXJOYW1lID0gMDsK
LSAgICAgICAgYm9vbCByZWFkb25seSA9IHBhcnNlUHJvcGVydHlBdHRyaWJ1dGVzKHByb3BlcnR5
LCBnZXR0ZXJOYW1lLCBzZXR0ZXJOYW1lKTsKLSAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IHBy
b3BlcnR5X2dldE5hbWUocHJvcGVydHkpOworICAgIGZvckVhY2hQcm9wZXJ0eUluUHJvdG9jb2wo
cHJvdG9jb2wsIF4ob2JqY19wcm9wZXJ0eV90IG9iamNQcm9wZXJ0eSkgeworICAgICAgICBjb25z
dCBjaGFyKiBuYW1lID0gcHJvcGVydHlfZ2V0TmFtZShvYmpjUHJvcGVydHkpOworICAgICAgICBQ
cm9wZXJ0eSBwcm9wZXJ0eSB7IG5hbWUgfTsKKyAgICAgICAgYm9vbCByZWFkb25seSA9IHBhcnNl
UHJvcGVydHlBdHRyaWJ1dGVzKG9iamNQcm9wZXJ0eSwgcHJvcGVydHkpOwogCi0gICAgICAgIC8v
IEFkZCB0aGUgbmFtZXMgb2YgdGhlIGdldHRlciAmIHNldHRlciBtZXRob2RzIHRvIAotICAgICAg
ICBpZiAoIWdldHRlck5hbWUpCi0gICAgICAgICAgICBnZXR0ZXJOYW1lID0gc3RyZHVwKG5hbWUp
OwotICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbQChnZXR0ZXJOYW1lKV0gPSB1bmRlZmluZWQ7Cisg
ICAgICAgIC8vIEFkZCB0aGUgbmFtZXMgb2YgdGhlIGdldHRlciAmIHNldHRlciBtZXRob2RzIHRv
CisgICAgICAgIGlmICghcHJvcGVydHkuZ2V0dGVyTmFtZSkKKyAgICAgICAgICAgIHByb3BlcnR5
LmdldHRlck5hbWUgPSBAKG5hbWUpOworICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbcHJvcGVydHku
Z2V0dGVyTmFtZS5nZXQoKV0gPSB1bmRlZmluZWQ7CiAgICAgICAgIGlmICghcmVhZG9ubHkpIHsK
LSAgICAgICAgICAgIGlmICghc2V0dGVyTmFtZSkKLSAgICAgICAgICAgICAgICBzZXR0ZXJOYW1l
ID0gbWFrZVNldHRlck5hbWUobmFtZSk7Ci0gICAgICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbQChz
ZXR0ZXJOYW1lKV0gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5LnNldHRl
ck5hbWUpCisgICAgICAgICAgICAgICAgcHJvcGVydHkuc2V0dGVyTmFtZSA9IG1ha2VTZXR0ZXJO
YW1lKG5hbWUpOworICAgICAgICAgICAgYWNjZXNzb3JNZXRob2RzW3Byb3BlcnR5LnNldHRlck5h
bWUuZ2V0KCldID0gdW5kZWZpbmVkOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQWRkIHRoZSBw
cm9wZXJ0aWVzIHRvIGEgbGlzdC4KLSAgICAgICAgcHJvcGVydHlMaXN0LmFwcGVuZCgoUHJvcGVy
dHkpeyBuYW1lLCBnZXR0ZXJOYW1lLCBzZXR0ZXJOYW1lIH0pOworICAgICAgICBwcm9wZXJ0eUxp
c3QuYXBwZW5kKFdURk1vdmUocHJvcGVydHkpKTsKICAgICB9KTsKIAogICAgIC8vIENvcHkgbWV0
aG9kcyB0byB0aGUgcHJvdG90eXBlLCBjYXB0dXJpbmcgYWNjZXNzb3JzIGluIHRoZSBhY2Nlc3Nv
ck1ldGhvZHMgbWFwLgogICAgIGNvcHlNZXRob2RzVG9PYmplY3QoY29udGV4dCwgb2JqY0NsYXNz
LCBwcm90b2NvbCwgWUVTLCBwcm90b3R5cGVWYWx1ZSwgYWNjZXNzb3JNZXRob2RzKTsKIAogICAg
IC8vIEl0ZXJhdGUgdGhlIHByb3BlcnR5TGlzdCAmIGdlbmVyYXRlIGFjY2Vzc29yIHByb3BlcnRp
ZXMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eUxpc3Quc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgUHJvcGVydHkmIHByb3BlcnR5ID0gcHJvcGVydHlMaXN0W2ldOwotCi0gICAg
ICAgIEpTVmFsdWUgKmdldHRlciA9IGFjY2Vzc29yTWV0aG9kc1tAKHByb3BlcnR5LmdldHRlck5h
bWUpXTsKLSAgICAgICAgZnJlZShwcm9wZXJ0eS5nZXR0ZXJOYW1lKTsKKyAgICBmb3IgKGF1dG8m
IHByb3BlcnR5IDogcHJvcGVydHlMaXN0KSB7CisgICAgICAgIEpTVmFsdWUqIGdldHRlciA9IGFj
Y2Vzc29yTWV0aG9kc1twcm9wZXJ0eS5nZXR0ZXJOYW1lLmdldCgpXTsKICAgICAgICAgQVNTRVJU
KCFbZ2V0dGVyIGlzVW5kZWZpbmVkXSk7CiAKLSAgICAgICAgSlNWYWx1ZSAqc2V0dGVyID0gdW5k
ZWZpbmVkOworICAgICAgICBKU1ZhbHVlKiBzZXR0ZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgIGlm
IChwcm9wZXJ0eS5zZXR0ZXJOYW1lKSB7Ci0gICAgICAgICAgICBzZXR0ZXIgPSBhY2Nlc3Nvck1l
dGhvZHNbQChwcm9wZXJ0eS5zZXR0ZXJOYW1lKV07Ci0gICAgICAgICAgICBmcmVlKHByb3BlcnR5
LnNldHRlck5hbWUpOworICAgICAgICAgICAgc2V0dGVyID0gYWNjZXNzb3JNZXRob2RzW3Byb3Bl
cnR5LnNldHRlck5hbWUuZ2V0KCldOwogICAgICAgICAgICAgQVNTRVJUKCFbc2V0dGVyIGlzVW5k
ZWZpbmVkXSk7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL09iamNSdW50aW1lRXh0cmFzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09iamNSdW50aW1lRXh0cmFzLmgKaW5kZXggZmE0NGZmNmY3YWY4ZmUxNGIwODQ3ZDY5ZDdj
YWJhYzU4YjBkZmVhZi4uNzRiMTBhNDhkZjhjNDFhMjVkYWRhNWFiODA2ZjMxY2ZkYmYwYmVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVudGltZUV4dHJhcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaApAQCAt
MjMsMjIgKzIzLDI4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW1wb3J0IDxtZW1vcnk+
CiAjaW1wb3J0IDxvYmpjL1Byb3RvY29sLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNp
bXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvU3lzdGVtRnJlZS5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxULCBTeXN0
ZW1GcmVlPFQ+PiBhZG9wdFN5c3RlbShVIHZhbHVlKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8VCwgU3lzdGVtRnJlZTxUPj4odmFsdWUpOworfQogCiBpbmxpbmUgYm9vbCBwcm90b2Nv
bEltcGxlbWVudHNQcm90b2NvbChQcm90b2NvbCAqY2FuZGlkYXRlLCBQcm90b2NvbCAqdGFyZ2V0
KQogewogICAgIHVuc2lnbmVkIHByb3RvY29sUHJvdG9jb2xzQ291bnQ7Ci0gICAgUHJvdG9jb2wg
KiogcHJvdG9jb2xQcm90b2NvbHMgPSBwcm90b2NvbF9jb3B5UHJvdG9jb2xMaXN0KGNhbmRpZGF0
ZSwgJnByb3RvY29sUHJvdG9jb2xzQ291bnQpOworICAgIGF1dG8gcHJvdG9jb2xQcm90b2NvbHMg
PSBhZG9wdFN5c3RlbTxQcm90b2NvbCpbXT4ocHJvdG9jb2xfY29weVByb3RvY29sTGlzdChjYW5k
aWRhdGUsICZwcm90b2NvbFByb3RvY29sc0NvdW50KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHByb3RvY29sUHJvdG9jb2xzQ291bnQ7ICsraSkgewotICAgICAgICBpZiAocHJvdG9j
b2xfaXNFcXVhbChwcm90b2NvbFByb3RvY29sc1tpXSwgdGFyZ2V0KSkgewotICAgICAgICAgICAg
ZnJlZShwcm90b2NvbFByb3RvY29scyk7CisgICAgICAgIGlmIChwcm90b2NvbF9pc0VxdWFsKHBy
b3RvY29sUHJvdG9jb2xzW2ldLCB0YXJnZXQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0KICAgICB9Ci0gICAgZnJlZShwcm90b2NvbFByb3RvY29scyk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCkBAIC00NywxNCArNTMsMTUgQEAgaW5saW5lIHZvaWQgZm9yRWFjaFByb3Rv
Y29sSW1wbGVtZW50aW5nUHJvdG9jb2woQ2xhc3MgY2xzLCBQcm90b2NvbCAqdGFyZ2V0LCB2b2kK
ICAgICBBU1NFUlQoY2xzKTsKICAgICBBU1NFUlQodGFyZ2V0KTsKIAotICAgIFZlY3RvcjxQcm90
b2NvbCAqPiB3b3JrbGlzdDsKKyAgICBWZWN0b3I8UHJvdG9jb2wqPiB3b3JrbGlzdDsKICAgICBI
YXNoU2V0PHZvaWQqPiB2aXNpdGVkOwogCiAgICAgLy8gSW5pdGlhbGx5IGZpbGwgdGhlIHdvcmts
aXN0IHdpdGggdGhlIENsYXNzJ3MgcHJvdG9jb2xzLgotICAgIHVuc2lnbmVkIHByb3RvY29sc0Nv
dW50OwotICAgIFByb3RvY29sICoqIHByb3RvY29scyA9IGNsYXNzX2NvcHlQcm90b2NvbExpc3Qo
Y2xzLCAmcHJvdG9jb2xzQ291bnQpOwotICAgIHdvcmtsaXN0LmFwcGVuZChwcm90b2NvbHMsIHBy
b3RvY29sc0NvdW50KTsKLSAgICBmcmVlKHByb3RvY29scyk7CisgICAgeworICAgICAgICB1bnNp
Z25lZCBwcm90b2NvbHNDb3VudDsKKyAgICAgICAgYXV0byBwcm90b2NvbHMgPSBhZG9wdFN5c3Rl
bTxQcm90b2NvbCpbXT4oY2xhc3NfY29weVByb3RvY29sTGlzdChjbHMsICZwcm90b2NvbHNDb3Vu
dCkpOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQocHJvdG9jb2xzLmdldCgpLCBwcm90b2NvbHND
b3VudCk7CisgICAgfQogCiAgICAgYm9vbCBzdG9wID0gZmFsc2U7CiAgICAgd2hpbGUgKCF3b3Jr
bGlzdC5pc0VtcHR5KCkpIHsKQEAgLTczLDM3ICs4MCwzNiBAQCBpbmxpbmUgdm9pZCBmb3JFYWNo
UHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbChDbGFzcyBjbHMsIFByb3RvY29sICp0YXJnZXQs
IHZvaQogICAgICAgICB9CiAKICAgICAgICAgLy8gQWRkIGluY29ycG9yYXRlZCBwcm90b2NvbHMg
dG8gdGhlIHdvcmtsaXN0LgotICAgICAgICBwcm90b2NvbHMgPSBwcm90b2NvbF9jb3B5UHJvdG9j
b2xMaXN0KHByb3RvY29sLCAmcHJvdG9jb2xzQ291bnQpOwotICAgICAgICB3b3JrbGlzdC5hcHBl
bmQocHJvdG9jb2xzLCBwcm90b2NvbHNDb3VudCk7Ci0gICAgICAgIGZyZWUocHJvdG9jb2xzKTsK
KyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgcHJvdG9jb2xzQ291bnQ7CisgICAgICAg
ICAgICBhdXRvIHByb3RvY29scyA9IGFkb3B0U3lzdGVtPFByb3RvY29sKltdPihwcm90b2NvbF9j
b3B5UHJvdG9jb2xMaXN0KHByb3RvY29sLCAmcHJvdG9jb2xzQ291bnQpKTsKKyAgICAgICAgICAg
IHdvcmtsaXN0LmFwcGVuZChwcm90b2NvbHMuZ2V0KCksIHByb3RvY29sc0NvdW50KTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIAogaW5saW5lIHZvaWQgZm9yRWFjaE1ldGhvZEluQ2xhc3MoQ2xhc3Mg
Y2xzLCB2b2lkICheY2FsbGJhY2spKE1ldGhvZCkpCiB7CiAgICAgdW5zaWduZWQgY291bnQ7Ci0g
ICAgTWV0aG9kKiBtZXRob2RzID0gY2xhc3NfY29weU1ldGhvZExpc3QoY2xzLCAmY291bnQpOwor
ICAgIGF1dG8gbWV0aG9kcyA9IGFkb3B0U3lzdGVtPE1ldGhvZFtdPihjbGFzc19jb3B5TWV0aG9k
TGlzdChjbHMsICZjb3VudCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsg
KytpKQogICAgICAgICBjYWxsYmFjayhtZXRob2RzW2ldKTsKLSAgICBmcmVlKG1ldGhvZHMpOwog
fQogCiBpbmxpbmUgdm9pZCBmb3JFYWNoTWV0aG9kSW5Qcm90b2NvbChQcm90b2NvbCAqcHJvdG9j
b2wsIEJPT0wgaXNSZXF1aXJlZE1ldGhvZCwgQk9PTCBpc0luc3RhbmNlTWV0aG9kLCB2b2lkIChe
Y2FsbGJhY2spKFNFTCwgY29uc3QgY2hhciopKQogewogICAgIHVuc2lnbmVkIGNvdW50OwotICAg
IHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlvbiogbWV0aG9kcyA9IHByb3RvY29sX2NvcHlN
ZXRob2REZXNjcmlwdGlvbkxpc3QocHJvdG9jb2wsIGlzUmVxdWlyZWRNZXRob2QsIGlzSW5zdGFu
Y2VNZXRob2QsICZjb3VudCk7CisgICAgYXV0byBtZXRob2RzID0gYWRvcHRTeXN0ZW08b2JqY19t
ZXRob2RfZGVzY3JpcHRpb25bXT4ocHJvdG9jb2xfY29weU1ldGhvZERlc2NyaXB0aW9uTGlzdChw
cm90b2NvbCwgaXNSZXF1aXJlZE1ldGhvZCwgaXNJbnN0YW5jZU1ldGhvZCwgJmNvdW50KSk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgIGNhbGxiYWNr
KG1ldGhvZHNbaV0ubmFtZSwgbWV0aG9kc1tpXS50eXBlcyk7Ci0gICAgZnJlZShtZXRob2RzKTsK
IH0KIAogaW5saW5lIHZvaWQgZm9yRWFjaFByb3BlcnR5SW5Qcm90b2NvbChQcm90b2NvbCAqcHJv
dG9jb2wsIHZvaWQgKF5jYWxsYmFjaykob2JqY19wcm9wZXJ0eV90KSkKIHsKICAgICB1bnNpZ25l
ZCBjb3VudDsKLSAgICBvYmpjX3Byb3BlcnR5X3QqIHByb3BlcnRpZXMgPSBwcm90b2NvbF9jb3B5
UHJvcGVydHlMaXN0KHByb3RvY29sLCAmY291bnQpOworICAgIGF1dG8gcHJvcGVydGllcyA9IGFk
b3B0U3lzdGVtPG9iamNfcHJvcGVydHlfdFtdPihwcm90b2NvbF9jb3B5UHJvcGVydHlMaXN0KHBy
b3RvY29sLCAmY291bnQpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKICAgICAgICAgY2FsbGJhY2socHJvcGVydGllc1tpXSk7Ci0gICAgZnJlZShwcm9wZXJ0aWVz
KTsKIH0KIAogdGVtcGxhdGU8Y2hhciBvcGVuLCBjaGFyIGNsb3NlPgpAQCAtMTI0LDEzICsxMzAs
MTIgQEAgdm9pZCBza2lwUGFpcihjb25zdCBjaGFyKiYgcG9zaXRpb24pCiBjbGFzcyBTdHJpbmdS
YW5nZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3RyaW5nUmFuZ2UpOwogcHVibGljOgot
ICAgIFN0cmluZ1JhbmdlKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpIDogbV9w
dHIoc3RybmR1cChiZWdpbiwgZW5kIC0gYmVnaW4pKSB7IH0KLSAgICB+U3RyaW5nUmFuZ2UoKSB7
IGZyZWUobV9wdHIpOyB9Ci0gICAgb3BlcmF0b3IgY29uc3QgY2hhciooKSBjb25zdCB7IHJldHVy
biBtX3B0cjsgfQotICAgIGNvbnN0IGNoYXIqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9
CisgICAgU3RyaW5nUmFuZ2UoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkgOiBt
X3N0cmluZyhiZWdpbiwgZW5kIC0gYmVnaW4pIHsgfQorICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIq
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZGF0YSgpOyB9CisgICAgY29uc3QgY2hhciogZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZGF0YSgpOyB9CiAKIHByaXZhdGU6Ci0gICAgY2hh
ciogbV9wdHI7CisgICAgQ1N0cmluZyBtX3N0cmluZzsKIH07CiAKIGNsYXNzIFN0cnVjdEJ1ZmZl
ciB7CkBAIC0xNDAsMTYgKzE0NSwxMyBAQCBjbGFzcyBTdHJ1Y3RCdWZmZXIgewogICAgIHsKICAg
ICAgICAgTlNVSW50ZWdlciBzaXplLCBhbGlnbm1lbnQ7CiAgICAgICAgIE5TR2V0U2l6ZUFuZEFs
aWdubWVudChlbmNvZGVkVHlwZSwgJnNpemUsICZhbGlnbm1lbnQpOwotICAgICAgICAtLWFsaWdu
bWVudDsKLSAgICAgICAgbV9hbGxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1hbGxvYyhz
aXplICsgYWxpZ25tZW50KSk7Ci0gICAgICAgIG1fYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG1fYWxsb2NhdGlvbikgKyBhbGlnbm1l
bnQpICYgfmFsaWdubWVudCk7CisgICAgICAgIG1fYnVmZmVyID0gZmFzdEFsaWduZWRNYWxsb2Mo
YWxpZ25tZW50LCBzaXplKTsKICAgICB9CiAKLSAgICB+U3RydWN0QnVmZmVyKCkgeyBmcmVlKG1f
YWxsb2NhdGlvbik7IH0KKyAgICB+U3RydWN0QnVmZmVyKCkgeyBmYXN0QWxpZ25lZEZyZWUobV9i
dWZmZXIpOyB9CiAgICAgb3BlcmF0b3Igdm9pZCooKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcjsg
fQogCiBwcml2YXRlOgotICAgIHZvaWQqIG1fYWxsb2NhdGlvbjsKICAgICB2b2lkKiBtX2J1ZmZl
cjsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319866</attachid>
            <date>2017-09-04 17:38:26 -0700</date>
            <delta_ts>2017-09-06 08:48:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176331-20170905093825.patch</filename>
            <type>text/plain</type>
            <size>12160</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MGEzNWQ2ZDBhNDJmYzBmMDA4NjUyNjYyN2RlZDRkYWFjYzBjZjdlLi45ODc5OWI3ODI2NDY1ZjFk
NGM2YjliYjI0OGQzMjY5NzViNDg0MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgIm1hbGxvYyIgYW5kICJmcmVlIiBmcm9tIEpT
Qy9BUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NjMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
QVBJL0pTV3JhcHBlck1hcC5tbToKKyAgICAgICAgKHBhcnNlUHJvcGVydHlBdHRyaWJ1dGVzKToK
KyAgICAgICAgKG1ha2VTZXR0ZXJOYW1lKToKKyAgICAgICAgKGNvcHlQcm90b3R5cGVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKiBBUEkvT2JqY1J1bnRpbWVFeHRyYXMuaDoKKyAgICAgICAgKGFkb3B0
U3lzdGVtKToKKyAgICAgICAgKHByb3RvY29sSW1wbGVtZW50c1Byb3RvY29sKToKKyAgICAgICAg
KGZvckVhY2hQcm90b2NvbEltcGxlbWVudGluZ1Byb3RvY29sKToKKyAgICAgICAgKGZvckVhY2hN
ZXRob2RJbkNsYXNzKToKKyAgICAgICAgKGZvckVhY2hNZXRob2RJblByb3RvY29sKToKKyAgICAg
ICAgKGZvckVhY2hQcm9wZXJ0eUluUHJvdG9jb2wpOgorICAgICAgICAoU3RyaW5nUmFuZ2U6OlN0
cmluZ1JhbmdlKToKKyAgICAgICAgKFN0cmluZ1JhbmdlOjpvcGVyYXRvciBjb25zdCBjaGFyKiBj
b25zdCk6CisgICAgICAgIChTdHJpbmdSYW5nZTo6Z2V0IGNvbnN0KToKKyAgICAgICAgKFN0cnVj
dEJ1ZmZlcjo6U3RydWN0QnVmZmVyKToKKyAgICAgICAgKFN0cnVjdEJ1ZmZlcjo6flN0cnVjdEJ1
ZmZlcik6CisgICAgICAgIChTdHJpbmdSYW5nZTo6flN0cmluZ1JhbmdlKTogRGVsZXRlZC4KKwog
MjAxNy0wOS0wNCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXZWJJ
RExdIFVuaWZ5IGFuZCBzaW1wbGlmeSBFbmFibGVCeVNldHRpbmdzIHdpdGggdGhlIHJlc3Qgb2Yg
dGhlIHJ1bnRpbWUgc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJN
YXAubW0KaW5kZXggMDZjYzVmODhmN2RjOGQxZjllZTY5ZTU3OGMwMGQxMWZkODA5ZDA1Ny4uNTU5
NjNmOGRiMGM0ZWViODA0OGVhYTA2NTE4MTNlYjMxOTFlMmFlNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTI2MCwxOSArMjYwLDI1IEBAIHN0YXRpYyB2
b2lkIGNvcHlNZXRob2RzVG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xh
c3MsIFByb3RvY29sICpwCiAgICAgW3JlbmFtZU1hcCByZWxlYXNlXTsKIH0KIAotc3RhdGljIGJv
b2wgcGFyc2VQcm9wZXJ0eUF0dHJpYnV0ZXMob2JqY19wcm9wZXJ0eV90IHByb3BlcnR5LCBjaGFy
KiYgZ2V0dGVyTmFtZSwgY2hhciomIHNldHRlck5hbWUpCitzdHJ1Y3QgUHJvcGVydHkgeworICAg
IGNvbnN0IGNoYXIqIG5hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBnZXR0ZXJOYW1lOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gc2V0dGVyTmFtZTsKK307CisKK3N0YXRpYyBib29sIHBh
cnNlUHJvcGVydHlBdHRyaWJ1dGVzKG9iamNfcHJvcGVydHlfdCBvYmpjUHJvcGVydHksIFByb3Bl
cnR5JiBwcm9wZXJ0eSkKIHsKICAgICBib29sIHJlYWRvbmx5ID0gZmFsc2U7CiAgICAgdW5zaWdu
ZWQgYXR0cmlidXRlQ291bnQ7Ci0gICAgb2JqY19wcm9wZXJ0eV9hdHRyaWJ1dGVfdCogYXR0cmli
dXRlcyA9IHByb3BlcnR5X2NvcHlBdHRyaWJ1dGVMaXN0KHByb3BlcnR5LCAmYXR0cmlidXRlQ291
bnQpOworICAgIG9iamNfcHJvcGVydHlfYXR0cmlidXRlX3QqIGF0dHJpYnV0ZXMgPSBwcm9wZXJ0
eV9jb3B5QXR0cmlidXRlTGlzdChvYmpjUHJvcGVydHksICZhdHRyaWJ1dGVDb3VudCk7CiAgICAg
aWYgKGF0dHJpYnV0ZUNvdW50KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBh
dHRyaWJ1dGVDb3VudDsgKytpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKCooYXR0cmlidXRlc1tp
XS5uYW1lKSkgewogICAgICAgICAgICAgY2FzZSAnRyc6Ci0gICAgICAgICAgICAgICAgZ2V0dGVy
TmFtZSA9IHN0cmR1cChhdHRyaWJ1dGVzW2ldLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBwcm9w
ZXJ0eS5nZXR0ZXJOYW1lID0gQChhdHRyaWJ1dGVzW2ldLnZhbHVlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgICAgIHNldHRlck5h
bWUgPSBzdHJkdXAoYXR0cmlidXRlc1tpXS52YWx1ZSk7CisgICAgICAgICAgICAgICAgcHJvcGVy
dHkuc2V0dGVyTmFtZSA9IEAoYXR0cmlidXRlc1tpXS52YWx1ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlICdSJzoKICAgICAgICAgICAgICAgICByZWFkb25seSA9
IHRydWU7CkBAIC0yODYsMjggKzI5MiwyNCBAQCBzdGF0aWMgYm9vbCBwYXJzZVByb3BlcnR5QXR0
cmlidXRlcyhvYmpjX3Byb3BlcnR5X3QgcHJvcGVydHksIGNoYXIqJiBnZXR0ZXJOYW1lLAogICAg
IHJldHVybiByZWFkb25seTsKIH0KIAotc3RhdGljIGNoYXIqIG1ha2VTZXR0ZXJOYW1lKGNvbnN0
IGNoYXIqIG5hbWUpCitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBtYWtlU2V0dGVyTmFtZShj
b25zdCBjaGFyKiBuYW1lKQogewogICAgIHNpemVfdCBuYW1lTGVuZ3RoID0gc3RybGVuKG5hbWUp
OwotICAgIGNoYXIqIHNldHRlck5hbWUgPSAoY2hhciopbWFsbG9jKG5hbWVMZW5ndGggKyA1KTsg
Ly8gInNldCIgTmFtZSAiOlwwIgotICAgIHNldHRlck5hbWVbMF0gPSAncyc7Ci0gICAgc2V0dGVy
TmFtZVsxXSA9ICdlJzsKLSAgICBzZXR0ZXJOYW1lWzJdID0gJ3QnOwotICAgIHNldHRlck5hbWVb
M10gPSB0b3VwcGVyKCpuYW1lKTsKLSAgICBtZW1jcHkoc2V0dGVyTmFtZSArIDQsIG5hbWUgKyAx
LCBuYW1lTGVuZ3RoIC0gMSk7Ci0gICAgc2V0dGVyTmFtZVtuYW1lTGVuZ3RoICsgM10gPSAnOic7
Ci0gICAgc2V0dGVyTmFtZVtuYW1lTGVuZ3RoICsgNF0gPSAnXDAnOwotICAgIHJldHVybiBzZXR0
ZXJOYW1lOworICAgIC8vICJzZXQiIE5hbWUgIjpcMCIgID0+IG5hbWVMZW5ndGggKyA1LgorICAg
IFZlY3RvcjxjaGFyLCAxMjg+IGJ1ZmZlcihuYW1lTGVuZ3RoICsgNSk7CisgICAgYnVmZmVyWzBd
ID0gJ3MnOworICAgIGJ1ZmZlclsxXSA9ICdlJzsKKyAgICBidWZmZXJbMl0gPSAndCc7CisgICAg
YnVmZmVyWzNdID0gdG91cHBlcigqbmFtZSk7CisgICAgbWVtY3B5KGJ1ZmZlci5kYXRhKCkgKyA0
LCBuYW1lICsgMSwgbmFtZUxlbmd0aCAtIDEpOworICAgIGJ1ZmZlcltuYW1lTGVuZ3RoICsgM10g
PSAnOic7CisgICAgYnVmZmVyW25hbWVMZW5ndGggKyA0XSA9ICdcMCc7CisgICAgcmV0dXJuIEAo
YnVmZmVyLmRhdGEoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNvcHlQcm90b3R5cGVQcm9wZXJ0aWVz
KEpTQ29udGV4dCAqY29udGV4dCwgQ2xhc3Mgb2JqY0NsYXNzLCBQcm90b2NvbCAqcHJvdG9jb2ws
IEpTVmFsdWUgKnByb3RvdHlwZVZhbHVlKQogewogICAgIC8vIEZpcnN0IGdhdGhlciBwcm9wcmV0
aWVzIGludG8gdGhpcyBsaXN0LCB0aGVuIGhhbmRsZSB0aGUgbWV0aG9kcyAoY2FwdHVyaW5nIHRo
ZSBhY2Nlc3NvciBtZXRob2RzKS4KLSAgICBzdHJ1Y3QgUHJvcGVydHkgewotICAgICAgICBjb25z
dCBjaGFyKiBuYW1lOwotICAgICAgICBjaGFyKiBnZXR0ZXJOYW1lOwotICAgICAgICBjaGFyKiBz
ZXR0ZXJOYW1lOwotICAgIH07CiAgICAgX19ibG9jayBWZWN0b3I8UHJvcGVydHk+IHByb3BlcnR5
TGlzdDsKIAogICAgIC8vIE1hcCByZWNvcmRpbmcgdGhlIG1ldGhvZHMgdXNlZCBhcyBnZXR0ZXJz
L3NldHRlcnMuCkBAIC0zMTYsNDEgKzMxOCwzNiBAQCBzdGF0aWMgdm9pZCBjb3B5UHJvdG90eXBl
UHJvcGVydGllcyhKU0NvbnRleHQgKmNvbnRleHQsIENsYXNzIG9iamNDbGFzcywgUHJvdG9jbwog
ICAgIC8vIFVzZWZ1bCB2YWx1ZS4KICAgICBKU1ZhbHVlICp1bmRlZmluZWQgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07CiAKLSAgICBmb3JFYWNoUHJvcGVy
dHlJblByb3RvY29sKHByb3RvY29sLCBeKG9iamNfcHJvcGVydHlfdCBwcm9wZXJ0eSl7Ci0gICAg
ICAgIGNoYXIqIGdldHRlck5hbWUgPSAwOwotICAgICAgICBjaGFyKiBzZXR0ZXJOYW1lID0gMDsK
LSAgICAgICAgYm9vbCByZWFkb25seSA9IHBhcnNlUHJvcGVydHlBdHRyaWJ1dGVzKHByb3BlcnR5
LCBnZXR0ZXJOYW1lLCBzZXR0ZXJOYW1lKTsKLSAgICAgICAgY29uc3QgY2hhciogbmFtZSA9IHBy
b3BlcnR5X2dldE5hbWUocHJvcGVydHkpOworICAgIGZvckVhY2hQcm9wZXJ0eUluUHJvdG9jb2wo
cHJvdG9jb2wsIF4ob2JqY19wcm9wZXJ0eV90IG9iamNQcm9wZXJ0eSkgeworICAgICAgICBjb25z
dCBjaGFyKiBuYW1lID0gcHJvcGVydHlfZ2V0TmFtZShvYmpjUHJvcGVydHkpOworICAgICAgICBQ
cm9wZXJ0eSBwcm9wZXJ0eSB7IG5hbWUgfTsKKyAgICAgICAgYm9vbCByZWFkb25seSA9IHBhcnNl
UHJvcGVydHlBdHRyaWJ1dGVzKG9iamNQcm9wZXJ0eSwgcHJvcGVydHkpOwogCi0gICAgICAgIC8v
IEFkZCB0aGUgbmFtZXMgb2YgdGhlIGdldHRlciAmIHNldHRlciBtZXRob2RzIHRvIAotICAgICAg
ICBpZiAoIWdldHRlck5hbWUpCi0gICAgICAgICAgICBnZXR0ZXJOYW1lID0gc3RyZHVwKG5hbWUp
OwotICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbQChnZXR0ZXJOYW1lKV0gPSB1bmRlZmluZWQ7Cisg
ICAgICAgIC8vIEFkZCB0aGUgbmFtZXMgb2YgdGhlIGdldHRlciAmIHNldHRlciBtZXRob2RzIHRv
CisgICAgICAgIGlmICghcHJvcGVydHkuZ2V0dGVyTmFtZSkKKyAgICAgICAgICAgIHByb3BlcnR5
LmdldHRlck5hbWUgPSBAKG5hbWUpOworICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbcHJvcGVydHku
Z2V0dGVyTmFtZS5nZXQoKV0gPSB1bmRlZmluZWQ7CiAgICAgICAgIGlmICghcmVhZG9ubHkpIHsK
LSAgICAgICAgICAgIGlmICghc2V0dGVyTmFtZSkKLSAgICAgICAgICAgICAgICBzZXR0ZXJOYW1l
ID0gbWFrZVNldHRlck5hbWUobmFtZSk7Ci0gICAgICAgICAgICBhY2Nlc3Nvck1ldGhvZHNbQChz
ZXR0ZXJOYW1lKV0gPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBpZiAoIXByb3BlcnR5LnNldHRl
ck5hbWUpCisgICAgICAgICAgICAgICAgcHJvcGVydHkuc2V0dGVyTmFtZSA9IG1ha2VTZXR0ZXJO
YW1lKG5hbWUpOworICAgICAgICAgICAgYWNjZXNzb3JNZXRob2RzW3Byb3BlcnR5LnNldHRlck5h
bWUuZ2V0KCldID0gdW5kZWZpbmVkOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQWRkIHRoZSBw
cm9wZXJ0aWVzIHRvIGEgbGlzdC4KLSAgICAgICAgcHJvcGVydHlMaXN0LmFwcGVuZCgoUHJvcGVy
dHkpeyBuYW1lLCBnZXR0ZXJOYW1lLCBzZXR0ZXJOYW1lIH0pOworICAgICAgICBwcm9wZXJ0eUxp
c3QuYXBwZW5kKFdURk1vdmUocHJvcGVydHkpKTsKICAgICB9KTsKIAogICAgIC8vIENvcHkgbWV0
aG9kcyB0byB0aGUgcHJvdG90eXBlLCBjYXB0dXJpbmcgYWNjZXNzb3JzIGluIHRoZSBhY2Nlc3Nv
ck1ldGhvZHMgbWFwLgogICAgIGNvcHlNZXRob2RzVG9PYmplY3QoY29udGV4dCwgb2JqY0NsYXNz
LCBwcm90b2NvbCwgWUVTLCBwcm90b3R5cGVWYWx1ZSwgYWNjZXNzb3JNZXRob2RzKTsKIAogICAg
IC8vIEl0ZXJhdGUgdGhlIHByb3BlcnR5TGlzdCAmIGdlbmVyYXRlIGFjY2Vzc29yIHByb3BlcnRp
ZXMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwcm9wZXJ0eUxpc3Quc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgUHJvcGVydHkmIHByb3BlcnR5ID0gcHJvcGVydHlMaXN0W2ldOwotCi0gICAg
ICAgIEpTVmFsdWUgKmdldHRlciA9IGFjY2Vzc29yTWV0aG9kc1tAKHByb3BlcnR5LmdldHRlck5h
bWUpXTsKLSAgICAgICAgZnJlZShwcm9wZXJ0eS5nZXR0ZXJOYW1lKTsKKyAgICBmb3IgKGF1dG8m
IHByb3BlcnR5IDogcHJvcGVydHlMaXN0KSB7CisgICAgICAgIEpTVmFsdWUqIGdldHRlciA9IGFj
Y2Vzc29yTWV0aG9kc1twcm9wZXJ0eS5nZXR0ZXJOYW1lLmdldCgpXTsKICAgICAgICAgQVNTRVJU
KCFbZ2V0dGVyIGlzVW5kZWZpbmVkXSk7CiAKLSAgICAgICAgSlNWYWx1ZSAqc2V0dGVyID0gdW5k
ZWZpbmVkOworICAgICAgICBKU1ZhbHVlKiBzZXR0ZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgIGlm
IChwcm9wZXJ0eS5zZXR0ZXJOYW1lKSB7Ci0gICAgICAgICAgICBzZXR0ZXIgPSBhY2Nlc3Nvck1l
dGhvZHNbQChwcm9wZXJ0eS5zZXR0ZXJOYW1lKV07Ci0gICAgICAgICAgICBmcmVlKHByb3BlcnR5
LnNldHRlck5hbWUpOworICAgICAgICAgICAgc2V0dGVyID0gYWNjZXNzb3JNZXRob2RzW3Byb3Bl
cnR5LnNldHRlck5hbWUuZ2V0KCldOwogICAgICAgICAgICAgQVNTRVJUKCFbc2V0dGVyIGlzVW5k
ZWZpbmVkXSk7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL09iamNSdW50aW1lRXh0cmFzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL09iamNSdW50aW1lRXh0cmFzLmgKaW5kZXggZmE0NGZmNmY3YWY4ZmUxNGIwODQ3ZDY5ZDdj
YWJhYzU4YjBkZmVhZi4uZGU2YzRmY2RkNzI2ZTcyZWFjMzYxYThmZWQ3MWNjNGVlN2E5MDY0NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVudGltZUV4dHJhcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaApAQCAt
MjMsMjIgKzIzLDI4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCisjaW1wb3J0IDxtZW1vcnk+
CiAjaW1wb3J0IDxvYmpjL1Byb3RvY29sLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNp
bXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvU3lzdGVtRnJlZS5oPgogI2ltcG9y
dCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxULCBXVEY6
OlN5c3RlbUZyZWU8VD4+IGFkb3B0U3lzdGVtKFUgdmFsdWUpCit7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxULCBXVEY6OlN5c3RlbUZyZWU8VD4+KHZhbHVlKTsKK30KIAogaW5saW5lIGJv
b2wgcHJvdG9jb2xJbXBsZW1lbnRzUHJvdG9jb2woUHJvdG9jb2wgKmNhbmRpZGF0ZSwgUHJvdG9j
b2wgKnRhcmdldCkKIHsKICAgICB1bnNpZ25lZCBwcm90b2NvbFByb3RvY29sc0NvdW50OwotICAg
IFByb3RvY29sICoqIHByb3RvY29sUHJvdG9jb2xzID0gcHJvdG9jb2xfY29weVByb3RvY29sTGlz
dChjYW5kaWRhdGUsICZwcm90b2NvbFByb3RvY29sc0NvdW50KTsKKyAgICBhdXRvIHByb3RvY29s
UHJvdG9jb2xzID0gYWRvcHRTeXN0ZW08UHJvdG9jb2wqW10+KHByb3RvY29sX2NvcHlQcm90b2Nv
bExpc3QoY2FuZGlkYXRlLCAmcHJvdG9jb2xQcm90b2NvbHNDb3VudCkpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBwcm90b2NvbFByb3RvY29sc0NvdW50OyArK2kpIHsKLSAgICAgICAg
aWYgKHByb3RvY29sX2lzRXF1YWwocHJvdG9jb2xQcm90b2NvbHNbaV0sIHRhcmdldCkpIHsKLSAg
ICAgICAgICAgIGZyZWUocHJvdG9jb2xQcm90b2NvbHMpOworICAgICAgICBpZiAocHJvdG9jb2xf
aXNFcXVhbChwcm90b2NvbFByb3RvY29sc1tpXSwgdGFyZ2V0KSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9CiAgICAgfQotICAgIGZyZWUocHJvdG9jb2xQcm90b2NvbHMpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNDcsMTQgKzUzLDE1IEBAIGlubGluZSB2b2lkIGZv
ckVhY2hQcm90b2NvbEltcGxlbWVudGluZ1Byb3RvY29sKENsYXNzIGNscywgUHJvdG9jb2wgKnRh
cmdldCwgdm9pCiAgICAgQVNTRVJUKGNscyk7CiAgICAgQVNTRVJUKHRhcmdldCk7CiAKLSAgICBW
ZWN0b3I8UHJvdG9jb2wgKj4gd29ya2xpc3Q7CisgICAgVmVjdG9yPFByb3RvY29sKj4gd29ya2xp
c3Q7CiAgICAgSGFzaFNldDx2b2lkKj4gdmlzaXRlZDsKIAogICAgIC8vIEluaXRpYWxseSBmaWxs
IHRoZSB3b3JrbGlzdCB3aXRoIHRoZSBDbGFzcydzIHByb3RvY29scy4KLSAgICB1bnNpZ25lZCBw
cm90b2NvbHNDb3VudDsKLSAgICBQcm90b2NvbCAqKiBwcm90b2NvbHMgPSBjbGFzc19jb3B5UHJv
dG9jb2xMaXN0KGNscywgJnByb3RvY29sc0NvdW50KTsKLSAgICB3b3JrbGlzdC5hcHBlbmQocHJv
dG9jb2xzLCBwcm90b2NvbHNDb3VudCk7Ci0gICAgZnJlZShwcm90b2NvbHMpOworICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgcHJvdG9jb2xzQ291bnQ7CisgICAgICAgIGF1dG8gcHJvdG9jb2xzID0g
YWRvcHRTeXN0ZW08UHJvdG9jb2wqW10+KGNsYXNzX2NvcHlQcm90b2NvbExpc3QoY2xzLCAmcHJv
dG9jb2xzQ291bnQpKTsKKyAgICAgICAgd29ya2xpc3QuYXBwZW5kKHByb3RvY29scy5nZXQoKSwg
cHJvdG9jb2xzQ291bnQpOworICAgIH0KIAogICAgIGJvb2wgc3RvcCA9IGZhbHNlOwogICAgIHdo
aWxlICghd29ya2xpc3QuaXNFbXB0eSgpKSB7CkBAIC03MywzNyArODAsMzYgQEAgaW5saW5lIHZv
aWQgZm9yRWFjaFByb3RvY29sSW1wbGVtZW50aW5nUHJvdG9jb2woQ2xhc3MgY2xzLCBQcm90b2Nv
bCAqdGFyZ2V0LCB2b2kKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFkZCBpbmNvcnBvcmF0ZWQg
cHJvdG9jb2xzIHRvIHRoZSB3b3JrbGlzdC4KLSAgICAgICAgcHJvdG9jb2xzID0gcHJvdG9jb2xf
Y29weVByb3RvY29sTGlzdChwcm90b2NvbCwgJnByb3RvY29sc0NvdW50KTsKLSAgICAgICAgd29y
a2xpc3QuYXBwZW5kKHByb3RvY29scywgcHJvdG9jb2xzQ291bnQpOwotICAgICAgICBmcmVlKHBy
b3RvY29scyk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHByb3RvY29sc0NvdW50
OworICAgICAgICAgICAgYXV0byBwcm90b2NvbHMgPSBhZG9wdFN5c3RlbTxQcm90b2NvbCpbXT4o
cHJvdG9jb2xfY29weVByb3RvY29sTGlzdChwcm90b2NvbCwgJnByb3RvY29sc0NvdW50KSk7Cisg
ICAgICAgICAgICB3b3JrbGlzdC5hcHBlbmQocHJvdG9jb2xzLmdldCgpLCBwcm90b2NvbHNDb3Vu
dCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKIGlubGluZSB2b2lkIGZvckVhY2hNZXRob2RJbkNs
YXNzKENsYXNzIGNscywgdm9pZCAoXmNhbGxiYWNrKShNZXRob2QpKQogewogICAgIHVuc2lnbmVk
IGNvdW50OwotICAgIE1ldGhvZCogbWV0aG9kcyA9IGNsYXNzX2NvcHlNZXRob2RMaXN0KGNscywg
JmNvdW50KTsKKyAgICBhdXRvIG1ldGhvZHMgPSBhZG9wdFN5c3RlbTxNZXRob2RbXT4oY2xhc3Nf
Y29weU1ldGhvZExpc3QoY2xzLCAmY291bnQpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkKICAgICAgICAgY2FsbGJhY2sobWV0aG9kc1tpXSk7Ci0gICAgZnJlZSht
ZXRob2RzKTsKIH0KIAogaW5saW5lIHZvaWQgZm9yRWFjaE1ldGhvZEluUHJvdG9jb2woUHJvdG9j
b2wgKnByb3RvY29sLCBCT09MIGlzUmVxdWlyZWRNZXRob2QsIEJPT0wgaXNJbnN0YW5jZU1ldGhv
ZCwgdm9pZCAoXmNhbGxiYWNrKShTRUwsIGNvbnN0IGNoYXIqKSkKIHsKICAgICB1bnNpZ25lZCBj
b3VudDsKLSAgICBzdHJ1Y3Qgb2JqY19tZXRob2RfZGVzY3JpcHRpb24qIG1ldGhvZHMgPSBwcm90
b2NvbF9jb3B5TWV0aG9kRGVzY3JpcHRpb25MaXN0KHByb3RvY29sLCBpc1JlcXVpcmVkTWV0aG9k
LCBpc0luc3RhbmNlTWV0aG9kLCAmY291bnQpOworICAgIGF1dG8gbWV0aG9kcyA9IGFkb3B0U3lz
dGVtPG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uW10+KHByb3RvY29sX2NvcHlNZXRob2REZXNjcmlw
dGlvbkxpc3QocHJvdG9jb2wsIGlzUmVxdWlyZWRNZXRob2QsIGlzSW5zdGFuY2VNZXRob2QsICZj
b3VudCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAg
ICBjYWxsYmFjayhtZXRob2RzW2ldLm5hbWUsIG1ldGhvZHNbaV0udHlwZXMpOwotICAgIGZyZWUo
bWV0aG9kcyk7CiB9CiAKIGlubGluZSB2b2lkIGZvckVhY2hQcm9wZXJ0eUluUHJvdG9jb2woUHJv
dG9jb2wgKnByb3RvY29sLCB2b2lkICheY2FsbGJhY2spKG9iamNfcHJvcGVydHlfdCkpCiB7CiAg
ICAgdW5zaWduZWQgY291bnQ7Ci0gICAgb2JqY19wcm9wZXJ0eV90KiBwcm9wZXJ0aWVzID0gcHJv
dG9jb2xfY29weVByb3BlcnR5TGlzdChwcm90b2NvbCwgJmNvdW50KTsKKyAgICBhdXRvIHByb3Bl
cnRpZXMgPSBhZG9wdFN5c3RlbTxvYmpjX3Byb3BlcnR5X3RbXT4ocHJvdG9jb2xfY29weVByb3Bl
cnR5TGlzdChwcm90b2NvbCwgJmNvdW50KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvdW50OyArK2kpCiAgICAgICAgIGNhbGxiYWNrKHByb3BlcnRpZXNbaV0pOwotICAgIGZyZWUo
cHJvcGVydGllcyk7CiB9CiAKIHRlbXBsYXRlPGNoYXIgb3BlbiwgY2hhciBjbG9zZT4KQEAgLTEy
NCwxMyArMTMwLDEyIEBAIHZvaWQgc2tpcFBhaXIoY29uc3QgY2hhciomIHBvc2l0aW9uKQogY2xh
c3MgU3RyaW5nUmFuZ2UgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0cmluZ1JhbmdlKTsK
IHB1YmxpYzoKLSAgICBTdHJpbmdSYW5nZShjb25zdCBjaGFyKiBiZWdpbiwgY29uc3QgY2hhciog
ZW5kKSA6IG1fcHRyKHN0cm5kdXAoYmVnaW4sIGVuZCAtIGJlZ2luKSkgeyB9Ci0gICAgflN0cmlu
Z1JhbmdlKCkgeyBmcmVlKG1fcHRyKTsgfQotICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgY29u
c3QgeyByZXR1cm4gbV9wdHI7IH0KLSAgICBjb25zdCBjaGFyKiBnZXQoKSBjb25zdCB7IHJldHVy
biBtX3B0cjsgfQorICAgIFN0cmluZ1JhbmdlKGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFy
KiBlbmQpIDogbV9zdHJpbmcoYmVnaW4sIGVuZCAtIGJlZ2luKSB7IH0KKyAgICBvcGVyYXRvciBj
b25zdCBjaGFyKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmRhdGEoKTsgfQorICAgIGNvbnN0
IGNoYXIqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmRhdGEoKTsgfQogCiBwcml2YXRl
OgotICAgIGNoYXIqIG1fcHRyOworICAgIENTdHJpbmcgbV9zdHJpbmc7CiB9OwogCiBjbGFzcyBT
dHJ1Y3RCdWZmZXIgewpAQCAtMTQwLDE2ICsxNDUsMTMgQEAgY2xhc3MgU3RydWN0QnVmZmVyIHsK
ICAgICB7CiAgICAgICAgIE5TVUludGVnZXIgc2l6ZSwgYWxpZ25tZW50OwogICAgICAgICBOU0dl
dFNpemVBbmRBbGlnbm1lbnQoZW5jb2RlZFR5cGUsICZzaXplLCAmYWxpZ25tZW50KTsKLSAgICAg
ICAgLS1hbGlnbm1lbnQ7Ci0gICAgICAgIG1fYWxsb2NhdGlvbiA9IHN0YXRpY19jYXN0PGNoYXIq
PihtYWxsb2Moc2l6ZSArIGFsaWdubWVudCkpOwotICAgICAgICBtX2J1ZmZlciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KChyZWludGVycHJldF9jYXN0PGludHB0cl90PihtX2FsbG9jYXRpb24p
ICsgYWxpZ25tZW50KSAmIH5hbGlnbm1lbnQpOworICAgICAgICBtX2J1ZmZlciA9IGZhc3RBbGln
bmVkTWFsbG9jKGFsaWdubWVudCwgc2l6ZSk7CiAgICAgfQogCi0gICAgflN0cnVjdEJ1ZmZlcigp
IHsgZnJlZShtX2FsbG9jYXRpb24pOyB9CisgICAgflN0cnVjdEJ1ZmZlcigpIHsgZmFzdEFsaWdu
ZWRGcmVlKG1fYnVmZmVyKTsgfQogICAgIG9wZXJhdG9yIHZvaWQqKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXI7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkKiBtX2FsbG9jYXRpb247CiAgICAgdm9p
ZCogbV9idWZmZXI7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320023</attachid>
            <date>2017-09-06 08:48:40 -0700</date>
            <delta_ts>2017-09-06 09:06:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176331-20170907004839.patch</filename>
            <type>text/plain</type>
            <size>14699</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTgyNTA3OTliYTFhNWE4YmZiMjc3MjlmMzM5ZjI3MWIzNGNiMjFlLi5mMjg0Y2M1NGY3MjdmNWQx
ODFkZTA1ZTdmZDBlZTcxYmQzYjZkZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNy0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgIm1hbGxvYyIgYW5kICJmcmVlIiBmcm9tIEpT
Qy9BUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NjMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSAibWFsbG9jIiBhbmQgImZyZWUiIG1hbnVhbCBjYWxscyBpbiBKU0MvQVBJLgorCisgICAg
ICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKToK
KyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAocGFyc2VQcm9wZXJ0eUF0
dHJpYnV0ZXMpOgorICAgICAgICAobWFrZVNldHRlck5hbWUpOgorICAgICAgICAoY29weVByb3Rv
dHlwZVByb3BlcnRpZXMpOgorICAgICAgICBVc2UgUmV0YWluUHRyPE5TU3RyaW5nPiB0byBrZWVw
IE5TU3RyaW5nLiBXZSBhdm9pZCByZXBlYXRlZCAiY2hhcioiIHRvICJOU1N0cmluZyIgY29udmVy
c2lvbi4KKworICAgICAgICAqIEFQSS9PYmpjUnVudGltZUV4dHJhcy5oOgorICAgICAgICAoYWRv
cHRTeXN0ZW0pOgorICAgICAgICBBZGQgYWRvcHRTeXN0ZW0gdG8gYXV0b21hdGUgY2FsbGluZyBz
eXN0ZW0gZnJlZSgpLgorCisgICAgICAgIChwcm90b2NvbEltcGxlbWVudHNQcm90b2NvbCk6Cisg
ICAgICAgIChmb3JFYWNoUHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbCk6CisgICAgICAgIChm
b3JFYWNoTWV0aG9kSW5DbGFzcyk6CisgICAgICAgIChmb3JFYWNoTWV0aG9kSW5Qcm90b2NvbCk6
CisgICAgICAgIChmb3JFYWNoUHJvcGVydHlJblByb3RvY29sKToKKyAgICAgICAgKFN0cmluZ1Jh
bmdlOjpTdHJpbmdSYW5nZSk6CisgICAgICAgIChTdHJpbmdSYW5nZTo6b3BlcmF0b3IgY29uc3Qg
Y2hhciogY29uc3QpOgorICAgICAgICAoU3RyaW5nUmFuZ2U6OmdldCBjb25zdCk6CisgICAgICAg
IFVzZSBDU3RyaW5nIGZvciBiYWNrZW5kLgorCisgICAgICAgIChTdHJ1Y3RCdWZmZXI6OlN0cnVj
dEJ1ZmZlcik6CisgICAgICAgIChTdHJ1Y3RCdWZmZXI6On5TdHJ1Y3RCdWZmZXIpOgorICAgICAg
ICAoU3RyaW5nUmFuZ2U6On5TdHJpbmdSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBmYXN0
QWxpZ25lZE1hbGxvYy9hc3RBbGlnbmVkRnJlZSB0byBnZXQgYWxpZ25lZCBtZW1vcnkuCisKIDIw
MTctMDktMDUgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgaXNO
b3RDZWxsU3BlY3VsYXRpb24gaXMgd3Jvbmcgd2l0aCByZXNwZWN0IHRvIFNwZWNFbXB0eQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IDY5ODZmYWU4MzFlMmVjYzZlYmMyYmVk
YWU0ZTY4YWMyMmY1NzhlODAuLmU3ZDFhMmNiNjhkYjRkNDg2ZmE0YTFmNDY5YzRiMWYxYTExMGJi
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTEwNTQsMTkgKzEwNTQs
MTkgQEAgc3RhdGljIFN0cnVjdEhhbmRsZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hhciBpZFR5cGVbM107CiAgICAgICAgIC8vIENo
ZWNrIDJuZCBhcmd1bWVudCB0eXBlIGlzICJAIgotICAgICAgICBjaGFyKiBzZWNvbmRUeXBlID0g
bWV0aG9kX2NvcHlBcmd1bWVudFR5cGUobWV0aG9kLCAzKTsKLSAgICAgICAgaWYgKHN0cmNtcChz
ZWNvbmRUeXBlLCAiQCIpICE9IDApIHsKLSAgICAgICAgICAgIGZyZWUoc2Vjb25kVHlwZSk7Ci0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc2Vjb25kVHlw
ZSA9IGFkb3B0U3lzdGVtPGNoYXJbXT4obWV0aG9kX2NvcHlBcmd1bWVudFR5cGUobWV0aG9kLCAz
KSk7CisgICAgICAgICAgICBpZiAoc3RyY21wKHNlY29uZFR5cGUuZ2V0KCksICJAIikgIT0gMCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZnJlZShzZWNvbmRU
eXBlKTsKICAgICAgICAgLy8gQ2hlY2sgcmVzdWx0IHR5cGUgaXMgYWxzbyAiQCIKICAgICAgICAg
bWV0aG9kX2dldFJldHVyblR5cGUobWV0aG9kLCBpZFR5cGUsIDMpOwogICAgICAgICBpZiAoc3Ry
Y21wKGlkVHlwZSwgIkAiKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjaGFy
KiB0eXBlID0gbWV0aG9kX2NvcHlBcmd1bWVudFR5cGUobWV0aG9kLCAyKTsKLSAgICAgICAgc3Ry
dWN0SGFuZGxlcnMtPmFkZChTdHJpbmdJbXBsOjpjcmVhdGUodHlwZSksIChTdHJ1Y3RUYWdIYW5k
bGVyKXsgc2VsZWN0b3IsIDAgfSk7Ci0gICAgICAgIGZyZWUodHlwZSk7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0U3lzdGU8Y2hhcltdPihtZXRob2RfY29weUFyZ3Vt
ZW50VHlwZShtZXRob2QsIDIpKTsKKyAgICAgICAgICAgIHN0cnVjdEhhbmRsZXJzLT5hZGQoU3Ry
aW5nSW1wbDo6Y3JlYXRlKHR5cGUuZ2V0KCkpLCAoU3RydWN0VGFnSGFuZGxlcikgeyBzZWxlY3Rv
ciwgMCB9KTsKKyAgICAgICAgfQogICAgIH0pOwogCiAgICAgLy8gU3RlcCAyOiBmaW5kIGFsbCB0
bzxGb28+IGluc3RhbmNlIG1ldGhvZHMgaW4gSlNWYWx1ZS4KQEAgLTEwODEsMTAgKzEwODEsOCBA
QCBzdGF0aWMgU3RydWN0SGFuZGxlcnMqIGNyZWF0ZVN0cnVjdEhhbmRsZXJNYXAoKQogICAgICAg
ICBpZiAobWV0aG9kX2dldE51bWJlck9mQXJndW1lbnRzKG1ldGhvZCkgIT0gMikKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyB2YWx1ZVdpdGg8
Rm9vPjpjb250ZXh0OiBtZXRob2QuCi0gICAgICAgIGNoYXIqIHR5cGUgPSBtZXRob2RfY29weVJl
dHVyblR5cGUobWV0aG9kKTsKLQotICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRl
ciA9IHN0cnVjdEhhbmRsZXJzLT5maW5kKHR5cGUpOwotICAgICAgICBmcmVlKHR5cGUpOworICAg
ICAgICBhdXRvIHR5cGUgPSBhZG9wdFN5c3RlPGNoYXJbXT4obWV0aG9kX2NvcHlSZXR1cm5UeXBl
KG1ldGhvZCkpOworICAgICAgICBTdHJ1Y3RIYW5kbGVyczo6aXRlcmF0b3IgaXRlciA9IHN0cnVj
dEhhbmRsZXJzLT5maW5kKHR5cGUuZ2V0KCkpOwogICAgICAgICBpZiAoaXRlciA9PSBzdHJ1Y3RI
YW5kbGVycy0+ZW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFN0cnVjdFRhZ0hh
bmRsZXImIGhhbmRsZXIgPSBpdGVyLT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1dyYXBwZXJNYXAubW0KaW5kZXggMDZjYzVmODhmN2RjOGQxZjllZTY5ZTU3OGMwMGQxMWZkODA5
ZDA1Ny4uMjRkMWFjMmEwYThjMGZkOTVhY2ZhN2IzNWI5YTdmZmVmNjZhYmE2NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KQEAgLTI2MCwxOSArMjYwLDI1IEBA
IHN0YXRpYyB2b2lkIGNvcHlNZXRob2RzVG9PYmplY3QoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFz
cyBvYmpjQ2xhc3MsIFByb3RvY29sICpwCiAgICAgW3JlbmFtZU1hcCByZWxlYXNlXTsKIH0KIAot
c3RhdGljIGJvb2wgcGFyc2VQcm9wZXJ0eUF0dHJpYnV0ZXMob2JqY19wcm9wZXJ0eV90IHByb3Bl
cnR5LCBjaGFyKiYgZ2V0dGVyTmFtZSwgY2hhciomIHNldHRlck5hbWUpCitzdHJ1Y3QgUHJvcGVy
dHkgeworICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBnZXR0
ZXJOYW1lOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gc2V0dGVyTmFtZTsKK307CisKK3N0YXRp
YyBib29sIHBhcnNlUHJvcGVydHlBdHRyaWJ1dGVzKG9iamNfcHJvcGVydHlfdCBvYmpjUHJvcGVy
dHksIFByb3BlcnR5JiBwcm9wZXJ0eSkKIHsKICAgICBib29sIHJlYWRvbmx5ID0gZmFsc2U7CiAg
ICAgdW5zaWduZWQgYXR0cmlidXRlQ291bnQ7Ci0gICAgb2JqY19wcm9wZXJ0eV9hdHRyaWJ1dGVf
dCogYXR0cmlidXRlcyA9IHByb3BlcnR5X2NvcHlBdHRyaWJ1dGVMaXN0KHByb3BlcnR5LCAmYXR0
cmlidXRlQ291bnQpOworICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0U3lzdGVtPG9iamNfcHJv
cGVydHlfYXR0cmlidXRlX3RbXT4ocHJvcGVydHlfY29weUF0dHJpYnV0ZUxpc3Qob2JqY1Byb3Bl
cnR5LCAmYXR0cmlidXRlQ291bnQpKTsKICAgICBpZiAoYXR0cmlidXRlQ291bnQpIHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kpIHsKICAgICAg
ICAgICAgIHN3aXRjaCAoKihhdHRyaWJ1dGVzW2ldLm5hbWUpKSB7CiAgICAgICAgICAgICBjYXNl
ICdHJzoKLSAgICAgICAgICAgICAgICBnZXR0ZXJOYW1lID0gc3RyZHVwKGF0dHJpYnV0ZXNbaV0u
dmFsdWUpOworICAgICAgICAgICAgICAgIHByb3BlcnR5LmdldHRlck5hbWUgPSBAKGF0dHJpYnV0
ZXNbaV0udmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAn
Uyc6Ci0gICAgICAgICAgICAgICAgc2V0dGVyTmFtZSA9IHN0cmR1cChhdHRyaWJ1dGVzW2ldLnZh
bHVlKTsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eS5zZXR0ZXJOYW1lID0gQChhdHRyaWJ1dGVz
W2ldLnZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ1In
OgogICAgICAgICAgICAgICAgIHJlYWRvbmx5ID0gdHJ1ZTsKQEAgLTI4MSwzMyArMjg3LDI4IEBA
IHN0YXRpYyBib29sIHBhcnNlUHJvcGVydHlBdHRyaWJ1dGVzKG9iamNfcHJvcGVydHlfdCBwcm9w
ZXJ0eSwgY2hhciomIGdldHRlck5hbWUsCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZnJlZShhdHRyaWJ1dGVzKTsKICAgICB9CiAgICAg
cmV0dXJuIHJlYWRvbmx5OwogfQogCi1zdGF0aWMgY2hhciogbWFrZVNldHRlck5hbWUoY29uc3Qg
Y2hhciogbmFtZSkKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IG1ha2VTZXR0ZXJOYW1lKGNv
bnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgc2l6ZV90IG5hbWVMZW5ndGggPSBzdHJsZW4obmFtZSk7
Ci0gICAgY2hhciogc2V0dGVyTmFtZSA9IChjaGFyKiltYWxsb2MobmFtZUxlbmd0aCArIDUpOyAv
LyAic2V0IiBOYW1lICI6XDAiCi0gICAgc2V0dGVyTmFtZVswXSA9ICdzJzsKLSAgICBzZXR0ZXJO
YW1lWzFdID0gJ2UnOwotICAgIHNldHRlck5hbWVbMl0gPSAndCc7Ci0gICAgc2V0dGVyTmFtZVsz
XSA9IHRvdXBwZXIoKm5hbWUpOwotICAgIG1lbWNweShzZXR0ZXJOYW1lICsgNCwgbmFtZSArIDEs
IG5hbWVMZW5ndGggLSAxKTsKLSAgICBzZXR0ZXJOYW1lW25hbWVMZW5ndGggKyAzXSA9ICc6JzsK
LSAgICBzZXR0ZXJOYW1lW25hbWVMZW5ndGggKyA0XSA9ICdcMCc7Ci0gICAgcmV0dXJuIHNldHRl
ck5hbWU7CisgICAgLy8gInNldCIgTmFtZSAiOlwwIiAgPT4gbmFtZUxlbmd0aCArIDUuCisgICAg
VmVjdG9yPGNoYXIsIDEyOD4gYnVmZmVyKG5hbWVMZW5ndGggKyA1KTsKKyAgICBidWZmZXJbMF0g
PSAncyc7CisgICAgYnVmZmVyWzFdID0gJ2UnOworICAgIGJ1ZmZlclsyXSA9ICd0JzsKKyAgICBi
dWZmZXJbM10gPSB0b3VwcGVyKCpuYW1lKTsKKyAgICBtZW1jcHkoYnVmZmVyLmRhdGEoKSArIDQs
IG5hbWUgKyAxLCBuYW1lTGVuZ3RoIC0gMSk7CisgICAgYnVmZmVyW25hbWVMZW5ndGggKyAzXSA9
ICc6JzsKKyAgICBidWZmZXJbbmFtZUxlbmd0aCArIDRdID0gJ1wwJzsKKyAgICByZXR1cm4gQChi
dWZmZXIuZGF0YSgpKTsKIH0KIAogc3RhdGljIHZvaWQgY29weVByb3RvdHlwZVByb3BlcnRpZXMo
SlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xhc3MsIFByb3RvY29sICpwcm90b2NvbCwg
SlNWYWx1ZSAqcHJvdG90eXBlVmFsdWUpCiB7CiAgICAgLy8gRmlyc3QgZ2F0aGVyIHByb3ByZXRp
ZXMgaW50byB0aGlzIGxpc3QsIHRoZW4gaGFuZGxlIHRoZSBtZXRob2RzIChjYXB0dXJpbmcgdGhl
IGFjY2Vzc29yIG1ldGhvZHMpLgotICAgIHN0cnVjdCBQcm9wZXJ0eSB7Ci0gICAgICAgIGNvbnN0
IGNoYXIqIG5hbWU7Ci0gICAgICAgIGNoYXIqIGdldHRlck5hbWU7Ci0gICAgICAgIGNoYXIqIHNl
dHRlck5hbWU7Ci0gICAgfTsKICAgICBfX2Jsb2NrIFZlY3RvcjxQcm9wZXJ0eT4gcHJvcGVydHlM
aXN0OwogCiAgICAgLy8gTWFwIHJlY29yZGluZyB0aGUgbWV0aG9kcyB1c2VkIGFzIGdldHRlcnMv
c2V0dGVycy4KQEAgLTMxNiw0MSArMzE3LDM2IEBAIHN0YXRpYyB2b2lkIGNvcHlQcm90b3R5cGVQ
cm9wZXJ0aWVzKEpTQ29udGV4dCAqY29udGV4dCwgQ2xhc3Mgb2JqY0NsYXNzLCBQcm90b2NvCiAg
ICAgLy8gVXNlZnVsIHZhbHVlLgogICAgIEpTVmFsdWUgKnVuZGVmaW5lZCA9IFtKU1ZhbHVlIHZh
bHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XTsKIAotICAgIGZvckVhY2hQcm9wZXJ0
eUluUHJvdG9jb2wocHJvdG9jb2wsIF4ob2JqY19wcm9wZXJ0eV90IHByb3BlcnR5KXsKLSAgICAg
ICAgY2hhciogZ2V0dGVyTmFtZSA9IDA7Ci0gICAgICAgIGNoYXIqIHNldHRlck5hbWUgPSAwOwot
ICAgICAgICBib29sIHJlYWRvbmx5ID0gcGFyc2VQcm9wZXJ0eUF0dHJpYnV0ZXMocHJvcGVydHks
IGdldHRlck5hbWUsIHNldHRlck5hbWUpOwotICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gcHJv
cGVydHlfZ2V0TmFtZShwcm9wZXJ0eSk7CisgICAgZm9yRWFjaFByb3BlcnR5SW5Qcm90b2NvbChw
cm90b2NvbCwgXihvYmpjX3Byb3BlcnR5X3Qgb2JqY1Byb3BlcnR5KSB7CisgICAgICAgIGNvbnN0
IGNoYXIqIG5hbWUgPSBwcm9wZXJ0eV9nZXROYW1lKG9iamNQcm9wZXJ0eSk7CisgICAgICAgIFBy
b3BlcnR5IHByb3BlcnR5IHsgbmFtZSwgbnVsbHB0ciwgbnVsbHB0ciB9OworICAgICAgICBib29s
IHJlYWRvbmx5ID0gcGFyc2VQcm9wZXJ0eUF0dHJpYnV0ZXMob2JqY1Byb3BlcnR5LCBwcm9wZXJ0
eSk7CiAKLSAgICAgICAgLy8gQWRkIHRoZSBuYW1lcyBvZiB0aGUgZ2V0dGVyICYgc2V0dGVyIG1l
dGhvZHMgdG8gCi0gICAgICAgIGlmICghZ2V0dGVyTmFtZSkKLSAgICAgICAgICAgIGdldHRlck5h
bWUgPSBzdHJkdXAobmFtZSk7Ci0gICAgICAgIGFjY2Vzc29yTWV0aG9kc1tAKGdldHRlck5hbWUp
XSA9IHVuZGVmaW5lZDsKKyAgICAgICAgLy8gQWRkIHRoZSBuYW1lcyBvZiB0aGUgZ2V0dGVyICYg
c2V0dGVyIG1ldGhvZHMgdG8KKyAgICAgICAgaWYgKCFwcm9wZXJ0eS5nZXR0ZXJOYW1lKQorICAg
ICAgICAgICAgcHJvcGVydHkuZ2V0dGVyTmFtZSA9IEAobmFtZSk7CisgICAgICAgIGFjY2Vzc29y
TWV0aG9kc1twcm9wZXJ0eS5nZXR0ZXJOYW1lLmdldCgpXSA9IHVuZGVmaW5lZDsKICAgICAgICAg
aWYgKCFyZWFkb25seSkgewotICAgICAgICAgICAgaWYgKCFzZXR0ZXJOYW1lKQotICAgICAgICAg
ICAgICAgIHNldHRlck5hbWUgPSBtYWtlU2V0dGVyTmFtZShuYW1lKTsKLSAgICAgICAgICAgIGFj
Y2Vzc29yTWV0aG9kc1tAKHNldHRlck5hbWUpXSA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGlm
ICghcHJvcGVydHkuc2V0dGVyTmFtZSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eS5zZXR0ZXJO
YW1lID0gbWFrZVNldHRlck5hbWUobmFtZSk7CisgICAgICAgICAgICBhY2Nlc3Nvck1ldGhvZHNb
cHJvcGVydHkuc2V0dGVyTmFtZS5nZXQoKV0gPSB1bmRlZmluZWQ7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBBZGQgdGhlIHByb3BlcnRpZXMgdG8gYSBsaXN0LgotICAgICAgICBwcm9wZXJ0eUxp
c3QuYXBwZW5kKChQcm9wZXJ0eSl7IG5hbWUsIGdldHRlck5hbWUsIHNldHRlck5hbWUgfSk7Cisg
ICAgICAgIHByb3BlcnR5TGlzdC5hcHBlbmQoV1RGTW92ZShwcm9wZXJ0eSkpOwogICAgIH0pOwog
CiAgICAgLy8gQ29weSBtZXRob2RzIHRvIHRoZSBwcm90b3R5cGUsIGNhcHR1cmluZyBhY2Nlc3Nv
cnMgaW4gdGhlIGFjY2Vzc29yTWV0aG9kcyBtYXAuCiAgICAgY29weU1ldGhvZHNUb09iamVjdChj
b250ZXh0LCBvYmpjQ2xhc3MsIHByb3RvY29sLCBZRVMsIHByb3RvdHlwZVZhbHVlLCBhY2Nlc3Nv
ck1ldGhvZHMpOwogCiAgICAgLy8gSXRlcmF0ZSB0aGUgcHJvcGVydHlMaXN0ICYgZ2VuZXJhdGUg
YWNjZXNzb3IgcHJvcGVydGllcy4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnR5
TGlzdC5zaXplKCk7ICsraSkgewotICAgICAgICBQcm9wZXJ0eSYgcHJvcGVydHkgPSBwcm9wZXJ0
eUxpc3RbaV07Ci0KLSAgICAgICAgSlNWYWx1ZSAqZ2V0dGVyID0gYWNjZXNzb3JNZXRob2RzW0Ao
cHJvcGVydHkuZ2V0dGVyTmFtZSldOwotICAgICAgICBmcmVlKHByb3BlcnR5LmdldHRlck5hbWUp
OworICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBwcm9wZXJ0eUxpc3QpIHsKKyAgICAgICAgSlNW
YWx1ZSogZ2V0dGVyID0gYWNjZXNzb3JNZXRob2RzW3Byb3BlcnR5LmdldHRlck5hbWUuZ2V0KCld
OwogICAgICAgICBBU1NFUlQoIVtnZXR0ZXIgaXNVbmRlZmluZWRdKTsKIAotICAgICAgICBKU1Zh
bHVlICpzZXR0ZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIEpTVmFsdWUqIHNldHRlciA9IHVuZGVm
aW5lZDsKICAgICAgICAgaWYgKHByb3BlcnR5LnNldHRlck5hbWUpIHsKLSAgICAgICAgICAgIHNl
dHRlciA9IGFjY2Vzc29yTWV0aG9kc1tAKHByb3BlcnR5LnNldHRlck5hbWUpXTsKLSAgICAgICAg
ICAgIGZyZWUocHJvcGVydHkuc2V0dGVyTmFtZSk7CisgICAgICAgICAgICBzZXR0ZXIgPSBhY2Nl
c3Nvck1ldGhvZHNbcHJvcGVydHkuc2V0dGVyTmFtZS5nZXQoKV07CiAgICAgICAgICAgICBBU1NF
UlQoIVtzZXR0ZXIgaXNVbmRlZmluZWRdKTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqY1J1bnRpbWVFeHRyYXMuaAppbmRleCBmYTQ0ZmY2Zjdh
ZjhmZTE0YjA4NDdkNjlkN2NhYmFjNThiMGRmZWFmLi4yZDdkYjY2MTkyNTdhNjlkMTgxYWM5Zjc5
NjBlYTM5OGFjZDk2OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09i
amNSdW50aW1lRXh0cmFzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVu
dGltZUV4dHJhcy5oCkBAIC0yMywyMiArMjMsMjggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
KyNpbXBvcnQgPG1lbW9yeT4KICNpbXBvcnQgPG9iamMvUHJvdG9jb2wuaD4KICNpbXBvcnQgPG9i
amMvcnVudGltZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KKyNpbXBvcnQgPHd0Zi9TeXN0
ZW1GcmVlLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPFQsIFdURjo6U3lzdGVtRnJlZTxUPj4gYWRvcHRTeXN0ZW0oVSB2YWx1ZSkKK3sK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFQsIFdURjo6U3lzdGVtRnJlZTxUPj4odmFsdWUp
OworfQogCiBpbmxpbmUgYm9vbCBwcm90b2NvbEltcGxlbWVudHNQcm90b2NvbChQcm90b2NvbCAq
Y2FuZGlkYXRlLCBQcm90b2NvbCAqdGFyZ2V0KQogewogICAgIHVuc2lnbmVkIHByb3RvY29sUHJv
dG9jb2xzQ291bnQ7Ci0gICAgUHJvdG9jb2wgKiogcHJvdG9jb2xQcm90b2NvbHMgPSBwcm90b2Nv
bF9jb3B5UHJvdG9jb2xMaXN0KGNhbmRpZGF0ZSwgJnByb3RvY29sUHJvdG9jb2xzQ291bnQpOwor
ICAgIGF1dG8gcHJvdG9jb2xQcm90b2NvbHMgPSBhZG9wdFN5c3RlbTxQcm90b2NvbCpbXT4ocHJv
dG9jb2xfY29weVByb3RvY29sTGlzdChjYW5kaWRhdGUsICZwcm90b2NvbFByb3RvY29sc0NvdW50
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3RvY29sUHJvdG9jb2xzQ291bnQ7
ICsraSkgewotICAgICAgICBpZiAocHJvdG9jb2xfaXNFcXVhbChwcm90b2NvbFByb3RvY29sc1tp
XSwgdGFyZ2V0KSkgewotICAgICAgICAgICAgZnJlZShwcm90b2NvbFByb3RvY29scyk7CisgICAg
ICAgIGlmIChwcm90b2NvbF9pc0VxdWFsKHByb3RvY29sUHJvdG9jb2xzW2ldLCB0YXJnZXQpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KICAgICB9Ci0gICAgZnJlZShwcm90
b2NvbFByb3RvY29scyk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC00NywxNCArNTMsMTUg
QEAgaW5saW5lIHZvaWQgZm9yRWFjaFByb3RvY29sSW1wbGVtZW50aW5nUHJvdG9jb2woQ2xhc3Mg
Y2xzLCBQcm90b2NvbCAqdGFyZ2V0LCB2b2kKICAgICBBU1NFUlQoY2xzKTsKICAgICBBU1NFUlQo
dGFyZ2V0KTsKIAotICAgIFZlY3RvcjxQcm90b2NvbCAqPiB3b3JrbGlzdDsKKyAgICBWZWN0b3I8
UHJvdG9jb2wqPiB3b3JrbGlzdDsKICAgICBIYXNoU2V0PHZvaWQqPiB2aXNpdGVkOwogCiAgICAg
Ly8gSW5pdGlhbGx5IGZpbGwgdGhlIHdvcmtsaXN0IHdpdGggdGhlIENsYXNzJ3MgcHJvdG9jb2xz
LgotICAgIHVuc2lnbmVkIHByb3RvY29sc0NvdW50OwotICAgIFByb3RvY29sICoqIHByb3RvY29s
cyA9IGNsYXNzX2NvcHlQcm90b2NvbExpc3QoY2xzLCAmcHJvdG9jb2xzQ291bnQpOwotICAgIHdv
cmtsaXN0LmFwcGVuZChwcm90b2NvbHMsIHByb3RvY29sc0NvdW50KTsKLSAgICBmcmVlKHByb3Rv
Y29scyk7CisgICAgeworICAgICAgICB1bnNpZ25lZCBwcm90b2NvbHNDb3VudDsKKyAgICAgICAg
YXV0byBwcm90b2NvbHMgPSBhZG9wdFN5c3RlbTxQcm90b2NvbCpbXT4oY2xhc3NfY29weVByb3Rv
Y29sTGlzdChjbHMsICZwcm90b2NvbHNDb3VudCkpOworICAgICAgICB3b3JrbGlzdC5hcHBlbmQo
cHJvdG9jb2xzLmdldCgpLCBwcm90b2NvbHNDb3VudCk7CisgICAgfQogCiAgICAgYm9vbCBzdG9w
ID0gZmFsc2U7CiAgICAgd2hpbGUgKCF3b3JrbGlzdC5pc0VtcHR5KCkpIHsKQEAgLTczLDM3ICs4
MCwzNiBAQCBpbmxpbmUgdm9pZCBmb3JFYWNoUHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbChD
bGFzcyBjbHMsIFByb3RvY29sICp0YXJnZXQsIHZvaQogICAgICAgICB9CiAKICAgICAgICAgLy8g
QWRkIGluY29ycG9yYXRlZCBwcm90b2NvbHMgdG8gdGhlIHdvcmtsaXN0LgotICAgICAgICBwcm90
b2NvbHMgPSBwcm90b2NvbF9jb3B5UHJvdG9jb2xMaXN0KHByb3RvY29sLCAmcHJvdG9jb2xzQ291
bnQpOwotICAgICAgICB3b3JrbGlzdC5hcHBlbmQocHJvdG9jb2xzLCBwcm90b2NvbHNDb3VudCk7
Ci0gICAgICAgIGZyZWUocHJvdG9jb2xzKTsKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWdu
ZWQgcHJvdG9jb2xzQ291bnQ7CisgICAgICAgICAgICBhdXRvIHByb3RvY29scyA9IGFkb3B0U3lz
dGVtPFByb3RvY29sKltdPihwcm90b2NvbF9jb3B5UHJvdG9jb2xMaXN0KHByb3RvY29sLCAmcHJv
dG9jb2xzQ291bnQpKTsKKyAgICAgICAgICAgIHdvcmtsaXN0LmFwcGVuZChwcm90b2NvbHMuZ2V0
KCksIHByb3RvY29sc0NvdW50KTsKKyAgICAgICAgfQogICAgIH0KIH0KIAogaW5saW5lIHZvaWQg
Zm9yRWFjaE1ldGhvZEluQ2xhc3MoQ2xhc3MgY2xzLCB2b2lkICheY2FsbGJhY2spKE1ldGhvZCkp
CiB7CiAgICAgdW5zaWduZWQgY291bnQ7Ci0gICAgTWV0aG9kKiBtZXRob2RzID0gY2xhc3NfY29w
eU1ldGhvZExpc3QoY2xzLCAmY291bnQpOworICAgIGF1dG8gbWV0aG9kcyA9IGFkb3B0U3lzdGVt
PE1ldGhvZFtdPihjbGFzc19jb3B5TWV0aG9kTGlzdChjbHMsICZjb3VudCkpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBjYWxsYmFjayhtZXRob2Rz
W2ldKTsKLSAgICBmcmVlKG1ldGhvZHMpOwogfQogCiBpbmxpbmUgdm9pZCBmb3JFYWNoTWV0aG9k
SW5Qcm90b2NvbChQcm90b2NvbCAqcHJvdG9jb2wsIEJPT0wgaXNSZXF1aXJlZE1ldGhvZCwgQk9P
TCBpc0luc3RhbmNlTWV0aG9kLCB2b2lkICheY2FsbGJhY2spKFNFTCwgY29uc3QgY2hhciopKQog
ewogICAgIHVuc2lnbmVkIGNvdW50OwotICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlv
biogbWV0aG9kcyA9IHByb3RvY29sX2NvcHlNZXRob2REZXNjcmlwdGlvbkxpc3QocHJvdG9jb2ws
IGlzUmVxdWlyZWRNZXRob2QsIGlzSW5zdGFuY2VNZXRob2QsICZjb3VudCk7CisgICAgYXV0byBt
ZXRob2RzID0gYWRvcHRTeXN0ZW08b2JqY19tZXRob2RfZGVzY3JpcHRpb25bXT4ocHJvdG9jb2xf
Y29weU1ldGhvZERlc2NyaXB0aW9uTGlzdChwcm90b2NvbCwgaXNSZXF1aXJlZE1ldGhvZCwgaXNJ
bnN0YW5jZU1ldGhvZCwgJmNvdW50KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNv
dW50OyArK2kpCiAgICAgICAgIGNhbGxiYWNrKG1ldGhvZHNbaV0ubmFtZSwgbWV0aG9kc1tpXS50
eXBlcyk7Ci0gICAgZnJlZShtZXRob2RzKTsKIH0KIAogaW5saW5lIHZvaWQgZm9yRWFjaFByb3Bl
cnR5SW5Qcm90b2NvbChQcm90b2NvbCAqcHJvdG9jb2wsIHZvaWQgKF5jYWxsYmFjaykob2JqY19w
cm9wZXJ0eV90KSkKIHsKICAgICB1bnNpZ25lZCBjb3VudDsKLSAgICBvYmpjX3Byb3BlcnR5X3Qq
IHByb3BlcnRpZXMgPSBwcm90b2NvbF9jb3B5UHJvcGVydHlMaXN0KHByb3RvY29sLCAmY291bnQp
OworICAgIGF1dG8gcHJvcGVydGllcyA9IGFkb3B0U3lzdGVtPG9iamNfcHJvcGVydHlfdFtdPihw
cm90b2NvbF9jb3B5UHJvcGVydHlMaXN0KHByb3RvY29sLCAmY291bnQpKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKICAgICAgICAgY2FsbGJhY2socHJvcGVydGll
c1tpXSk7Ci0gICAgZnJlZShwcm9wZXJ0aWVzKTsKIH0KIAogdGVtcGxhdGU8Y2hhciBvcGVuLCBj
aGFyIGNsb3NlPgpAQCAtMTI0LDEzICsxMzAsMTQgQEAgdm9pZCBza2lwUGFpcihjb25zdCBjaGFy
KiYgcG9zaXRpb24pCiBjbGFzcyBTdHJpbmdSYW5nZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3RyaW5nUmFuZ2UpOwogcHVibGljOgotICAgIFN0cmluZ1JhbmdlKGNvbnN0IGNoYXIqIGJl
Z2luLCBjb25zdCBjaGFyKiBlbmQpIDogbV9wdHIoc3RybmR1cChiZWdpbiwgZW5kIC0gYmVnaW4p
KSB7IH0KLSAgICB+U3RyaW5nUmFuZ2UoKSB7IGZyZWUobV9wdHIpOyB9Ci0gICAgb3BlcmF0b3Ig
Y29uc3QgY2hhciooKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQotICAgIGNvbnN0IGNoYXIqIGdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CisgICAgU3RyaW5nUmFuZ2UoY29uc3QgY2hhciog
YmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkKKyAgICAgICAgOiBtX3N0cmluZyhiZWdpbiwgZW5kIC0g
YmVnaW4pCisgICAgeyB9CisgICAgb3BlcmF0b3IgY29uc3QgY2hhciooKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5kYXRhKCk7IH0KKyAgICBjb25zdCBjaGFyKiBnZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5kYXRhKCk7IH0KIAogcHJpdmF0ZToKLSAgICBjaGFyKiBtX3B0cjsKKyAgICBD
U3RyaW5nIG1fc3RyaW5nOwogfTsKIAogY2xhc3MgU3RydWN0QnVmZmVyIHsKQEAgLTE0MCwxNiAr
MTQ3LDEzIEBAIGNsYXNzIFN0cnVjdEJ1ZmZlciB7CiAgICAgewogICAgICAgICBOU1VJbnRlZ2Vy
IHNpemUsIGFsaWdubWVudDsKICAgICAgICAgTlNHZXRTaXplQW5kQWxpZ25tZW50KGVuY29kZWRU
eXBlLCAmc2l6ZSwgJmFsaWdubWVudCk7Ci0gICAgICAgIC0tYWxpZ25tZW50OwotICAgICAgICBt
X2FsbG9jYXRpb24gPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKHNpemUgKyBhbGlnbm1lbnQp
KTsKLSAgICAgICAgbV9idWZmZXIgPSByZWludGVycHJldF9jYXN0PGNoYXIqPigocmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4obV9hbGxvY2F0aW9uKSArIGFsaWdubWVudCkgJiB+YWxpZ25tZW50
KTsKKyAgICAgICAgbV9idWZmZXIgPSBmYXN0QWxpZ25lZE1hbGxvYyhhbGlnbm1lbnQsIHNpemUp
OwogICAgIH0KIAotICAgIH5TdHJ1Y3RCdWZmZXIoKSB7IGZyZWUobV9hbGxvY2F0aW9uKTsgfQor
ICAgIH5TdHJ1Y3RCdWZmZXIoKSB7IGZhc3RBbGlnbmVkRnJlZShtX2J1ZmZlcik7IH0KICAgICBv
cGVyYXRvciB2b2lkKigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCogbV9hbGxvY2F0aW9uOwogICAgIHZvaWQqIG1fYnVmZmVyOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320025</attachid>
            <date>2017-09-06 09:06:02 -0700</date>
            <delta_ts>2017-09-06 09:31:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176331-20170907010601.patch</filename>
            <type>text/plain</type>
            <size>14701</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OTgyNTA3OTliYTFhNWE4YmZiMjc3MjlmMzM5ZjI3MWIzNGNiMjFlLi5mMjg0Y2M1NGY3MjdmNWQx
ODFkZTA1ZTdmZDBlZTcxYmQzYjZkZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNy0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBSZW1vdmUgIm1hbGxvYyIgYW5kICJmcmVlIiBmcm9tIEpT
Qy9BUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NjMzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSAibWFsbG9jIiBhbmQgImZyZWUiIG1hbnVhbCBjYWxscyBpbiBKU0MvQVBJLgorCisgICAg
ICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKToK
KyAgICAgICAgKiBBUEkvSlNXcmFwcGVyTWFwLm1tOgorICAgICAgICAocGFyc2VQcm9wZXJ0eUF0
dHJpYnV0ZXMpOgorICAgICAgICAobWFrZVNldHRlck5hbWUpOgorICAgICAgICAoY29weVByb3Rv
dHlwZVByb3BlcnRpZXMpOgorICAgICAgICBVc2UgUmV0YWluUHRyPE5TU3RyaW5nPiB0byBrZWVw
IE5TU3RyaW5nLiBXZSBhdm9pZCByZXBlYXRlZCAiY2hhcioiIHRvICJOU1N0cmluZyIgY29udmVy
c2lvbi4KKworICAgICAgICAqIEFQSS9PYmpjUnVudGltZUV4dHJhcy5oOgorICAgICAgICAoYWRv
cHRTeXN0ZW0pOgorICAgICAgICBBZGQgYWRvcHRTeXN0ZW0gdG8gYXV0b21hdGUgY2FsbGluZyBz
eXN0ZW0gZnJlZSgpLgorCisgICAgICAgIChwcm90b2NvbEltcGxlbWVudHNQcm90b2NvbCk6Cisg
ICAgICAgIChmb3JFYWNoUHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbCk6CisgICAgICAgIChm
b3JFYWNoTWV0aG9kSW5DbGFzcyk6CisgICAgICAgIChmb3JFYWNoTWV0aG9kSW5Qcm90b2NvbCk6
CisgICAgICAgIChmb3JFYWNoUHJvcGVydHlJblByb3RvY29sKToKKyAgICAgICAgKFN0cmluZ1Jh
bmdlOjpTdHJpbmdSYW5nZSk6CisgICAgICAgIChTdHJpbmdSYW5nZTo6b3BlcmF0b3IgY29uc3Qg
Y2hhciogY29uc3QpOgorICAgICAgICAoU3RyaW5nUmFuZ2U6OmdldCBjb25zdCk6CisgICAgICAg
IFVzZSBDU3RyaW5nIGZvciBiYWNrZW5kLgorCisgICAgICAgIChTdHJ1Y3RCdWZmZXI6OlN0cnVj
dEJ1ZmZlcik6CisgICAgICAgIChTdHJ1Y3RCdWZmZXI6On5TdHJ1Y3RCdWZmZXIpOgorICAgICAg
ICAoU3RyaW5nUmFuZ2U6On5TdHJpbmdSYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIFVzZSBmYXN0
QWxpZ25lZE1hbGxvYy9hc3RBbGlnbmVkRnJlZSB0byBnZXQgYWxpZ25lZCBtZW1vcnkuCisKIDIw
MTctMDktMDUgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgaXNO
b3RDZWxsU3BlY3VsYXRpb24gaXMgd3Jvbmcgd2l0aCByZXNwZWN0IHRvIFNwZWNFbXB0eQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCmluZGV4IDY5ODZmYWU4MzFlMmVjYzZlYmMyYmVk
YWU0ZTY4YWMyMmY1NzhlODAuLjZmM2IxZDhmNjY0ZDQ3Y2M2ZDc5ZWM0NTY4YTNkODkyODFjMjAy
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KQEAgLTEwNTQsMTkgKzEwNTQs
MTkgQEAgc3RhdGljIFN0cnVjdEhhbmRsZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hhciBpZFR5cGVbM107CiAgICAgICAgIC8vIENo
ZWNrIDJuZCBhcmd1bWVudCB0eXBlIGlzICJAIgotICAgICAgICBjaGFyKiBzZWNvbmRUeXBlID0g
bWV0aG9kX2NvcHlBcmd1bWVudFR5cGUobWV0aG9kLCAzKTsKLSAgICAgICAgaWYgKHN0cmNtcChz
ZWNvbmRUeXBlLCAiQCIpICE9IDApIHsKLSAgICAgICAgICAgIGZyZWUoc2Vjb25kVHlwZSk7Ci0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc2Vjb25kVHlw
ZSA9IGFkb3B0U3lzdGVtPGNoYXJbXT4obWV0aG9kX2NvcHlBcmd1bWVudFR5cGUobWV0aG9kLCAz
KSk7CisgICAgICAgICAgICBpZiAoc3RyY21wKHNlY29uZFR5cGUuZ2V0KCksICJAIikgIT0gMCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZnJlZShzZWNvbmRU
eXBlKTsKICAgICAgICAgLy8gQ2hlY2sgcmVzdWx0IHR5cGUgaXMgYWxzbyAiQCIKICAgICAgICAg
bWV0aG9kX2dldFJldHVyblR5cGUobWV0aG9kLCBpZFR5cGUsIDMpOwogICAgICAgICBpZiAoc3Ry
Y21wKGlkVHlwZSwgIkAiKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjaGFy
KiB0eXBlID0gbWV0aG9kX2NvcHlBcmd1bWVudFR5cGUobWV0aG9kLCAyKTsKLSAgICAgICAgc3Ry
dWN0SGFuZGxlcnMtPmFkZChTdHJpbmdJbXBsOjpjcmVhdGUodHlwZSksIChTdHJ1Y3RUYWdIYW5k
bGVyKXsgc2VsZWN0b3IsIDAgfSk7Ci0gICAgICAgIGZyZWUodHlwZSk7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0U3lzdGVtPGNoYXJbXT4obWV0aG9kX2NvcHlBcmd1
bWVudFR5cGUobWV0aG9kLCAyKSk7CisgICAgICAgICAgICBzdHJ1Y3RIYW5kbGVycy0+YWRkKFN0
cmluZ0ltcGw6OmNyZWF0ZSh0eXBlLmdldCgpKSwgKFN0cnVjdFRhZ0hhbmRsZXIpIHsgc2VsZWN0
b3IsIDAgfSk7CisgICAgICAgIH0KICAgICB9KTsKIAogICAgIC8vIFN0ZXAgMjogZmluZCBhbGwg
dG88Rm9vPiBpbnN0YW5jZSBtZXRob2RzIGluIEpTVmFsdWUuCkBAIC0xMDgxLDEwICsxMDgxLDgg
QEAgc3RhdGljIFN0cnVjdEhhbmRsZXJzKiBjcmVhdGVTdHJ1Y3RIYW5kbGVyTWFwKCkKICAgICAg
ICAgaWYgKG1ldGhvZF9nZXROdW1iZXJPZkFyZ3VtZW50cyhtZXRob2QpICE9IDIpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIC8vIFRyeSB0byBmaW5kIGEgbWF0Y2hpbmcgdmFsdWVXaXRo
PEZvbz46Y29udGV4dDogbWV0aG9kLgotICAgICAgICBjaGFyKiB0eXBlID0gbWV0aG9kX2NvcHlS
ZXR1cm5UeXBlKG1ldGhvZCk7Ci0KLSAgICAgICAgU3RydWN0SGFuZGxlcnM6Oml0ZXJhdG9yIGl0
ZXIgPSBzdHJ1Y3RIYW5kbGVycy0+ZmluZCh0eXBlKTsKLSAgICAgICAgZnJlZSh0eXBlKTsKKyAg
ICAgICAgYXV0byB0eXBlID0gYWRvcHRTeXN0ZW08Y2hhcltdPihtZXRob2RfY29weVJldHVyblR5
cGUobWV0aG9kKSk7CisgICAgICAgIFN0cnVjdEhhbmRsZXJzOjppdGVyYXRvciBpdGVyID0gc3Ry
dWN0SGFuZGxlcnMtPmZpbmQodHlwZS5nZXQoKSk7CiAgICAgICAgIGlmIChpdGVyID09IHN0cnVj
dEhhbmRsZXJzLT5lbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RydWN0VGFn
SGFuZGxlciYgaGFuZGxlciA9IGl0ZXItPnZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTV3JhcHBlck1hcC5tbQppbmRleCAwNmNjNWY4OGY3ZGM4ZDFmOWVlNjllNTc4YzAwZDExZmQ4
MDlkMDU3Li4yNGQxYWMyYTBhOGMwZmQ5NWFjZmE3YjM1YjlhN2ZmZWY2NmFiYTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBlck1hcC5tbQpAQCAtMjYwLDE5ICsyNjAsMjUg
QEAgc3RhdGljIHZvaWQgY29weU1ldGhvZHNUb09iamVjdChKU0NvbnRleHQgKmNvbnRleHQsIENs
YXNzIG9iamNDbGFzcywgUHJvdG9jb2wgKnAKICAgICBbcmVuYW1lTWFwIHJlbGVhc2VdOwogfQog
Ci1zdGF0aWMgYm9vbCBwYXJzZVByb3BlcnR5QXR0cmlidXRlcyhvYmpjX3Byb3BlcnR5X3QgcHJv
cGVydHksIGNoYXIqJiBnZXR0ZXJOYW1lLCBjaGFyKiYgc2V0dGVyTmFtZSkKK3N0cnVjdCBQcm9w
ZXJ0eSB7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGdl
dHRlck5hbWU7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBzZXR0ZXJOYW1lOworfTsKKworc3Rh
dGljIGJvb2wgcGFyc2VQcm9wZXJ0eUF0dHJpYnV0ZXMob2JqY19wcm9wZXJ0eV90IG9iamNQcm9w
ZXJ0eSwgUHJvcGVydHkmIHByb3BlcnR5KQogewogICAgIGJvb2wgcmVhZG9ubHkgPSBmYWxzZTsK
ICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVDb3VudDsKLSAgICBvYmpjX3Byb3BlcnR5X2F0dHJpYnV0
ZV90KiBhdHRyaWJ1dGVzID0gcHJvcGVydHlfY29weUF0dHJpYnV0ZUxpc3QocHJvcGVydHksICZh
dHRyaWJ1dGVDb3VudCk7CisgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRTeXN0ZW08b2JqY19w
cm9wZXJ0eV9hdHRyaWJ1dGVfdFtdPihwcm9wZXJ0eV9jb3B5QXR0cmlidXRlTGlzdChvYmpjUHJv
cGVydHksICZhdHRyaWJ1dGVDb3VudCkpOwogICAgIGlmIChhdHRyaWJ1dGVDb3VudCkgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkgewogICAg
ICAgICAgICAgc3dpdGNoICgqKGF0dHJpYnV0ZXNbaV0ubmFtZSkpIHsKICAgICAgICAgICAgIGNh
c2UgJ0cnOgotICAgICAgICAgICAgICAgIGdldHRlck5hbWUgPSBzdHJkdXAoYXR0cmlidXRlc1tp
XS52YWx1ZSk7CisgICAgICAgICAgICAgICAgcHJvcGVydHkuZ2V0dGVyTmFtZSA9IEAoYXR0cmli
dXRlc1tpXS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
ICdTJzoKLSAgICAgICAgICAgICAgICBzZXR0ZXJOYW1lID0gc3RyZHVwKGF0dHJpYnV0ZXNbaV0u
dmFsdWUpOworICAgICAgICAgICAgICAgIHByb3BlcnR5LnNldHRlck5hbWUgPSBAKGF0dHJpYnV0
ZXNbaV0udmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAn
Uic6CiAgICAgICAgICAgICAgICAgcmVhZG9ubHkgPSB0cnVlOwpAQCAtMjgxLDMzICsyODcsMjgg
QEAgc3RhdGljIGJvb2wgcGFyc2VQcm9wZXJ0eUF0dHJpYnV0ZXMob2JqY19wcm9wZXJ0eV90IHBy
b3BlcnR5LCBjaGFyKiYgZ2V0dGVyTmFtZSwKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmcmVlKGF0dHJpYnV0ZXMpOwogICAgIH0KICAg
ICByZXR1cm4gcmVhZG9ubHk7CiB9CiAKLXN0YXRpYyBjaGFyKiBtYWtlU2V0dGVyTmFtZShjb25z
dCBjaGFyKiBuYW1lKQorc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4gbWFrZVNldHRlck5hbWUo
Y29uc3QgY2hhciogbmFtZSkKIHsKICAgICBzaXplX3QgbmFtZUxlbmd0aCA9IHN0cmxlbihuYW1l
KTsKLSAgICBjaGFyKiBzZXR0ZXJOYW1lID0gKGNoYXIqKW1hbGxvYyhuYW1lTGVuZ3RoICsgNSk7
IC8vICJzZXQiIE5hbWUgIjpcMCIKLSAgICBzZXR0ZXJOYW1lWzBdID0gJ3MnOwotICAgIHNldHRl
ck5hbWVbMV0gPSAnZSc7Ci0gICAgc2V0dGVyTmFtZVsyXSA9ICd0JzsKLSAgICBzZXR0ZXJOYW1l
WzNdID0gdG91cHBlcigqbmFtZSk7Ci0gICAgbWVtY3B5KHNldHRlck5hbWUgKyA0LCBuYW1lICsg
MSwgbmFtZUxlbmd0aCAtIDEpOwotICAgIHNldHRlck5hbWVbbmFtZUxlbmd0aCArIDNdID0gJzon
OwotICAgIHNldHRlck5hbWVbbmFtZUxlbmd0aCArIDRdID0gJ1wwJzsKLSAgICByZXR1cm4gc2V0
dGVyTmFtZTsKKyAgICAvLyAic2V0IiBOYW1lICI6XDAiICA9PiBuYW1lTGVuZ3RoICsgNS4KKyAg
ICBWZWN0b3I8Y2hhciwgMTI4PiBidWZmZXIobmFtZUxlbmd0aCArIDUpOworICAgIGJ1ZmZlclsw
XSA9ICdzJzsKKyAgICBidWZmZXJbMV0gPSAnZSc7CisgICAgYnVmZmVyWzJdID0gJ3QnOworICAg
IGJ1ZmZlclszXSA9IHRvdXBwZXIoKm5hbWUpOworICAgIG1lbWNweShidWZmZXIuZGF0YSgpICsg
NCwgbmFtZSArIDEsIG5hbWVMZW5ndGggLSAxKTsKKyAgICBidWZmZXJbbmFtZUxlbmd0aCArIDNd
ID0gJzonOworICAgIGJ1ZmZlcltuYW1lTGVuZ3RoICsgNF0gPSAnXDAnOworICAgIHJldHVybiBA
KGJ1ZmZlci5kYXRhKCkpOwogfQogCiBzdGF0aWMgdm9pZCBjb3B5UHJvdG90eXBlUHJvcGVydGll
cyhKU0NvbnRleHQgKmNvbnRleHQsIENsYXNzIG9iamNDbGFzcywgUHJvdG9jb2wgKnByb3RvY29s
LCBKU1ZhbHVlICpwcm90b3R5cGVWYWx1ZSkKIHsKICAgICAvLyBGaXJzdCBnYXRoZXIgcHJvcHJl
dGllcyBpbnRvIHRoaXMgbGlzdCwgdGhlbiBoYW5kbGUgdGhlIG1ldGhvZHMgKGNhcHR1cmluZyB0
aGUgYWNjZXNzb3IgbWV0aG9kcykuCi0gICAgc3RydWN0IFByb3BlcnR5IHsKLSAgICAgICAgY29u
c3QgY2hhciogbmFtZTsKLSAgICAgICAgY2hhciogZ2V0dGVyTmFtZTsKLSAgICAgICAgY2hhciog
c2V0dGVyTmFtZTsKLSAgICB9OwogICAgIF9fYmxvY2sgVmVjdG9yPFByb3BlcnR5PiBwcm9wZXJ0
eUxpc3Q7CiAKICAgICAvLyBNYXAgcmVjb3JkaW5nIHRoZSBtZXRob2RzIHVzZWQgYXMgZ2V0dGVy
cy9zZXR0ZXJzLgpAQCAtMzE2LDQxICszMTcsMzYgQEAgc3RhdGljIHZvaWQgY29weVByb3RvdHlw
ZVByb3BlcnRpZXMoSlNDb250ZXh0ICpjb250ZXh0LCBDbGFzcyBvYmpjQ2xhc3MsIFByb3RvY28K
ICAgICAvLyBVc2VmdWwgdmFsdWUuCiAgICAgSlNWYWx1ZSAqdW5kZWZpbmVkID0gW0pTVmFsdWUg
dmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRdOwogCi0gICAgZm9yRWFjaFByb3Bl
cnR5SW5Qcm90b2NvbChwcm90b2NvbCwgXihvYmpjX3Byb3BlcnR5X3QgcHJvcGVydHkpewotICAg
ICAgICBjaGFyKiBnZXR0ZXJOYW1lID0gMDsKLSAgICAgICAgY2hhciogc2V0dGVyTmFtZSA9IDA7
Ci0gICAgICAgIGJvb2wgcmVhZG9ubHkgPSBwYXJzZVByb3BlcnR5QXR0cmlidXRlcyhwcm9wZXJ0
eSwgZ2V0dGVyTmFtZSwgc2V0dGVyTmFtZSk7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBw
cm9wZXJ0eV9nZXROYW1lKHByb3BlcnR5KTsKKyAgICBmb3JFYWNoUHJvcGVydHlJblByb3RvY29s
KHByb3RvY29sLCBeKG9iamNfcHJvcGVydHlfdCBvYmpjUHJvcGVydHkpIHsKKyAgICAgICAgY29u
c3QgY2hhciogbmFtZSA9IHByb3BlcnR5X2dldE5hbWUob2JqY1Byb3BlcnR5KTsKKyAgICAgICAg
UHJvcGVydHkgcHJvcGVydHkgeyBuYW1lLCBudWxscHRyLCBudWxscHRyIH07CisgICAgICAgIGJv
b2wgcmVhZG9ubHkgPSBwYXJzZVByb3BlcnR5QXR0cmlidXRlcyhvYmpjUHJvcGVydHksIHByb3Bl
cnR5KTsKIAotICAgICAgICAvLyBBZGQgdGhlIG5hbWVzIG9mIHRoZSBnZXR0ZXIgJiBzZXR0ZXIg
bWV0aG9kcyB0byAKLSAgICAgICAgaWYgKCFnZXR0ZXJOYW1lKQotICAgICAgICAgICAgZ2V0dGVy
TmFtZSA9IHN0cmR1cChuYW1lKTsKLSAgICAgICAgYWNjZXNzb3JNZXRob2RzW0AoZ2V0dGVyTmFt
ZSldID0gdW5kZWZpbmVkOworICAgICAgICAvLyBBZGQgdGhlIG5hbWVzIG9mIHRoZSBnZXR0ZXIg
JiBzZXR0ZXIgbWV0aG9kcyB0bworICAgICAgICBpZiAoIXByb3BlcnR5LmdldHRlck5hbWUpCisg
ICAgICAgICAgICBwcm9wZXJ0eS5nZXR0ZXJOYW1lID0gQChuYW1lKTsKKyAgICAgICAgYWNjZXNz
b3JNZXRob2RzW3Byb3BlcnR5LmdldHRlck5hbWUuZ2V0KCldID0gdW5kZWZpbmVkOwogICAgICAg
ICBpZiAoIXJlYWRvbmx5KSB7Ci0gICAgICAgICAgICBpZiAoIXNldHRlck5hbWUpCi0gICAgICAg
ICAgICAgICAgc2V0dGVyTmFtZSA9IG1ha2VTZXR0ZXJOYW1lKG5hbWUpOwotICAgICAgICAgICAg
YWNjZXNzb3JNZXRob2RzW0Aoc2V0dGVyTmFtZSldID0gdW5kZWZpbmVkOworICAgICAgICAgICAg
aWYgKCFwcm9wZXJ0eS5zZXR0ZXJOYW1lKQorICAgICAgICAgICAgICAgIHByb3BlcnR5LnNldHRl
ck5hbWUgPSBtYWtlU2V0dGVyTmFtZShuYW1lKTsKKyAgICAgICAgICAgIGFjY2Vzc29yTWV0aG9k
c1twcm9wZXJ0eS5zZXR0ZXJOYW1lLmdldCgpXSA9IHVuZGVmaW5lZDsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIEFkZCB0aGUgcHJvcGVydGllcyB0byBhIGxpc3QuCi0gICAgICAgIHByb3BlcnR5
TGlzdC5hcHBlbmQoKFByb3BlcnR5KXsgbmFtZSwgZ2V0dGVyTmFtZSwgc2V0dGVyTmFtZSB9KTsK
KyAgICAgICAgcHJvcGVydHlMaXN0LmFwcGVuZChXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgfSk7
CiAKICAgICAvLyBDb3B5IG1ldGhvZHMgdG8gdGhlIHByb3RvdHlwZSwgY2FwdHVyaW5nIGFjY2Vz
c29ycyBpbiB0aGUgYWNjZXNzb3JNZXRob2RzIG1hcC4KICAgICBjb3B5TWV0aG9kc1RvT2JqZWN0
KGNvbnRleHQsIG9iamNDbGFzcywgcHJvdG9jb2wsIFlFUywgcHJvdG90eXBlVmFsdWUsIGFjY2Vz
c29yTWV0aG9kcyk7CiAKICAgICAvLyBJdGVyYXRlIHRoZSBwcm9wZXJ0eUxpc3QgJiBnZW5lcmF0
ZSBhY2Nlc3NvciBwcm9wZXJ0aWVzLgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvcGVy
dHlMaXN0LnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFByb3BlcnR5JiBwcm9wZXJ0eSA9IHByb3Bl
cnR5TGlzdFtpXTsKLQotICAgICAgICBKU1ZhbHVlICpnZXR0ZXIgPSBhY2Nlc3Nvck1ldGhvZHNb
QChwcm9wZXJ0eS5nZXR0ZXJOYW1lKV07Ci0gICAgICAgIGZyZWUocHJvcGVydHkuZ2V0dGVyTmFt
ZSk7CisgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHByb3BlcnR5TGlzdCkgeworICAgICAgICBK
U1ZhbHVlKiBnZXR0ZXIgPSBhY2Nlc3Nvck1ldGhvZHNbcHJvcGVydHkuZ2V0dGVyTmFtZS5nZXQo
KV07CiAgICAgICAgIEFTU0VSVCghW2dldHRlciBpc1VuZGVmaW5lZF0pOwogCi0gICAgICAgIEpT
VmFsdWUgKnNldHRlciA9IHVuZGVmaW5lZDsKKyAgICAgICAgSlNWYWx1ZSogc2V0dGVyID0gdW5k
ZWZpbmVkOwogICAgICAgICBpZiAocHJvcGVydHkuc2V0dGVyTmFtZSkgewotICAgICAgICAgICAg
c2V0dGVyID0gYWNjZXNzb3JNZXRob2RzW0AocHJvcGVydHkuc2V0dGVyTmFtZSldOwotICAgICAg
ICAgICAgZnJlZShwcm9wZXJ0eS5zZXR0ZXJOYW1lKTsKKyAgICAgICAgICAgIHNldHRlciA9IGFj
Y2Vzc29yTWV0aG9kc1twcm9wZXJ0eS5zZXR0ZXJOYW1lLmdldCgpXTsKICAgICAgICAgICAgIEFT
U0VSVCghW3NldHRlciBpc1VuZGVmaW5lZF0pOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVudGltZUV4dHJhcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpjUnVudGltZUV4dHJhcy5oCmluZGV4IGZhNDRmZjZm
N2FmOGZlMTRiMDg0N2Q2OWQ3Y2FiYWM1OGIwZGZlYWYuLjJkN2RiNjYxOTI1N2E2OWQxODFhYzlm
Nzk2MGVhMzk4YWNkOTY5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
T2JqY1J1bnRpbWVFeHRyYXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iamNS
dW50aW1lRXh0cmFzLmgKQEAgLTIzLDIyICsyMywyOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAorI2ltcG9ydCA8bWVtb3J5PgogI2ltcG9ydCA8b2JqYy9Qcm90b2NvbC5oPgogI2ltcG9ydCA8
b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL1N5
c3RlbUZyZWUuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBzdGQ6
OnVuaXF1ZV9wdHI8VCwgV1RGOjpTeXN0ZW1GcmVlPFQ+PiBhZG9wdFN5c3RlbShVIHZhbHVlKQor
eworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VCwgV1RGOjpTeXN0ZW1GcmVlPFQ+Pih2YWx1
ZSk7Cit9CiAKIGlubGluZSBib29sIHByb3RvY29sSW1wbGVtZW50c1Byb3RvY29sKFByb3RvY29s
ICpjYW5kaWRhdGUsIFByb3RvY29sICp0YXJnZXQpCiB7CiAgICAgdW5zaWduZWQgcHJvdG9jb2xQ
cm90b2NvbHNDb3VudDsKLSAgICBQcm90b2NvbCAqKiBwcm90b2NvbFByb3RvY29scyA9IHByb3Rv
Y29sX2NvcHlQcm90b2NvbExpc3QoY2FuZGlkYXRlLCAmcHJvdG9jb2xQcm90b2NvbHNDb3VudCk7
CisgICAgYXV0byBwcm90b2NvbFByb3RvY29scyA9IGFkb3B0U3lzdGVtPFByb3RvY29sKltdPihw
cm90b2NvbF9jb3B5UHJvdG9jb2xMaXN0KGNhbmRpZGF0ZSwgJnByb3RvY29sUHJvdG9jb2xzQ291
bnQpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvdG9jb2xQcm90b2NvbHNDb3Vu
dDsgKytpKSB7Ci0gICAgICAgIGlmIChwcm90b2NvbF9pc0VxdWFsKHByb3RvY29sUHJvdG9jb2xz
W2ldLCB0YXJnZXQpKSB7Ci0gICAgICAgICAgICBmcmVlKHByb3RvY29sUHJvdG9jb2xzKTsKKyAg
ICAgICAgaWYgKHByb3RvY29sX2lzRXF1YWwocHJvdG9jb2xQcm90b2NvbHNbaV0sIHRhcmdldCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQogICAgIH0KLSAgICBmcmVlKHBy
b3RvY29sUHJvdG9jb2xzKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ3LDE0ICs1Mywx
NSBAQCBpbmxpbmUgdm9pZCBmb3JFYWNoUHJvdG9jb2xJbXBsZW1lbnRpbmdQcm90b2NvbChDbGFz
cyBjbHMsIFByb3RvY29sICp0YXJnZXQsIHZvaQogICAgIEFTU0VSVChjbHMpOwogICAgIEFTU0VS
VCh0YXJnZXQpOwogCi0gICAgVmVjdG9yPFByb3RvY29sICo+IHdvcmtsaXN0OworICAgIFZlY3Rv
cjxQcm90b2NvbCo+IHdvcmtsaXN0OwogICAgIEhhc2hTZXQ8dm9pZCo+IHZpc2l0ZWQ7CiAKICAg
ICAvLyBJbml0aWFsbHkgZmlsbCB0aGUgd29ya2xpc3Qgd2l0aCB0aGUgQ2xhc3MncyBwcm90b2Nv
bHMuCi0gICAgdW5zaWduZWQgcHJvdG9jb2xzQ291bnQ7Ci0gICAgUHJvdG9jb2wgKiogcHJvdG9j
b2xzID0gY2xhc3NfY29weVByb3RvY29sTGlzdChjbHMsICZwcm90b2NvbHNDb3VudCk7Ci0gICAg
d29ya2xpc3QuYXBwZW5kKHByb3RvY29scywgcHJvdG9jb2xzQ291bnQpOwotICAgIGZyZWUocHJv
dG9jb2xzKTsKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHByb3RvY29sc0NvdW50OworICAgICAg
ICBhdXRvIHByb3RvY29scyA9IGFkb3B0U3lzdGVtPFByb3RvY29sKltdPihjbGFzc19jb3B5UHJv
dG9jb2xMaXN0KGNscywgJnByb3RvY29sc0NvdW50KSk7CisgICAgICAgIHdvcmtsaXN0LmFwcGVu
ZChwcm90b2NvbHMuZ2V0KCksIHByb3RvY29sc0NvdW50KTsKKyAgICB9CiAKICAgICBib29sIHN0
b3AgPSBmYWxzZTsKICAgICB3aGlsZSAoIXdvcmtsaXN0LmlzRW1wdHkoKSkgewpAQCAtNzMsMzcg
KzgwLDM2IEBAIGlubGluZSB2b2lkIGZvckVhY2hQcm90b2NvbEltcGxlbWVudGluZ1Byb3RvY29s
KENsYXNzIGNscywgUHJvdG9jb2wgKnRhcmdldCwgdm9pCiAgICAgICAgIH0KIAogICAgICAgICAv
LyBBZGQgaW5jb3Jwb3JhdGVkIHByb3RvY29scyB0byB0aGUgd29ya2xpc3QuCi0gICAgICAgIHBy
b3RvY29scyA9IHByb3RvY29sX2NvcHlQcm90b2NvbExpc3QocHJvdG9jb2wsICZwcm90b2NvbHND
b3VudCk7Ci0gICAgICAgIHdvcmtsaXN0LmFwcGVuZChwcm90b2NvbHMsIHByb3RvY29sc0NvdW50
KTsKLSAgICAgICAgZnJlZShwcm90b2NvbHMpOworICAgICAgICB7CisgICAgICAgICAgICB1bnNp
Z25lZCBwcm90b2NvbHNDb3VudDsKKyAgICAgICAgICAgIGF1dG8gcHJvdG9jb2xzID0gYWRvcHRT
eXN0ZW08UHJvdG9jb2wqW10+KHByb3RvY29sX2NvcHlQcm90b2NvbExpc3QocHJvdG9jb2wsICZw
cm90b2NvbHNDb3VudCkpOworICAgICAgICAgICAgd29ya2xpc3QuYXBwZW5kKHByb3RvY29scy5n
ZXQoKSwgcHJvdG9jb2xzQ291bnQpOworICAgICAgICB9CiAgICAgfQogfQogCiBpbmxpbmUgdm9p
ZCBmb3JFYWNoTWV0aG9kSW5DbGFzcyhDbGFzcyBjbHMsIHZvaWQgKF5jYWxsYmFjaykoTWV0aG9k
KSkKIHsKICAgICB1bnNpZ25lZCBjb3VudDsKLSAgICBNZXRob2QqIG1ldGhvZHMgPSBjbGFzc19j
b3B5TWV0aG9kTGlzdChjbHMsICZjb3VudCk7CisgICAgYXV0byBtZXRob2RzID0gYWRvcHRTeXN0
ZW08TWV0aG9kW10+KGNsYXNzX2NvcHlNZXRob2RMaXN0KGNscywgJmNvdW50KSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgIGNhbGxiYWNrKG1ldGhv
ZHNbaV0pOwotICAgIGZyZWUobWV0aG9kcyk7CiB9CiAKIGlubGluZSB2b2lkIGZvckVhY2hNZXRo
b2RJblByb3RvY29sKFByb3RvY29sICpwcm90b2NvbCwgQk9PTCBpc1JlcXVpcmVkTWV0aG9kLCBC
T09MIGlzSW5zdGFuY2VNZXRob2QsIHZvaWQgKF5jYWxsYmFjaykoU0VMLCBjb25zdCBjaGFyKikp
CiB7CiAgICAgdW5zaWduZWQgY291bnQ7Ci0gICAgc3RydWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0
aW9uKiBtZXRob2RzID0gcHJvdG9jb2xfY29weU1ldGhvZERlc2NyaXB0aW9uTGlzdChwcm90b2Nv
bCwgaXNSZXF1aXJlZE1ldGhvZCwgaXNJbnN0YW5jZU1ldGhvZCwgJmNvdW50KTsKKyAgICBhdXRv
IG1ldGhvZHMgPSBhZG9wdFN5c3RlbTxvYmpjX21ldGhvZF9kZXNjcmlwdGlvbltdPihwcm90b2Nv
bF9jb3B5TWV0aG9kRGVzY3JpcHRpb25MaXN0KHByb3RvY29sLCBpc1JlcXVpcmVkTWV0aG9kLCBp
c0luc3RhbmNlTWV0aG9kLCAmY291bnQpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkKICAgICAgICAgY2FsbGJhY2sobWV0aG9kc1tpXS5uYW1lLCBtZXRob2RzW2ld
LnR5cGVzKTsKLSAgICBmcmVlKG1ldGhvZHMpOwogfQogCiBpbmxpbmUgdm9pZCBmb3JFYWNoUHJv
cGVydHlJblByb3RvY29sKFByb3RvY29sICpwcm90b2NvbCwgdm9pZCAoXmNhbGxiYWNrKShvYmpj
X3Byb3BlcnR5X3QpKQogewogICAgIHVuc2lnbmVkIGNvdW50OwotICAgIG9iamNfcHJvcGVydHlf
dCogcHJvcGVydGllcyA9IHByb3RvY29sX2NvcHlQcm9wZXJ0eUxpc3QocHJvdG9jb2wsICZjb3Vu
dCk7CisgICAgYXV0byBwcm9wZXJ0aWVzID0gYWRvcHRTeXN0ZW08b2JqY19wcm9wZXJ0eV90W10+
KHByb3RvY29sX2NvcHlQcm9wZXJ0eUxpc3QocHJvdG9jb2wsICZjb3VudCkpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICBjYWxsYmFjayhwcm9wZXJ0
aWVzW2ldKTsKLSAgICBmcmVlKHByb3BlcnRpZXMpOwogfQogCiB0ZW1wbGF0ZTxjaGFyIG9wZW4s
IGNoYXIgY2xvc2U+CkBAIC0xMjQsMTMgKzEzMCwxNCBAQCB2b2lkIHNraXBQYWlyKGNvbnN0IGNo
YXIqJiBwb3NpdGlvbikKIGNsYXNzIFN0cmluZ1JhbmdlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTdHJpbmdSYW5nZSk7CiBwdWJsaWM6Ci0gICAgU3RyaW5nUmFuZ2UoY29uc3QgY2hhciog
YmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkgOiBtX3B0cihzdHJuZHVwKGJlZ2luLCBlbmQgLSBiZWdp
bikpIHsgfQotICAgIH5TdHJpbmdSYW5nZSgpIHsgZnJlZShtX3B0cik7IH0KLSAgICBvcGVyYXRv
ciBjb25zdCBjaGFyKigpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgY29uc3QgY2hhciog
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KKyAgICBTdHJpbmdSYW5nZShjb25zdCBjaGFy
KiBiZWdpbiwgY29uc3QgY2hhciogZW5kKQorICAgICAgICA6IG1fc3RyaW5nKGJlZ2luLCBlbmQg
LSBiZWdpbikKKyAgICB7IH0KKyAgICBvcGVyYXRvciBjb25zdCBjaGFyKigpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmRhdGEoKTsgfQorICAgIGNvbnN0IGNoYXIqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmRhdGEoKTsgfQogCiBwcml2YXRlOgotICAgIGNoYXIqIG1fcHRyOworICAg
IENTdHJpbmcgbV9zdHJpbmc7CiB9OwogCiBjbGFzcyBTdHJ1Y3RCdWZmZXIgewpAQCAtMTQwLDE2
ICsxNDcsMTMgQEAgY2xhc3MgU3RydWN0QnVmZmVyIHsKICAgICB7CiAgICAgICAgIE5TVUludGVn
ZXIgc2l6ZSwgYWxpZ25tZW50OwogICAgICAgICBOU0dldFNpemVBbmRBbGlnbm1lbnQoZW5jb2Rl
ZFR5cGUsICZzaXplLCAmYWxpZ25tZW50KTsKLSAgICAgICAgLS1hbGlnbm1lbnQ7Ci0gICAgICAg
IG1fYWxsb2NhdGlvbiA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2Moc2l6ZSArIGFsaWdubWVu
dCkpOwotICAgICAgICBtX2J1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KChyZWludGVy
cHJldF9jYXN0PGludHB0cl90PihtX2FsbG9jYXRpb24pICsgYWxpZ25tZW50KSAmIH5hbGlnbm1l
bnQpOworICAgICAgICBtX2J1ZmZlciA9IGZhc3RBbGlnbmVkTWFsbG9jKGFsaWdubWVudCwgc2l6
ZSk7CiAgICAgfQogCi0gICAgflN0cnVjdEJ1ZmZlcigpIHsgZnJlZShtX2FsbG9jYXRpb24pOyB9
CisgICAgflN0cnVjdEJ1ZmZlcigpIHsgZmFzdEFsaWduZWRGcmVlKG1fYnVmZmVyKTsgfQogICAg
IG9wZXJhdG9yIHZvaWQqKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogcHJpdmF0ZToK
LSAgICB2b2lkKiBtX2FsbG9jYXRpb247CiAgICAgdm9pZCogbV9idWZmZXI7CiB9OwogCg==
</data>
<flag name="review"
          id="340184"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>