<?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>166982</bug_id>
          
          <creation_ts>2017-01-12 13:27:56 -0800</creation_ts>
          <short_desc>WebAssembly: implement Module imports/exports</short_desc>
          <delta_ts>2017-03-28 11:42:01 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161709</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1266260</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-01-12 13:27:56 -0800</bug_when>
    <thetext>As in: https://github.com/WebAssembly/design/commit/18cbacb90cd3584dd5c9aa3d392e4e55f66af6ab</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291821</commentid>
    <comment_count>1</comment_count>
      <attachid>305568</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-27 23:52:53 -0700</bug_when>
    <thetext>Created attachment 305568
patch

This is a minor API which some tooling wanted to use (instead of manually decoding on their own). We&apos;ll need it if we want to avoid web compatibility headaches for developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291826</commentid>
    <comment_count>2</comment_count>
      <attachid>305568</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-28 00:34:20 -0700</bug_when>
    <thetext>Comment on attachment 305568
patch

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

r=me with comments

&gt; JSTests/wasm/js-api/Module.exports.js:34
&gt; +    assert.eq(m.exports[0].name, &quot;func&quot;);
&gt; +    assert.eq(m.exports[0].kind, &quot;function&quot;);

Please add a test that repeated calls produce a new array.

&gt; JSTests/wasm/js-api/Module.imports.js:23
&gt; +    assert.eq(m.imports.length, 4);

Please add a test that repeated calls produce a new array.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp:102
&gt; +    if (!module)
&gt; +        throwException(exec, throwScope, createTypeError(exec, ASCIILiteral(&quot;WebAssembly.Module.prototype.imports called with non WebAssembly.Module |this| value&quot;)));
&gt; +    RETURN_IF_EXCEPTION(throwScope, { });

This is weird style. You know when the exception happens, since you throw it. So just return then, and don&apos;t have the RETURN_IF_EXCEPTION

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp:108
&gt; +    for (const Wasm::Import&amp; i : imports) {

style: Call this &quot;import&quot; instead of &quot;i&quot; please.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp:113
&gt; +        obj-&gt;putDirect(vm, Identifier::fromString(exec, &quot;module&quot;), jsString(exec, i.module.string()));
&gt; +        obj-&gt;putDirect(vm, Identifier::fromString(exec, &quot;name&quot;), jsString(exec, i.field.string()));
&gt; +        obj-&gt;putDirect(vm, Identifier::fromString(exec, &quot;kind&quot;), jsString(exec, String(makeString(i.kind))));

I&apos;d hoist the Identifier creation out of this loop just for perf sanity. I don&apos;t think LLVM will figure out this won&apos;t change.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp:130
&gt; +    if (!module)
&gt; +        throwException(exec, throwScope, createTypeError(exec, ASCIILiteral(&quot;WebAssembly.Module.prototype.exports called with non WebAssembly.Module |this| value&quot;)));
&gt; +    RETURN_IF_EXCEPTION(throwScope, { });

Ditto about exception throwing style.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp:136
&gt; +    for (const Wasm::Export&amp; e : exports) {

Style: Please name this &quot;export&quot; instead of &quot;e&quot;.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp:140
&gt; +        obj-&gt;putDirect(vm, Identifier::fromString(exec, &quot;name&quot;), jsString(exec, e.field.string()));
&gt; +        obj-&gt;putDirect(vm, Identifier::fromString(exec, &quot;kind&quot;), jsString(exec, String(makeString(e.kind))));

Ditto about moving Identifier creation out of the loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291926</commentid>
    <comment_count>3</comment_count>
      <attachid>305599</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 09:41:58 -0700</bug_when>
    <thetext>Created attachment 305599
patch

&gt; &gt; Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp:136
&gt; &gt; +    for (const Wasm::Export&amp; e : exports) {
&gt; 
&gt; Style: Please name this &quot;export&quot; instead of &quot;e&quot;.

`export` is a reserved keyword in C++. I named them `imp` and `exp` to follow other parts of the code that had the same naming issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291927</commentid>
    <comment_count>4</comment_count>
      <attachid>305599</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-28 09:43:13 -0700</bug_when>
    <thetext>Comment on attachment 305599
patch

Rejecting attachment 305599 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 305599, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in JSTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/3427650</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291968</commentid>
    <comment_count>5</comment_count>
      <attachid>305599</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 11:19:26 -0700</bug_when>
    <thetext>Comment on attachment 305599
patch

CQ seems confused by a non-existent OOPS. Or I&apos;m confused. Either way, there&apos;s confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291972</commentid>
    <comment_count>6</comment_count>
      <attachid>305599</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-28 11:21:52 -0700</bug_when>
    <thetext>Comment on attachment 305599
patch

Rejecting attachment 305599 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 305599, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in JSTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/3428076</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291978</commentid>
    <comment_count>7</comment_count>
      <attachid>305615</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 11:27:07 -0700</bug_when>
    <thetext>Created attachment 305615
patch

Ha! I&apos;d uploaded an older patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291986</commentid>
    <comment_count>8</comment_count>
      <attachid>305615</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-28 11:41:56 -0700</bug_when>
    <thetext>Comment on attachment 305615
patch

Clearing flags on attachment: 305615

Committed r214484: &lt;http://trac.webkit.org/changeset/214484&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291987</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-28 11:42:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305568</attachid>
            <date>2017-03-27 23:52:53 -0700</date>
            <delta_ts>2017-03-28 09:41:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-module-import-export.patch</filename>
            <type>text/plain</type>
            <size>11445</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0MWMzZjY0NjNkNWM1ZDgzZmQ3OGVmMTYyYjQ2ZjljYTVkMDAwNTMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDI3IE1hciAyMDE3IDIzOjUxOjA3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gbW9kdWxl
LWltcG9ydC1leHBvcnQKCi0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAxNCArKysrKwogSlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuZXhw
b3J0cy5qcyAgICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKwogSlNUZXN0cy93YXNtL2pz
LWFwaS9Nb2R1bGUuaW1wb3J0cy5qcyAgICAgICAgICAgICAgfCAzNiArKysrKysrKysrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDE3ICsr
KysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oICAgICAgICAgICAg
fCAxMCArKy0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAgICAg
ICAgICB8IDYyICsrKysrKysrKysrKysrKysrKysrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTc0IGlu
c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93
YXNtL2pzLWFwaS9Nb2R1bGUuZXhwb3J0cy5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMv
d2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5n
ZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkNzZiOWIuLjljNjlkZjUgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MTkgQEAKIDIwMTctMDMtMjcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisg
ICAgICAgIFdlYkFzc2VtYmx5OiBpbXBsZW1lbnQgTW9kdWxlIGltcG9ydHMvZXhwb3J0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTgyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL2pzLWFw
aS9Nb2R1bGUuZXhwb3J0cy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQudGhyb3dzLldlYkFz
c2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuZXhwb3J0cyk6CisgICAgICAgIChhc3NlcnQuZXEpOgor
ICAgICAgICAqIHdhc20vanMtYXBpL01vZHVsZS5pbXBvcnRzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydC50aHJvd3MuV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5pbXBvcnRzKToKKyAg
ICAgICAgKGFzc2VydC5lcSk6CisKKzIwMTctMDMtMjcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2VtYmx5OiBtaXNjIG1lbW9yeSB0ZXN0aW5nCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxMzcKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuZXhwb3J0cy5qcyBiL0pTVGVz
dHMvd2FzbS9qcy1hcGkvTW9kdWxlLmV4cG9ydHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjRhY2NhMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1h
cGkvTW9kdWxlLmV4cG9ydHMuanMKQEAgLTAsMCArMSw0MSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJv
bSAnLi4vQnVpbGRlci5qcyc7CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0Lmpz
JzsKKworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmV4
cG9ydHModW5kZWZpbmVkLCAiIiksIFR5cGVFcnJvciwgYFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90
b3R5cGUuZXhwb3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIHx0aGlzfCB2
YWx1ZWApOworCit7CisgICAgY29uc3QgbSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBC
dWlsZGVyKCkpLldlYkFzc2VtYmx5KCkuZ2V0KCkpOworICAgIGFzc2VydC5pc0FycmF5KG0uZXhw
b3J0cyk7CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0cy5sZW5ndGgsIDApOworfQorCit7CisgICAg
Y29uc3QgbSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoCisgICAgICAgIChuZXcgQnVpbGRlcigp
KQorICAgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5k
KCkKKyAgICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFs
OiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAuRW5k
KCkKKyAgICAgICAgICAgIC5NZW1vcnkoKS5Jbml0aWFsTWF4UGFnZXMoMSwgMSkuRW5kKCkKKyAg
ICAgICAgICAgIC5HbG9iYWwoKS5JMzIoNDIsICJpbW11dGFibGUiKS5FbmQoKQorICAgICAgICAg
ICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW5jIikKKyAgICAgICAg
ICAgICAgICAuVGFibGUoInRhYiIsIDApCisgICAgICAgICAgICAgICAgLk1lbW9yeSgibWVtIiwg
MCkKKyAgICAgICAgICAgICAgICAuR2xvYmFsKCJnbG9iIiwgMCkKKyAgICAgICAgICAgIC5FbmQo
KQorICAgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuYyIs
IHsgcGFyYW1zOiBbXSB9KS5SZXR1cm4oKS5FbmQoKQorICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgICAuV2ViQXNzZW1ibHkoKS5nZXQoKSk7CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0cy5s
ZW5ndGgsIDQpOworICAgIGFzc2VydC5lcShtLmV4cG9ydHNbMF0ubmFtZSwgImZ1bmMiKTsKKyAg
ICBhc3NlcnQuZXEobS5leHBvcnRzWzBdLmtpbmQsICJmdW5jdGlvbiIpOworICAgIGFzc2VydC5l
cShtLmV4cG9ydHNbMV0ubmFtZSwgInRhYiIpOworICAgIGFzc2VydC5lcShtLmV4cG9ydHNbMV0u
a2luZCwgInRhYmxlIik7CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0c1syXS5uYW1lLCAibWVtIik7
CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0c1syXS5raW5kLCAibWVtb3J5Iik7CisgICAgYXNzZXJ0
LmVxKG0uZXhwb3J0c1szXS5uYW1lLCAiZ2xvYiIpOworICAgIGFzc2VydC5lcShtLmV4cG9ydHNb
M10ua2luZCwgImdsb2JhbCIpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9N
b2R1bGUuaW1wb3J0cy5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMwYTE3MgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMKQEAgLTAsMCArMSwz
NiBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CitpbXBvcnQgKiBhcyBh
c3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3Nl
bWJseS5Nb2R1bGUucHJvdG90eXBlLmltcG9ydHModW5kZWZpbmVkLCAiIiksIFR5cGVFcnJvciwg
YFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuaW1wb3J0cyBjYWxsZWQgd2l0aCBub24gV2Vi
QXNzZW1ibHkuTW9kdWxlIHx0aGlzfCB2YWx1ZWApOworCit7CisgICAgY29uc3QgbSA9IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpLldlYkFzc2VtYmx5KCkuZ2V0KCkpOwor
ICAgIGFzc2VydC5pc0FycmF5KG0uaW1wb3J0cyk7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0cy5s
ZW5ndGgsIDApOworfQorCit7CisgICAgY29uc3QgbSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
CisgICAgICAgIChuZXcgQnVpbGRlcigpKQorICAgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb29GdW5jdGlv
biIsICJiYXJGdW5jdGlvbiIsIHsgcGFyYW1zOiBbXSB9KQorICAgICAgICAgICAgICAgIC5UYWJs
ZSgiZm9vVGFibGUiLCAiYmFyVGFibGUiLCB7aW5pdGlhbDogMjAsIGVsZW1lbnQ6ICJhbnlmdW5j
In0pCisgICAgICAgICAgICAgICAgLk1lbW9yeSgiZm9vTWVtb3J5IiwgImJhck1lbW9yeSIsIHtp
bml0aWFsOiAyMH0pCisgICAgICAgICAgICAgICAgLkdsb2JhbCgpLkkzMigiZm9vR2xvYmFsIiwg
ImJhckdsb2JhbCIsICJpbW11dGFibGUiKS5FbmQoKQorICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgICAuV2ViQXNzZW1ibHkoKS5nZXQoKSk7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0cy5s
ZW5ndGgsIDQpOworICAgIGFzc2VydC5lcShtLmltcG9ydHNbMF0ubW9kdWxlLCAiZm9vRnVuY3Rp
b24iKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzBdLm5hbWUsICJiYXJGdW5jdGlvbiIpOwor
ICAgIGFzc2VydC5lcShtLmltcG9ydHNbMF0ua2luZCwgImZ1bmN0aW9uIik7CisgICAgYXNzZXJ0
LmVxKG0uaW1wb3J0c1sxXS5tb2R1bGUsICJmb29UYWJsZSIpOworICAgIGFzc2VydC5lcShtLmlt
cG9ydHNbMV0ubmFtZSwgImJhclRhYmxlIik7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1sxXS5r
aW5kLCAidGFibGUiKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzJdLm1vZHVsZSwgImZvb01l
bW9yeSIpOworICAgIGFzc2VydC5lcShtLmltcG9ydHNbMl0ubmFtZSwgImJhck1lbW9yeSIpOwor
ICAgIGFzc2VydC5lcShtLmltcG9ydHNbMl0ua2luZCwgIm1lbW9yeSIpOworICAgIGFzc2VydC5l
cShtLmltcG9ydHNbM10ubW9kdWxlLCAiZm9vR2xvYmFsIik7CisgICAgYXNzZXJ0LmVxKG0uaW1w
b3J0c1szXS5uYW1lLCAiYmFyR2xvYmFsIik7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1szXS5r
aW5kLCAiZ2xvYmFsIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwNzA5YWM3Li40
ZTMwZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxNy0w
My0yNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViQXNz
ZW1ibHk6IGltcGxlbWVudCBNb2R1bGUgaW1wb3J0cy9leHBvcnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY5ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyBkZWZpbmVkIGluOiBodHRwczovL2dp
dGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2NvbW1pdC8xOGNiYWNiOTBjZDM1ODRkZDVjOWFh
M2QzOTJlNGU1NWY2NmFmNmFiCisKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6bWFrZVN0cmluZyk6IHVzZSB1cHBlcmNhc2UgaW5zdGVhZCwgaXQgd2Fz
IG9ubHkgdXNlZAorICAgICAgICBmb3IgZGlhZ25vc3RpYyBidXQgaXMgbm93IHVzZWQgZm9yIHRo
ZSBleHBlY3RlZCBKUyBwcm9wZXJ0eSdzCisgICAgICAgIGNhcGl0YWxpemF0aW9uCisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5TW9kdWxlUHJvdG9JbXBvcnRzKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1i
bHlNb2R1bGVQcm90b0V4cG9ydHMpOgorCisyMDE3LTAzLTI3ICBKRiBCYXN0aWVuICA8amZiYXN0
aWVuQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWJBc3NlbWJseTogbWlzYyBtZW1vcnkgdGVzdGlu
ZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTM3
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA5YTdhNjcyLi5i
NTk2NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTIs
MTAgKzkyLDEwIEBAIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihFeHRlcm5hbEtpbmQ6
Okdsb2JhbCkgICA9PSAzLCAiV2FzbSBuZWVkcyBHbG9iYWwKIHN0YXRpYyBpbmxpbmUgY29uc3Qg
Y2hhciogbWFrZVN0cmluZyhFeHRlcm5hbEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQp
IHsKLSAgICBjYXNlIEV4dGVybmFsS2luZDo6RnVuY3Rpb246IHJldHVybiAiRnVuY3Rpb24iOwot
ICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpUYWJsZTogcmV0dXJuICJUYWJsZSI7Ci0gICAgY2FzZSBF
eHRlcm5hbEtpbmQ6Ok1lbW9yeTogcmV0dXJuICJNZW1vcnkiOwotICAgIGNhc2UgRXh0ZXJuYWxL
aW5kOjpHbG9iYWw6IHJldHVybiAiR2xvYmFsIjsKKyAgICBjYXNlIEV4dGVybmFsS2luZDo6RnVu
Y3Rpb246IHJldHVybiAiZnVuY3Rpb24iOworICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpUYWJsZTog
cmV0dXJuICJ0YWJsZSI7CisgICAgY2FzZSBFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogcmV0dXJuICJt
ZW1vcnkiOworICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpHbG9iYWw6IHJldHVybiAiZ2xvYmFsIjsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gIj8i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCmluZGV4IDVkM2M2NDUuLjgyZmE0ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsMTIgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVy
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1
bGUuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJv
dG9DdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9JbXBvcnRzKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0V4
cG9ydHMoRXhlY1N0YXRlKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZS5sdXQuaCIKQEAgLTQ3LDYgKzUwLDggQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG8KIC8q
IFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJv
dG90eXBlVGFibGVXZWJBc3NlbWJseU1vZHVsZQogIGN1c3RvbVNlY3Rpb25zIHdlYkFzc2VtYmx5
TW9kdWxlUHJvdG9DdXN0b21TZWN0aW9ucyBEb250RW51bXxGdW5jdGlvbiAxCisgaW1wb3J0cyAg
ICAgICAgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMgICAgICAgIERvbnRFbnVtfEFjY2Vz
c29yIDAKKyBleHBvcnRzICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZVByb3RvRXhwb3J0cyAgICAg
ICAgRG9udEVudW18QWNjZXNzb3IgMAogIEBlbmQKICAqLwogCkBAIC04NSw2ICs5MCw2MSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9DdXN0b21T
ZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZVBy
b3RvSW1wb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1dl
YkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1
bGUqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbW9kdWxlKQorICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmltcG9ydHMgY2FsbGVkIHdp
dGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWUiKSkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisKKyAgICBjb25zdCBhdXRvJiBpbXBv
cnRzID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydHM7CisgICAgZm9yIChjb25z
dCBXYXNtOjpJbXBvcnQmIGkgOiBpbXBvcnRzKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmogPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOworICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAibW9kdWxlIiksIGpzU3RyaW5nKGV4ZWMsIGkubW9kdWxlLnN0cmlu
ZygpKSk7CisgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIGkuZmllbGQuc3RyaW5nKCkpKTsKKyAgICAg
ICAgb2JqLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtpbmQi
KSwganNTdHJpbmcoZXhlYywgU3RyaW5nKG1ha2VTdHJpbmcoaS5raW5kKSkpKTsKKyAgICAgICAg
cmVzdWx0LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVQ
cm90b0V4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNX
ZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9k
dWxlKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW1vZHVsZSkKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5leHBvcnRzIGNhbGxlZCB3
aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgfHRoaXN8IHZhbHVlIikpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisKKyAgICBKU0FycmF5KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCisgICAgY29uc3QgYXV0byYgZXhw
b3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5leHBvcnRzOworICAgIGZvciAoY29u
c3QgV2FzbTo6RXhwb3J0JiBlIDogZXhwb3J0cykgeworICAgICAgICBKU09iamVjdCogb2JqID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgZS5maWVsZC5zdHJpbmco
KSkpOworICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAia2luZCIpLCBqc1N0cmluZyhleGVjLCBTdHJpbmcobWFrZVN0cmluZyhlLmtpbmQpKSkp
OworICAgICAgICByZXN1bHQtPnB1c2goZXhlYywgb2JqKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKK30KKwogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIFdlYkFzc2Vt
Ymx5TW9kdWxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewogICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1i
bHlNb2R1bGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0tIAoyLjkuMwoK
</data>
<flag name="review"
          id="327002"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="327003"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305599</attachid>
            <date>2017-03-28 09:41:58 -0700</date>
            <delta_ts>2017-03-28 11:27:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-module-import-export.patch</filename>
            <type>text/plain</type>
            <size>11445</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0MWMzZjY0NjNkNWM1ZDgzZmQ3OGVmMTYyYjQ2ZjljYTVkMDAwNTMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDI3IE1hciAyMDE3IDIzOjUxOjA3IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gbW9kdWxl
LWltcG9ydC1leHBvcnQKCi0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAxNCArKysrKwogSlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuZXhw
b3J0cy5qcyAgICAgICAgICAgICAgfCA0MSArKysrKysrKysrKysrKwogSlNUZXN0cy93YXNtL2pz
LWFwaS9Nb2R1bGUuaW1wb3J0cy5qcyAgICAgICAgICAgICAgfCAzNiArKysrKysrKysrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDE3ICsr
KysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oICAgICAgICAgICAg
fCAxMCArKy0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAgICAg
ICAgICB8IDYyICsrKysrKysrKysrKysrKysrKysrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTc0IGlu
c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93
YXNtL2pzLWFwaS9Nb2R1bGUuZXhwb3J0cy5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMv
d2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5n
ZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBkNzZiOWIuLjljNjlkZjUgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MTkgQEAKIDIwMTctMDMtMjcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCisg
ICAgICAgIFdlYkFzc2VtYmx5OiBpbXBsZW1lbnQgTW9kdWxlIGltcG9ydHMvZXhwb3J0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTgyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL2pzLWFw
aS9Nb2R1bGUuZXhwb3J0cy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQudGhyb3dzLldlYkFz
c2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuZXhwb3J0cyk6CisgICAgICAgIChhc3NlcnQuZXEpOgor
ICAgICAgICAqIHdhc20vanMtYXBpL01vZHVsZS5pbXBvcnRzLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydC50aHJvd3MuV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5pbXBvcnRzKToKKyAg
ICAgICAgKGFzc2VydC5lcSk6CisKKzIwMTctMDMtMjcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgorCiAgICAgICAgIFdlYkFzc2VtYmx5OiBtaXNjIG1lbW9yeSB0ZXN0aW5nCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxMzcKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuZXhwb3J0cy5qcyBiL0pTVGVz
dHMvd2FzbS9qcy1hcGkvTW9kdWxlLmV4cG9ydHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMjRhY2NhMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1h
cGkvTW9kdWxlLmV4cG9ydHMuanMKQEAgLTAsMCArMSw0MSBAQAoraW1wb3J0IEJ1aWxkZXIgZnJv
bSAnLi4vQnVpbGRlci5qcyc7CitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0Lmpz
JzsKKworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmV4
cG9ydHModW5kZWZpbmVkLCAiIiksIFR5cGVFcnJvciwgYFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90
b3R5cGUuZXhwb3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIHx0aGlzfCB2
YWx1ZWApOworCit7CisgICAgY29uc3QgbSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBC
dWlsZGVyKCkpLldlYkFzc2VtYmx5KCkuZ2V0KCkpOworICAgIGFzc2VydC5pc0FycmF5KG0uZXhw
b3J0cyk7CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0cy5sZW5ndGgsIDApOworfQorCit7CisgICAg
Y29uc3QgbSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoCisgICAgICAgIChuZXcgQnVpbGRlcigp
KQorICAgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5k
KCkKKyAgICAgICAgICAgIC5UYWJsZSgpCisgICAgICAgICAgICAgICAgLlRhYmxlKHtpbml0aWFs
OiAyMCwgbWF4aW11bTogMzAsIGVsZW1lbnQ6ICJhbnlmdW5jIn0pCisgICAgICAgICAgICAuRW5k
KCkKKyAgICAgICAgICAgIC5NZW1vcnkoKS5Jbml0aWFsTWF4UGFnZXMoMSwgMSkuRW5kKCkKKyAg
ICAgICAgICAgIC5HbG9iYWwoKS5JMzIoNDIsICJpbW11dGFibGUiKS5FbmQoKQorICAgICAgICAg
ICAgLkV4cG9ydCgpCisgICAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJmdW5jIikKKyAgICAgICAg
ICAgICAgICAuVGFibGUoInRhYiIsIDApCisgICAgICAgICAgICAgICAgLk1lbW9yeSgibWVtIiwg
MCkKKyAgICAgICAgICAgICAgICAuR2xvYmFsKCJnbG9iIiwgMCkKKyAgICAgICAgICAgIC5FbmQo
KQorICAgICAgICAgICAgLkNvZGUoKQorICAgICAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuYyIs
IHsgcGFyYW1zOiBbXSB9KS5SZXR1cm4oKS5FbmQoKQorICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgICAuV2ViQXNzZW1ibHkoKS5nZXQoKSk7CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0cy5s
ZW5ndGgsIDQpOworICAgIGFzc2VydC5lcShtLmV4cG9ydHNbMF0ubmFtZSwgImZ1bmMiKTsKKyAg
ICBhc3NlcnQuZXEobS5leHBvcnRzWzBdLmtpbmQsICJmdW5jdGlvbiIpOworICAgIGFzc2VydC5l
cShtLmV4cG9ydHNbMV0ubmFtZSwgInRhYiIpOworICAgIGFzc2VydC5lcShtLmV4cG9ydHNbMV0u
a2luZCwgInRhYmxlIik7CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0c1syXS5uYW1lLCAibWVtIik7
CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0c1syXS5raW5kLCAibWVtb3J5Iik7CisgICAgYXNzZXJ0
LmVxKG0uZXhwb3J0c1szXS5uYW1lLCAiZ2xvYiIpOworICAgIGFzc2VydC5lcShtLmV4cG9ydHNb
M10ua2luZCwgImdsb2JhbCIpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9N
b2R1bGUuaW1wb3J0cy5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMwYTE3MgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMKQEAgLTAsMCArMSwz
NiBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CitpbXBvcnQgKiBhcyBh
c3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3Nl
bWJseS5Nb2R1bGUucHJvdG90eXBlLmltcG9ydHModW5kZWZpbmVkLCAiIiksIFR5cGVFcnJvciwg
YFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuaW1wb3J0cyBjYWxsZWQgd2l0aCBub24gV2Vi
QXNzZW1ibHkuTW9kdWxlIHx0aGlzfCB2YWx1ZWApOworCit7CisgICAgY29uc3QgbSA9IG5ldyBX
ZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpLldlYkFzc2VtYmx5KCkuZ2V0KCkpOwor
ICAgIGFzc2VydC5pc0FycmF5KG0uaW1wb3J0cyk7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0cy5s
ZW5ndGgsIDApOworfQorCit7CisgICAgY29uc3QgbSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
CisgICAgICAgIChuZXcgQnVpbGRlcigpKQorICAgICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAg
ICAgICAgICAgLkltcG9ydCgpCisgICAgICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb29GdW5jdGlv
biIsICJiYXJGdW5jdGlvbiIsIHsgcGFyYW1zOiBbXSB9KQorICAgICAgICAgICAgICAgIC5UYWJs
ZSgiZm9vVGFibGUiLCAiYmFyVGFibGUiLCB7aW5pdGlhbDogMjAsIGVsZW1lbnQ6ICJhbnlmdW5j
In0pCisgICAgICAgICAgICAgICAgLk1lbW9yeSgiZm9vTWVtb3J5IiwgImJhck1lbW9yeSIsIHtp
bml0aWFsOiAyMH0pCisgICAgICAgICAgICAgICAgLkdsb2JhbCgpLkkzMigiZm9vR2xvYmFsIiwg
ImJhckdsb2JhbCIsICJpbW11dGFibGUiKS5FbmQoKQorICAgICAgICAgICAgLkVuZCgpCisgICAg
ICAgICAgICAuV2ViQXNzZW1ibHkoKS5nZXQoKSk7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0cy5s
ZW5ndGgsIDQpOworICAgIGFzc2VydC5lcShtLmltcG9ydHNbMF0ubW9kdWxlLCAiZm9vRnVuY3Rp
b24iKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzBdLm5hbWUsICJiYXJGdW5jdGlvbiIpOwor
ICAgIGFzc2VydC5lcShtLmltcG9ydHNbMF0ua2luZCwgImZ1bmN0aW9uIik7CisgICAgYXNzZXJ0
LmVxKG0uaW1wb3J0c1sxXS5tb2R1bGUsICJmb29UYWJsZSIpOworICAgIGFzc2VydC5lcShtLmlt
cG9ydHNbMV0ubmFtZSwgImJhclRhYmxlIik7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1sxXS5r
aW5kLCAidGFibGUiKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzJdLm1vZHVsZSwgImZvb01l
bW9yeSIpOworICAgIGFzc2VydC5lcShtLmltcG9ydHNbMl0ubmFtZSwgImJhck1lbW9yeSIpOwor
ICAgIGFzc2VydC5lcShtLmltcG9ydHNbMl0ua2luZCwgIm1lbW9yeSIpOworICAgIGFzc2VydC5l
cShtLmltcG9ydHNbM10ubW9kdWxlLCAiZm9vR2xvYmFsIik7CisgICAgYXNzZXJ0LmVxKG0uaW1w
b3J0c1szXS5uYW1lLCAiYmFyR2xvYmFsIik7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1szXS5r
aW5kLCAiZ2xvYmFsIik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwNzA5YWM3Li40
ZTMwZjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxNy0w
My0yNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViQXNz
ZW1ibHk6IGltcGxlbWVudCBNb2R1bGUgaW1wb3J0cy9leHBvcnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY5ODIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcyBkZWZpbmVkIGluOiBodHRwczovL2dp
dGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2NvbW1pdC8xOGNiYWNiOTBjZDM1ODRkZDVjOWFh
M2QzOTJlNGU1NWY2NmFmNmFiCisKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6bWFrZVN0cmluZyk6IHVzZSB1cHBlcmNhc2UgaW5zdGVhZCwgaXQgd2Fz
IG9ubHkgdXNlZAorICAgICAgICBmb3IgZGlhZ25vc3RpYyBidXQgaXMgbm93IHVzZWQgZm9yIHRo
ZSBleHBlY3RlZCBKUyBwcm9wZXJ0eSdzCisgICAgICAgIGNhcGl0YWxpemF0aW9uCisgICAgICAg
ICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OndlYkFzc2VtYmx5TW9kdWxlUHJvdG9JbXBvcnRzKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1i
bHlNb2R1bGVQcm90b0V4cG9ydHMpOgorCisyMDE3LTAzLTI3ICBKRiBCYXN0aWVuICA8amZiYXN0
aWVuQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWJBc3NlbWJseTogbWlzYyBtZW1vcnkgdGVzdGlu
ZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTM3
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAppbmRleCA5YTdhNjcyLi5i
NTk2NzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTIs
MTAgKzkyLDEwIEBAIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50PihFeHRlcm5hbEtpbmQ6
Okdsb2JhbCkgICA9PSAzLCAiV2FzbSBuZWVkcyBHbG9iYWwKIHN0YXRpYyBpbmxpbmUgY29uc3Qg
Y2hhciogbWFrZVN0cmluZyhFeHRlcm5hbEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQp
IHsKLSAgICBjYXNlIEV4dGVybmFsS2luZDo6RnVuY3Rpb246IHJldHVybiAiRnVuY3Rpb24iOwot
ICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpUYWJsZTogcmV0dXJuICJUYWJsZSI7Ci0gICAgY2FzZSBF
eHRlcm5hbEtpbmQ6Ok1lbW9yeTogcmV0dXJuICJNZW1vcnkiOwotICAgIGNhc2UgRXh0ZXJuYWxL
aW5kOjpHbG9iYWw6IHJldHVybiAiR2xvYmFsIjsKKyAgICBjYXNlIEV4dGVybmFsS2luZDo6RnVu
Y3Rpb246IHJldHVybiAiZnVuY3Rpb24iOworICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpUYWJsZTog
cmV0dXJuICJ0YWJsZSI7CisgICAgY2FzZSBFeHRlcm5hbEtpbmQ6Ok1lbW9yeTogcmV0dXJuICJt
ZW1vcnkiOworICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpHbG9iYWw6IHJldHVybiAiZ2xvYmFsIjsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gIj8i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCmluZGV4IDVkM2M2NDUuLjgyZmE0ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZVByb3RvdHlwZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzMsOSArMzMsMTIgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVy
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1
bGUuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJv
dG9DdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9JbXBvcnRzKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0V4
cG9ydHMoRXhlY1N0YXRlKik7CiB9CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVByb3Rv
dHlwZS5sdXQuaCIKQEAgLTQ3LDYgKzUwLDggQEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5
TW9kdWxlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG8KIC8q
IFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJv
dG90eXBlVGFibGVXZWJBc3NlbWJseU1vZHVsZQogIGN1c3RvbVNlY3Rpb25zIHdlYkFzc2VtYmx5
TW9kdWxlUHJvdG9DdXN0b21TZWN0aW9ucyBEb250RW51bXxGdW5jdGlvbiAxCisgaW1wb3J0cyAg
ICAgICAgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMgICAgICAgIERvbnRFbnVtfEFjY2Vz
c29yIDAKKyBleHBvcnRzICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZVByb3RvRXhwb3J0cyAgICAg
ICAgRG9udEVudW18QWNjZXNzb3IgMAogIEBlbmQKICAqLwogCkBAIC04NSw2ICs5MCw2MSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9DdXN0b21T
ZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZVBy
b3RvSW1wb3J0cyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Cisg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1dl
YkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1
bGUqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbW9kdWxlKQorICAgICAgICB0
aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmltcG9ydHMgY2FsbGVkIHdp
dGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWUiKSkpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisKKyAgICBjb25zdCBhdXRvJiBpbXBv
cnRzID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydHM7CisgICAgZm9yIChjb25z
dCBXYXNtOjpJbXBvcnQmIGkgOiBpbXBvcnRzKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmogPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOworICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAibW9kdWxlIiksIGpzU3RyaW5nKGV4ZWMsIGkubW9kdWxlLnN0cmlu
ZygpKSk7CisgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJuYW1lIiksIGpzU3RyaW5nKGV4ZWMsIGkuZmllbGQuc3RyaW5nKCkpKTsKKyAgICAg
ICAgb2JqLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtpbmQi
KSwganNTdHJpbmcoZXhlYywgU3RyaW5nKG1ha2VTdHJpbmcoaS5raW5kKSkpKTsKKyAgICAgICAg
cmVzdWx0LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVQ
cm90b0V4cG9ydHMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwor
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNX
ZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9k
dWxlKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIW1vZHVsZSkKKyAgICAgICAg
dGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5leHBvcnRzIGNhbGxlZCB3
aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgfHRoaXN8IHZhbHVlIikpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisKKyAgICBKU0FycmF5KiByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCisgICAgY29uc3QgYXV0byYgZXhw
b3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5leHBvcnRzOworICAgIGZvciAoY29u
c3QgV2FzbTo6RXhwb3J0JiBlIDogZXhwb3J0cykgeworICAgICAgICBKU09iamVjdCogb2JqID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZXhlYywgIm5hbWUiKSwganNTdHJpbmcoZXhlYywgZS5maWVsZC5zdHJpbmco
KSkpOworICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhl
eGVjLCAia2luZCIpLCBqc1N0cmluZyhleGVjLCBTdHJpbmcobWFrZVN0cmluZyhlLmtpbmQpKSkp
OworICAgICAgICByZXN1bHQtPnB1c2goZXhlYywgb2JqKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKK30KKwogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIFdlYkFzc2Vt
Ymx5TW9kdWxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogewogICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1i
bHlNb2R1bGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0tIAoyLjkuMwoK
</data>
<flag name="commit-queue"
          id="327028"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305615</attachid>
            <date>2017-03-28 11:27:07 -0700</date>
            <delta_ts>2017-03-28 11:41:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-module-imports-exports.patch</filename>
            <type>text/plain</type>
            <size>13307</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4NTdiMWI3ZGZjODc4NzdmZjgwYWM0MmU2YmYwZjNmZmFlODFkMzA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDI4IE1hciAyMDE3IDA5OjQwOjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gbW9kdWxl
LWltcG9ydHMtZXhwb3J0cwoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8IDE0ICsrKysKIEpTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmV4
cG9ydHMuanMgICAgICAgICAgICAgIHwgNDIgKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20vanMt
YXBpL01vZHVsZS5pbXBvcnRzLmpzICAgICAgICAgICAgICB8IDM3ICsrKysrKysrKysrCiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysr
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggICAgICAgICAgICB8IDEw
ICstLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwICAgICAgICAg
fCA3NCArKysrKysrKysrKysrKysrKysrKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRp
b25zKCspLCA5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9q
cy1hcGkvTW9kdWxlLmV4cG9ydHMuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20v
anMtYXBpL01vZHVsZS5pbXBvcnRzLmpzCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwZDc2YjliLi4yZTRmNDIxIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBA
CiAyMDE3LTAzLTI3ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAorICAgICAg
ICBXZWJBc3NlbWJseTogaW1wbGVtZW50IE1vZHVsZSBpbXBvcnRzL2V4cG9ydHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njk4MgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogd2FzbS9qcy1hcGkvTW9kdWxl
LmV4cG9ydHMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0LnRocm93cy5XZWJBc3NlbWJseS5N
b2R1bGUucHJvdG90eXBlLmV4cG9ydHMpOgorICAgICAgICAoYXNzZXJ0LmVxKToKKyAgICAgICAg
KiB3YXNtL2pzLWFwaS9Nb2R1bGUuaW1wb3J0cy5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQu
dGhyb3dzLldlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuaW1wb3J0cyk6CisgICAgICAgIChh
c3NlcnQuZXEpOgorCisyMDE3LTAzLTI3ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNv
bT4KKwogICAgICAgICBXZWJBc3NlbWJseTogbWlzYyBtZW1vcnkgdGVzdGluZwogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTM3CiAKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmV4cG9ydHMuanMgYi9KU1Rlc3RzL3dhc20v
anMtYXBpL01vZHVsZS5leHBvcnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjUxNDA0N2IKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL01vZHVs
ZS5leHBvcnRzLmpzCkBAIC0wLDAgKzEsNDIgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1
aWxkZXIuanMnOworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2Fz
c2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5leHBvcnRzKHVu
ZGVmaW5lZCwgIiIpLCBUeXBlRXJyb3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmV4
cG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWVgKTsK
KworeworICAgIGNvbnN0IG0gPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigp
KS5XZWJBc3NlbWJseSgpLmdldCgpKTsKKyAgICBhc3NlcnQuaXNBcnJheShtLmV4cG9ydHMpOwor
ICAgIGFzc2VydC5lcShtLmV4cG9ydHMubGVuZ3RoLCAwKTsKKyAgICBhc3NlcnQudHJ1dGh5KG0u
ZXhwb3J0cyAhPT0gbS5leHBvcnRzKTsKK30KKworeworICAgIGNvbnN0IG0gPSBuZXcgV2ViQXNz
ZW1ibHkuTW9kdWxlKAorICAgICAgICAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAgIC5UeXBl
KCkuRW5kKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgICAuVGFi
bGUoKQorICAgICAgICAgICAgICAgIC5UYWJsZSh7aW5pdGlhbDogMjAsIG1heGltdW06IDMwLCBl
bGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgICAgICAuTWVt
b3J5KCkuSW5pdGlhbE1heFBhZ2VzKDEsIDEpLkVuZCgpCisgICAgICAgICAgICAuR2xvYmFsKCku
STMyKDQyLCAiaW1tdXRhYmxlIikuRW5kKCkKKyAgICAgICAgICAgIC5FeHBvcnQoKQorICAgICAg
ICAgICAgICAgIC5GdW5jdGlvbigiZnVuYyIpCisgICAgICAgICAgICAgICAgLlRhYmxlKCJ0YWIi
LCAwKQorICAgICAgICAgICAgICAgIC5NZW1vcnkoIm1lbSIsIDApCisgICAgICAgICAgICAgICAg
Lkdsb2JhbCgiZ2xvYiIsIDApCisgICAgICAgICAgICAuRW5kKCkKKyAgICAgICAgICAgIC5Db2Rl
KCkKKyAgICAgICAgICAgICAgICAuRnVuY3Rpb24oImZ1bmMiLCB7IHBhcmFtczogW10gfSkuUmV0
dXJuKCkuRW5kKCkKKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgICAgLldlYkFzc2VtYmx5
KCkuZ2V0KCkpOworICAgIGFzc2VydC5lcShtLmV4cG9ydHMubGVuZ3RoLCA0KTsKKyAgICBhc3Nl
cnQuZXEobS5leHBvcnRzWzBdLm5hbWUsICJmdW5jIik7CisgICAgYXNzZXJ0LmVxKG0uZXhwb3J0
c1swXS5raW5kLCAiZnVuY3Rpb24iKTsKKyAgICBhc3NlcnQuZXEobS5leHBvcnRzWzFdLm5hbWUs
ICJ0YWIiKTsKKyAgICBhc3NlcnQuZXEobS5leHBvcnRzWzFdLmtpbmQsICJ0YWJsZSIpOworICAg
IGFzc2VydC5lcShtLmV4cG9ydHNbMl0ubmFtZSwgIm1lbSIpOworICAgIGFzc2VydC5lcShtLmV4
cG9ydHNbMl0ua2luZCwgIm1lbW9yeSIpOworICAgIGFzc2VydC5lcShtLmV4cG9ydHNbM10ubmFt
ZSwgImdsb2IiKTsKKyAgICBhc3NlcnQuZXEobS5leHBvcnRzWzNdLmtpbmQsICJnbG9iYWwiKTsK
K30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMgYi9K
U1Rlc3RzL3dhc20vanMtYXBpL01vZHVsZS5pbXBvcnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjI3MzUxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20v
anMtYXBpL01vZHVsZS5pbXBvcnRzLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2ltcG9ydCBCdWlsZGVy
IGZyb20gJy4uL0J1aWxkZXIuanMnOworaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2Vy
dC5qcyc7CisKK2Fzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlw
ZS5pbXBvcnRzKHVuZGVmaW5lZCwgIiIpLCBUeXBlRXJyb3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUu
cHJvdG90eXBlLmltcG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhp
c3wgdmFsdWVgKTsKKworeworICAgIGNvbnN0IG0gPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChu
ZXcgQnVpbGRlcigpKS5XZWJBc3NlbWJseSgpLmdldCgpKTsKKyAgICBhc3NlcnQuaXNBcnJheSht
LmltcG9ydHMpOworICAgIGFzc2VydC5lcShtLmltcG9ydHMubGVuZ3RoLCAwKTsKKyAgICBhc3Nl
cnQudHJ1dGh5KG0uZXhwb3J0cyAhPT0gbS5leHBvcnRzKTsKK30KKworeworICAgIGNvbnN0IG0g
PSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKAorICAgICAgICAobmV3IEJ1aWxkZXIoKSkKKyAgICAg
ICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAg
ICAgIC5GdW5jdGlvbigiZm9vRnVuY3Rpb24iLCAiYmFyRnVuY3Rpb24iLCB7IHBhcmFtczogW10g
fSkKKyAgICAgICAgICAgICAgICAuVGFibGUoImZvb1RhYmxlIiwgImJhclRhYmxlIiwge2luaXRp
YWw6IDIwLCBlbGVtZW50OiAiYW55ZnVuYyJ9KQorICAgICAgICAgICAgICAgIC5NZW1vcnkoImZv
b01lbW9yeSIsICJiYXJNZW1vcnkiLCB7aW5pdGlhbDogMjB9KQorICAgICAgICAgICAgICAgIC5H
bG9iYWwoKS5JMzIoImZvb0dsb2JhbCIsICJiYXJHbG9iYWwiLCAiaW1tdXRhYmxlIikuRW5kKCkK
KyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAgICAgLldlYkFzc2VtYmx5KCkuZ2V0KCkpOwor
ICAgIGFzc2VydC5lcShtLmltcG9ydHMubGVuZ3RoLCA0KTsKKyAgICBhc3NlcnQuZXEobS5pbXBv
cnRzWzBdLm1vZHVsZSwgImZvb0Z1bmN0aW9uIik7CisgICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1sw
XS5uYW1lLCAiYmFyRnVuY3Rpb24iKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzBdLmtpbmQs
ICJmdW5jdGlvbiIpOworICAgIGFzc2VydC5lcShtLmltcG9ydHNbMV0ubW9kdWxlLCAiZm9vVGFi
bGUiKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzFdLm5hbWUsICJiYXJUYWJsZSIpOworICAg
IGFzc2VydC5lcShtLmltcG9ydHNbMV0ua2luZCwgInRhYmxlIik7CisgICAgYXNzZXJ0LmVxKG0u
aW1wb3J0c1syXS5tb2R1bGUsICJmb29NZW1vcnkiKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRz
WzJdLm5hbWUsICJiYXJNZW1vcnkiKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzJdLmtpbmQs
ICJtZW1vcnkiKTsKKyAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzNdLm1vZHVsZSwgImZvb0dsb2Jh
bCIpOworICAgIGFzc2VydC5lcShtLmltcG9ydHNbM10ubmFtZSwgImJhckdsb2JhbCIpOworICAg
IGFzc2VydC5lcShtLmltcG9ydHNbM10ua2luZCwgImdsb2JhbCIpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKaW5kZXggNTNhZDQ0Yi4uNjVhZWVlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjIgQEAKIDIwMTctMDMtMjcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgogCisgICAgICAgIFdlYkFzc2VtYmx5OiBpbXBsZW1lbnQgTW9kdWxlIGltcG9ydHMv
ZXhwb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY2OTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgQXMg
ZGVmaW5lZCBpbjogaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9jb21taXQv
MThjYmFjYjkwY2QzNTg0ZGQ1YzlhYTNkMzkyZTRlNTVmNjZhZjZhYgorCisgICAgICAgICogd2Fz
bS9XYXNtRm9ybWF0Lmg6CisgICAgICAgIChKU0M6Oldhc206Om1ha2VTdHJpbmcpOiB1c2UgdXBw
ZXJjYXNlIGluc3RlYWQsIGl0IHdhcyBvbmx5IHVzZWQKKyAgICAgICAgZm9yIGRpYWdub3N0aWMg
YnV0IGlzIG5vdyB1c2VkIGZvciB0aGUgZXhwZWN0ZWQgSlMgcHJvcGVydHkncworICAgICAgICBj
YXBpdGFsaXphdGlvbgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZVByb3RvSW1wb3J0cyk6Cisg
ICAgICAgIChKU0M6OndlYkFzc2VtYmx5TW9kdWxlUHJvdG9FeHBvcnRzKToKKworMjAxNy0wMy0y
NyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKICAgICAgICAgV2ViQXNzZW1i
bHk6IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2suaCBiZWxvbmdzIGluIEphdmFTY3JpcHRDb3JlL3dh
c20vanMgbm90IEphdmFTY3JpcHRDb3JlL3dhc20KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE2MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRm9ybWF0LmgKaW5kZXggOWE3YTY3Mi4uYjU5Njc2YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkyLDEwICs5MiwxMCBAQCBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PGludD4oRXh0ZXJuYWxLaW5kOjpHbG9iYWwpICAgPT0gMywgIldhc20gbmVlZHMg
R2xvYmFsCiBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoRXh0ZXJuYWxLaW5k
IGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBFeHRlcm5hbEtpbmQ6OkZ1
bmN0aW9uOiByZXR1cm4gIkZ1bmN0aW9uIjsKLSAgICBjYXNlIEV4dGVybmFsS2luZDo6VGFibGU6
IHJldHVybiAiVGFibGUiOwotICAgIGNhc2UgRXh0ZXJuYWxLaW5kOjpNZW1vcnk6IHJldHVybiAi
TWVtb3J5IjsKLSAgICBjYXNlIEV4dGVybmFsS2luZDo6R2xvYmFsOiByZXR1cm4gIkdsb2JhbCI7
CisgICAgY2FzZSBFeHRlcm5hbEtpbmQ6OkZ1bmN0aW9uOiByZXR1cm4gImZ1bmN0aW9uIjsKKyAg
ICBjYXNlIEV4dGVybmFsS2luZDo6VGFibGU6IHJldHVybiAidGFibGUiOworICAgIGNhc2UgRXh0
ZXJuYWxLaW5kOjpNZW1vcnk6IHJldHVybiAibWVtb3J5IjsKKyAgICBjYXNlIEV4dGVybmFsS2lu
ZDo6R2xvYmFsOiByZXR1cm4gImdsb2JhbCI7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuICI/IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcAppbmRl
eCA1ZDNjNjQ1Li5hYTJmMzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDkgKzMzLDEy
IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3Ry
dWN0b3IuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZVByb3RvQ3VzdG9tU2VjdGlvbnMoRXhlY1N0YXRlKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZVBy
b3RvSW1wb3J0cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9FeHBvcnRzKEV4ZWNTdGF0ZSopOwogfQogCiAjaW5j
bHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0LmgiCkBAIC00Nyw2ICs1MCw4IEBA
IGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6c19pbmZvID0geyAi
V2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvCiAvKiBTb3VyY2UgZm9yIFdlYkFzc2VtYmx5TW9kdWxl
UHJvdG90eXBlLmx1dC5oCiAgQGJlZ2luIHByb3RvdHlwZVRhYmxlV2ViQXNzZW1ibHlNb2R1bGUK
ICBjdXN0b21TZWN0aW9ucyB3ZWJBc3NlbWJseU1vZHVsZVByb3RvQ3VzdG9tU2VjdGlvbnMgRG9u
dEVudW18RnVuY3Rpb24gMQorIGltcG9ydHMgICAgICAgIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9J
bXBvcnRzICAgICAgICBEb250RW51bXxBY2Nlc3NvciAwCisgZXhwb3J0cyAgICAgICAgd2ViQXNz
ZW1ibHlNb2R1bGVQcm90b0V4cG9ydHMgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yIDAKICBAZW5k
CiAgKi8KIApAQCAtNTgsOCArNjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5TW9kdWxlUHJvdG9DdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZQogCiAgICAg
SlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5
TW9kdWxlKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIW1vZHVsZSkKLSAgICAg
ICAgdGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5jdXN0b21TZWN0aW9u
cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIHx0aGlzfCB2YWx1ZSIpKSk7Ci0g
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUu
Y3VzdG9tU2VjdGlvbnMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wg
dmFsdWUiKSkpKTsKIAogICAgIGNvbnN0IFN0cmluZyBzZWN0aW9uTmFtZVN0cmluZyA9IGV4ZWMt
PmFyZ3VtZW50KDApLmdldFN0cmluZyhleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CkBAIC03Miw3ICs3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0N1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0ZSogZXhl
CiAgICAgICAgIGlmIChzZWN0aW9uLm5hbWUgPT0gc2VjdGlvbk5hbWVTdHJpbmcpIHsKICAgICAg
ICAgICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShzZWN0aW9uLnBheWxv
YWQuZGF0YSgpLCBzZWN0aW9uLnBheWxvYWQuc2l6ZSgpKTsKICAgICAgICAgICAgIGlmICghYnVm
ZmVyKQotICAgICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNy
ZWF0ZU91dE9mTWVtb3J5RXJyb3IoZXhlYykpOworICAgICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlT3V0T2ZN
ZW1vcnlFcnJvcihleGVjKSkpOwogCiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGFycmF5QnVmZmVy
U3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhl
YywgSlNWYWx1ZSgpLCBnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3RydWN0dXJlKEFycmF5QnVm
ZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKQEAgLTg1LDYgKzg5LDY4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0N1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0
ZSogZXhlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9JbXBvcnRzKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUq
IG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5pbXBvcnRzIGNh
bGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgfHRoaXN8IHZhbHVlIikpKSk7CisKKyAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGds
b2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
CisgICAgY29uc3QgYXV0byYgaW1wb3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5p
bXBvcnRzOworICAgIGlmIChpbXBvcnRzLnNpemUoKSkgeworICAgICAgICBJZGVudGlmaWVyIG1v
ZHVsZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm1vZHVsZSIpOworICAgICAgICBJ
ZGVudGlmaWVyIG5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJuYW1lIik7Cisg
ICAgICAgIElkZW50aWZpZXIga2luZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtp
bmQiKTsKKyAgICAgICAgZm9yIChjb25zdCBXYXNtOjpJbXBvcnQmIGltcCA6IGltcG9ydHMpIHsK
KyAgICAgICAgICAgIEpTT2JqZWN0KiBvYmogPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsK
KyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAg
ICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBtb2R1bGUsIGpzU3RyaW5nKGV4ZWMsIGltcC5tb2R1
bGUuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBuYW1lLCBqc1N0
cmluZyhleGVjLCBpbXAuZmllbGQuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG9iai0+cHV0RGly
ZWN0KHZtLCBraW5kLCBqc1N0cmluZyhleGVjLCBTdHJpbmcobWFrZVN0cmluZyhpbXAua2luZCkp
KSk7CisgICAgICAgICAgICByZXN1bHQtPnB1c2goZXhlYywgb2JqKTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZVByb3RvRXhwb3J0cyhFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvKiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUg
PSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghbW9kdWxlKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIldlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuZXhwb3J0cyBjYWxsZWQgd2l0
aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIHx0aGlzfCB2YWx1ZSIpKSkpOworCisgICAgSlNBcnJh
eSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKworICAgIGNv
bnN0IGF1dG8mIGV4cG9ydHMgPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuZXhwb3J0czsK
KyAgICBpZiAoZXhwb3J0cy5zaXplKCkpIHsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibmFtZSIpOworICAgICAgICBJZGVudGlmaWVyIGtp
bmQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJraW5kIik7CisgICAgICAgIGZvciAo
Y29uc3QgV2FzbTo6RXhwb3J0JiBleHAgOiBleHBvcnRzKSB7CisgICAgICAgICAgICBKU09iamVj
dCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgICAgICBvYmotPnB1dERpcmVj
dCh2bSwgbmFtZSwganNTdHJpbmcoZXhlYywgZXhwLmZpZWxkLnN0cmluZygpKSk7CisgICAgICAg
ICAgICBvYmotPnB1dERpcmVjdCh2bSwga2luZCwganNTdHJpbmcoZXhlYywgU3RyaW5nKG1ha2VT
dHJpbmcoZXhwLmtpbmQpKSkpOworICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIG9iaik7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisK
IFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKiBXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZTo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
ICAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJs
eU1vZHVsZVByb3RvdHlwZT4odm0uaGVhcCkpIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlKHZt
LCBzdHJ1Y3R1cmUpOwotLSAKMi4xMC4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>