<?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>78496</bug_id>
          
          <creation_ts>2012-02-13 07:10:41 -0800</creation_ts>
          <short_desc>Web Inspector: [heap snapshot] It could be useful to have access to the selected heap object from the console.</short_desc>
          <delta_ts>2012-02-16 06:24:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>78411</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>pnormand</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>555244</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-13 07:10:41 -0800</bug_when>
    <thetext>The scenario:
0) make a heap snapshot.
1) select an object
2) open console
3) use it via $$0 property of DOMWindow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555246</commentid>
    <comment_count>1</comment_count>
      <attachid>126768</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-13 07:26:31 -0800</bug_when>
    <thetext>Created attachment 126768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555256</commentid>
    <comment_count>2</comment_count>
      <attachid>126768</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-13 07:42:46 -0800</bug_when>
    <thetext>Comment on attachment 126768
Patch

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

&gt; Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp:91
&gt; +    ScriptObject object = host-&gt;inspectedObject(args[0]-&gt;ToInt32()-&gt;Value());

You should check for a null object and return a error/undefined here.

&gt; Source/WebCore/bindings/v8/custom/V8InjectedScriptHostCustom.cpp:92
&gt; +    return object.v8Object();

The object may be from a context different from that where inspectedObjectCallback is called, in that case we should return undefined here to avoid object leaks between isolated contexts.

&gt; Source/WebCore/inspector/InjectedScriptHost.cpp:152
&gt; +    if (heapObject.hasNoValue())

No need to check this here.

&gt; Source/WebCore/inspector/InjectedScriptSource.js:582
&gt; +        this.__defineGetter__(&quot;$$&quot; + i, bind(commandLineAPIImpl, commandLineAPIImpl._inspectedObject, i));

Let&apos;s use existing $* mechanism for addressing recently selected objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555280</commentid>
    <comment_count>3</comment_count>
      <attachid>126768</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 08:27:16 -0800</bug_when>
    <thetext>Comment on attachment 126768
Patch

Attachment 126768 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11506824

New failing tests:
inspector/protocol/console-agent.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557002</commentid>
    <comment_count>4</comment_count>
      <attachid>127128</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-15 00:56:56 -0800</bug_when>
    <thetext>Created attachment 127128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557006</commentid>
    <comment_count>5</comment_count>
      <attachid>127128</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-15 01:01:28 -0800</bug_when>
    <thetext>Comment on attachment 127128
Patch

Attachment 127128 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11525317</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557022</commentid>
    <comment_count>6</comment_count>
      <attachid>127128</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-15 01:16:36 -0800</bug_when>
    <thetext>Comment on attachment 127128
Patch

Attachment 127128 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11516611</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557029</commentid>
    <comment_count>7</comment_count>
      <attachid>127128</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-15 01:21:50 -0800</bug_when>
    <thetext>Comment on attachment 127128
Patch

Attachment 127128 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11515648</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557066</commentid>
    <comment_count>8</comment_count>
      <attachid>127128</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 02:03:30 -0800</bug_when>
    <thetext>Comment on attachment 127128
Patch

Attachment 127128 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11522655

New failing tests:
inspector/protocol/console-agent.html
inspector/extensions/extensions-sidebar.html
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557154</commentid>
    <comment_count>9</comment_count>
      <attachid>127128</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-15 04:22:00 -0800</bug_when>
    <thetext>Comment on attachment 127128
Patch

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

&gt; Source/WebCore/inspector/InjectedScriptSource.js:690
&gt; +        console.log(&quot; _inspectedObject: &quot; + num);

Remove this.

&gt; Source/WebCore/inspector/Inspector.json:532
&gt; +                &quot;name&quot;: &quot;addInspectedObject&quot;,

The method name is to generic, it should be clear that the object id is from heap profile.

&gt; Source/WebCore/inspector/InspectorConsoleAgent.cpp:286
&gt; +    InspectableHeapObject(int heapObjectId) : m_heapObjectId(heapObjectId) { }

Should be marked explicit.

&gt; Source/WebCore/inspector/InspectorConsoleAgent.cpp:289
&gt; +        return ScriptProfiler::objectByHeapObjectId(m_heapObjectId);

What if the object is from a different ScriptState?

&gt; Source/WebCore/inspector/PageConsoleAgent.cpp:68
&gt; +    InspectableNode(Node* node) : m_node(node) { }

Missing explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557449</commentid>
    <comment_count>10</comment_count>
      <attachid>127212</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-15 12:16:29 -0800</bug_when>
    <thetext>Created attachment 127212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557452</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-15 12:19:03 -0800</bug_when>
    <thetext>patch for bots
comments were addressed except about ScriptState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558126</commentid>
    <comment_count>12</comment_count>
      <attachid>127212</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-02-16 05:55:20 -0800</bug_when>
    <thetext>Comment on attachment 127212
Patch

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

&gt; Source/WebCore/ChangeLog:51
&gt; +2012-02-15  Ilya Tikhonovsky  &lt;loislo@chromium.org&gt;

Please remove duplicate entry.

&gt; Source/WebCore/inspector/InspectorConsoleAgent.cpp:289
&gt; +        return ScriptProfiler::objectByHeapObjectId(m_heapObjectId);

I think we need to reject objects from a different ScriptState here and when wrapping DOM Nodes. This can be done in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558145</commentid>
    <comment_count>13</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-02-16 06:24:10 -0800</bug_when>
    <thetext>Committed r107929: &lt;http://trac.webkit.org/changeset/107929&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126768</attachid>
            <date>2012-02-13 07:26:31 -0800</date>
            <delta_ts>2012-02-15 00:56:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78496-20120213192629.patch</filename>
            <type>text/plain</type>
            <size>12417</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ3ZGU1OTViOWRlMzMw
YTdjMjU3ZWRhYjc3NDM3ZGRmNDllNzZkZC4uNTdhNmRhZTBhZjE3YTk3NjllNDM5ODRkNWU5YmM4
OTdjNjkyMjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTEzICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbaGVhcCBzbmFwc2hvdF0gSXQgY291bGQgYmUgdXNlZnVsIHRvIGhhdmUgYWNjZXNzIHRv
IHRoZSBzZWxlY3RlZCBoZWFwIG9iamVjdCBmcm9tIHRoZSBjb25zb2xlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnNwZWN0ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3RDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6YWRkSW5z
cGVjdGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckluc3BlY3RlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0SG9zdCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGw6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFn
ZW50OjphZGRJbnNwZWN0ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ29u
c29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5f
c2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hv
dFZpZXcucHJvdG90eXBlLl9pbnNwZWN0ZWRPYmplY3RDaGFuZ2VkKToKKwogMjAxMi0wMi0xMyAg
Q2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIE1vdmUgYXR0cmlidXRlIHN0b3JhZ2UgZnJvbSBOYW1lZE5vZGVNYXAg
dG8gRWxlbWVudEF0dHJpYnV0ZURhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCA3M2NiMmZhN2U3
OGU0YmU5MjZmMGJmMmY5MTc5N2QzNjVhZWFkMjE4Li5jNThlMjg0OWZhYjBmYTIxYWYwNTA0NDdk
ZDU2ZDBmNWM0MTE4ZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC04OSw2ICs4OSwxMSBAQCBK
U1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKEV4ZWNTdGF0ZSogZXhl
YykKICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgbm9kZSk7CiB9CiAKK0pT
VmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwCmluZGV4IDNhYTQ0NGM5ZGUwOGQzOWEyNjA3YTY4NTllMjI5M2VkNzM2OTQxOTgu
LmY0NTY2ZWY5MDI2ZWEwZjc0ZTVmNDFmZjY5NTIxMzhkODZhY2U5NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRT
Y3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAtODEsNiArODEsMTcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3UKICAgICByZXR1cm4gdG9WOChub2RlKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3RDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0Lmlu
c3BlY3RlZE9iamVjdCgpIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0g
VjhJbmplY3RlZFNjcmlwdEhvc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIFNjcmlw
dE9iamVjdCBvYmplY3QgPSBob3N0LT5pbnNwZWN0ZWRPYmplY3QoYXJnc1swXS0+VG9JbnQzMigp
LT5WYWx1ZSgpKTsKKyAgICByZXR1cm4gb2JqZWN0LnY4T2JqZWN0KCk7Cit9CisKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5h
bWVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIElOQ19TVEFUUygi
SW5qZWN0ZWRTY3JpcHRIb3N0LmludGVybmFsQ29uc3RydWN0b3JOYW1lKCkiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggNDdkNDA4
YTU3N2RmMTk3NGViZjBmYzg3MTExMTg2NDJmODQ0NzYyNi4uNGYwYjEzMjVmZjA4N2E3ZWQ3ZTlh
MzcyZTVkOWMyZDY1ZjllNTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlBh
c3RlYm9hcmQuaCIKKyNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2UuaCIKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkBAIC0xMjksNiArMTMwLDMxIEBAIE5v
ZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkTm9kZSh1bnNpZ25lZCBpbnQgbnVtKQog
ICAgIHJldHVybiAwOwogfQogCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6YWRkSW5zcGVjdGVk
T2JqZWN0KGludCBvYmplY3RJZCkKK3sKKyAgICBtX2luc3BlY3RlZE9iamVjdHMucHJlcGVuZChv
YmplY3RJZCk7CisgICAgd2hpbGUgKG1faW5zcGVjdGVkT2JqZWN0cy5zaXplKCkgPiA1KQorICAg
ICAgICBtX2luc3BlY3RlZE9iamVjdHMucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIEluamVjdGVk
U2NyaXB0SG9zdDo6Y2xlYXJJbnNwZWN0ZWRPYmplY3RzKCkKK3sKKyAgICBtX2luc3BlY3RlZE9i
amVjdHMuY2xlYXIoKTsKK30KKworU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdGVkT2JqZWN0KHVuc2lnbmVkIGludCBudW0pCit7CisgICAgaWYgKG51bSA+PSBtX2luc3Bl
Y3RlZE9iamVjdHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CisKKyAg
ICBpbnQgb2JqZWN0SWQgPSBtX2luc3BlY3RlZE9iamVjdHNbbnVtXTsKKyAgICBTY3JpcHRPYmpl
Y3QgaGVhcE9iamVjdCA9IFNjcmlwdFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChvYmpl
Y3RJZCk7CisgICAgaWYgKGhlYXBPYmplY3QuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4g
U2NyaXB0T2JqZWN0KCk7CisKKyAgICByZXR1cm4gaGVhcE9iamVjdDsKK30KKwogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCiBpbnQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFzZUlkSW1wbChE
YXRhYmFzZSogZGF0YWJhc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmgKaW5kZXggMmRiNDY2YTY5NDM1ZWVlNWFkZTc5ZGNmOGQyMTYyYTZlOGE2
YWU5OC4uNjdiYTJlZjM1MmIwZmU2NmUwN2UxZWZkNGU1OTI3NTJjNTk0MmYyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtODAsMTEgKzgw
LDE1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShOb2RlKik7CiAgICAg
dm9pZCBjbGVhckluc3BlY3RlZE5vZGVzKCk7CisgICAgTm9kZSogaW5zcGVjdGVkTm9kZSh1bnNp
Z25lZCBpbnQgbnVtKTsKKworICAgIHZvaWQgYWRkSW5zcGVjdGVkT2JqZWN0KGludCBvYmplY3RJ
ZCk7CisgICAgdm9pZCBjbGVhckluc3BlY3RlZE9iamVjdHMoKTsKKyAgICBTY3JpcHRPYmplY3Qg
aW5zcGVjdGVkT2JqZWN0KHVuc2lnbmVkIGludCBudW0pOwogCiAgICAgdm9pZCBpbnNwZWN0SW1w
bChQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKICAgICB2b2lkIGNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7
CiAgICAgdm9pZCBjb3B5VGV4dChjb25zdCBTdHJpbmcmIHRleHQpOwotICAgIE5vZGUqIGluc3Bl
Y3RlZE5vZGUodW5zaWduZWQgaW50IG51bSk7CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAg
ICBpbnQgZGF0YWJhc2VJZEltcGwoRGF0YWJhc2UqKTsKICNlbmRpZgpAQCAtMTA2LDYgKzExMCw3
IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VB
Z2VudDsKICAgICBsb25nIG1fbGFzdFdvcmtlcklkOwogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiBtX2luc3BlY3RlZE5vZGVzOworICAgIFZlY3RvcjxpbnQ+IG1faW5zcGVjdGVkT2JqZWN0czsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKaW5kZXggYjMwYTgzNTg3YTFjNDlmZGJhNTMxMDEx
NDc1ODgwYmQ0YTQ3MjFiMy4uOWU3YjdjNzZiOWU3Y2VmM2E4YzhiMTEzNmMzZTMzOWY2ZGQ0ZDEw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5p
ZGwKQEAgLTM5LDYgKzM5LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIGNvcHlUZXh0
KGluIERPTVN0cmluZyB0ZXh0KTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBpbnNwZWN0KGluIERP
TU9iamVjdCBvYmplY3RJZCwgaW4gRE9NT2JqZWN0IGhpbnRzKTsKICAgICAgICAgW0N1c3RvbV0g
RE9NT2JqZWN0IGluc3BlY3RlZE5vZGUoaW4gaW50IG51bSk7CisgICAgICAgIFtDdXN0b21dIERP
TU9iamVjdCBpbnNwZWN0ZWRPYmplY3QoaW4gaW50IG51bSk7CiAgICAgICAgIFtDdXN0b21dIERP
TU9iamVjdCBpbnRlcm5hbENvbnN0cnVjdG9yTmFtZShpbiBET01PYmplY3Qgb2JqZWN0KTsKICAg
ICAgICAgW0N1c3RvbV0gYm9vbGVhbiBpc0hUTUxBbGxDb2xsZWN0aW9uKGluIERPTU9iamVjdCBv
YmplY3QpOwogICAgICAgICBbQ3VzdG9tXSBET01TdHJpbmcgdHlwZShpbiBET01PYmplY3Qgb2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcwppbmRleCBiZTViOTlmOTQ2Y2Y5ZWNlNmVjY2FjZDhjODk3OTBjOTZkMmU3NmI0Li5hYTFl
ZTJjYzY3MzlhNjg2NTdkOTUwZWI1NzA2ZDZiZWRkNzZlM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC01NzMsNiArNTczLDE0
IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNvbW1hbmRMaW5lQVBJSW1wbCwgY2FsbEZyYW1l
KQogCiAgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIgKyBpLCBiaW5kKGNvbW1hbmRM
aW5lQVBJSW1wbCwgY29tbWFuZExpbmVBUElJbXBsLl9pbnNwZWN0ZWROb2RlLCBpKSk7CiAgICAg
fQorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgdmFyIG1lbWJl
ciA9ICIkJCIgKyBpOworICAgICAgICBpZiAobWVtYmVyIGluIGluc3BlY3RlZFdpbmRvdyB8fCBp
blNjb3BlVmFyaWFibGVzKG1lbWJlcikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICB0aGlzLl9fZGVmaW5lR2V0dGVyX18oIiQkIiArIGksIGJpbmQoY29tbWFuZExpbmVBUElJbXBs
LCBjb21tYW5kTGluZUFQSUltcGwuX2luc3BlY3RlZE9iamVjdCwgaSkpOworICAgIH0KIH0KIAog
Q29tbWFuZExpbmVBUEkubWVtYmVyc18gPSBbCkBAIC02OTAsNiArNjk4LDExIEBAIENvbW1hbmRM
aW5lQVBJSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhv
c3QuaW5zcGVjdGVkTm9kZShudW0pOwogICAgIH0sCiAKKyAgICBfaW5zcGVjdGVkT2JqZWN0OiBm
dW5jdGlvbihudW0pCisgICAgeworICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0Lmlu
c3BlY3RlZE9iamVjdChudW0pOworICAgIH0sCisKICAgICBfbm9ybWFsaXplRXZlbnRUeXBlczog
ZnVuY3Rpb24odHlwZXMpCiAgICAgewogICAgICAgICBpZiAodHlwZW9mIHR5cGVzID09PSAidW5k
ZWZpbmVkIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA0YWYy
YjQ5ZThlZTliZjBkZjBhYWE5ZTZjZmU4YzkzMGRlMTYxZTM1Li45NmM2NDNmZWQ0NWMyNDRjYWNh
NTQwN2NlN2U5MjkyZmYzZmQ3MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCkBAIC01MjUsNiArNTI1LDEyIEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBjb25zb2xlIHRvIHJlZmVyIHRvIHRoZSBu
b2RlIHdpdGggZ2l2ZW4gaWQgdmlhICR4IChzZWUgQ29tbWFuZCBMaW5lIEFQSSBmb3IgbW9yZSBk
ZXRhaWxzICR4IGZ1bmN0aW9ucykuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJh
ZGRJbnNwZWN0ZWRPYmplY3QiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhlYXBPYmplY3RJZCIsICJ0eXBlIjogImludGVn
ZXIiIH0KKwkJXQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjog
WwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcAppbmRleCA0ZjdkYjBjNmE3NzRiNjNkNjg3MzRkNWRlNTBmZTNlZmMwYzU3NTJhLi40YWY2
MTA1MzM4MzJjZTc4Zjk0ZDYyNDA1ZmU3MzliZTQ5YTQ4YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtMjc5LDYgKzI3
OSwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFz
c093blB0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZQogICAgIH0KIH0KIAordm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmFkZEluc3BlY3RlZE9iamVjdChFcnJvclN0cmluZyosIGludCBpbnNw
ZWN0ZWRIZWFwT2JqZWN0SWQpCit7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVj
dGVkU2NyaXB0SG9zdCgpLT5hZGRJbnNwZWN0ZWRPYmplY3QoaW5zcGVjdGVkSGVhcE9iamVjdElk
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaAppbmRleCAzMDI0MjlhNDU0Y2MxZTQ1ZjRhYjBkOWQwZTBhY2M4MDk2OGFlZTNhLi5jODY2
ZDRmZGVkMDJhNzM0M2ZkODUxMGExZDNiYzQ0ZWI1ZTQ4OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC04NSw2ICs4NSw3IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBzZXRNb25pdG9yaW5nWEhSRW5hYmxl
ZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCk7CiAgICAgdmlydHVhbCB2b2lkIGFkZEluc3Bl
Y3RlZE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGFkZEluc3BlY3RlZE9iamVjdChFcnJvclN0cmluZyosIGludCBpbnNwZWN0ZWRIZWFwT2JqZWN0
SWQpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRy
PENvbnNvbGVNZXNzYWdlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggODc3NDI3NmNiMjMzYjFlN2VjMzczNDRhNThm
NGJjOGNkNGYwYzVjYS4uMDhlOWVhNjNhM2Q3NjUxYzE3M2MwZTM5YmM1ODE0NTcwM2NiN2Y2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcApAQCAtMzQsNiArMzQsNyBAQAogCiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJv
bnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZS5oIgpAQCAtMjY0LDYgKzI2NSw3IEBA
IHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRTdGF0ZSgpCiAgICAgbV9uZXh0VXNl
ckluaXRpYXRlZFByb2ZpbGVOdW1iZXIgPSAxOwogICAgIG1fbmV4dFVzZXJJbml0aWF0ZWRIZWFw
U25hcHNob3ROdW1iZXIgPSAxOwogICAgIHJlc2V0RnJvbnRlbmRQcm9maWxlcygpOworICAgIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+Y2xlYXJJbnNwZWN0
ZWRPYmplY3RzKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRGcm9u
dGVuZFByb2ZpbGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCmluZGV4IDRhNGI2MDc0YmVhOTZmYzMy
NzE3MzQxMjgwNzA5NjFmZjU5ZWI0MzcuLmQ5MzNlNWU1MDJlYTI1ZTQ3YjY0YmQwM2Y3MTZiZDVl
YWMzYzlkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwpAQCAtNTAxLDYgKzUwMSw3IEBAIFdlYklu
c3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90VmlldyA9IGZ1bmN0aW9uKHBhcmVudCwgcHJvZmlsZSkK
ICAgICB0aGlzLnJldGFpbm1lbnREYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBz
aG90UmV0YWlubWVudERhdGFHcmlkKCk7CiAgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlQ2xpY2tJblJldGFpbm1l
bnRHcmlkLmJpbmQodGhpcyksIHRydWUpOwogICAgIHRoaXMucmV0YWlubWVudERhdGFHcmlkLnNo
b3codGhpcy5yZXRhaW5tZW50Vmlldy5lbGVtZW50KTsKKyAgICB0aGlzLnJldGFpbm1lbnREYXRh
R3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudHMuU2VsZWN0
ZWROb2RlLCB0aGlzLl9pbnNwZWN0ZWRPYmplY3RDaGFuZ2VkLCB0aGlzKTsKICAgICB0aGlzLnJl
dGFpbm1lbnRWaWV3LnNob3codGhpcy5lbGVtZW50KTsKICAgICB0aGlzLnJldGFpbm1lbnREYXRh
R3JpZC5yZXNldCgpOwogCkBAIC04NDEsNiArODQyLDEzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxl
ZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRO
b2RlID0gZXZlbnQudGFyZ2V0LnNlbGVjdGVkTm9kZTsKICAgICAgICAgdGhpcy5fc2V0UmV0YWlu
bWVudERhdGFHcmlkU291cmNlKHNlbGVjdGVkTm9kZSk7CisgICAgICAgIHRoaXMuX2luc3BlY3Rl
ZE9iamVjdENoYW5nZWQoZXZlbnQpOworICAgIH0sCisKKyAgICBfaW5zcGVjdGVkT2JqZWN0Q2hh
bmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0ZWROb2RlID0g
ZXZlbnQudGFyZ2V0LnNlbGVjdGVkTm9kZTsKKyAgICAgICAgQ29uc29sZUFnZW50LmFkZEluc3Bl
Y3RlZE9iamVjdChzZWxlY3RlZE5vZGUuc25hcHNob3ROb2RlSWQpOwogICAgIH0sCiAKICAgICBf
c2V0UmV0YWlubWVudERhdGFHcmlkU291cmNlOiBmdW5jdGlvbihub2RlSXRlbSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127128</attachid>
            <date>2012-02-15 00:56:56 -0800</date>
            <delta_ts>2012-02-15 12:16:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78496-20120215125654.patch</filename>
            <type>text/plain</type>
            <size>16831</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE4MWU1N2JlMTI5MTMy
ZjkxMDc0YWI5NDVkNGJiNDNmNGIwYTA3NC4uZjg1MjVmZDE5ZGNiMjRiMmZhMzViZWQ0YTM3MzA3
ODBhNWZiOTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTEzICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbaGVhcCBzbmFwc2hvdF0gSXQgY291bGQgYmUgdXNlZnVsIHRvIGhhdmUgYWNjZXNzIHRv
IHRoZSBzZWxlY3RlZCBoZWFwIG9iamVjdCBmcm9tIHRoZSBjb25zb2xlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjppbnNwZWN0ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3RDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6YWRkSW5z
cGVjdGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckluc3BlY3RlZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKEluamVjdGVkU2NyaXB0SG9zdCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGw6CisgICAgICAgICog
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29uc29sZUFn
ZW50OjphZGRJbnNwZWN0ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ29u
c29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRl
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3Lmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5f
c2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hv
dFZpZXcucHJvdG90eXBlLl9pbnNwZWN0ZWRPYmplY3RDaGFuZ2VkKToKKwogMjAxMi0wMi0xNCAg
VGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2Vi
U29ja2V0Q2hhbm5lbCBtaW5vciByZWZhY3RvcmluZyBmb3IgY29kZSBtYW5hZ2VhYmlsaXR5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAKaW5kZXggNzNjYjJmYTdlNzhlNGJlOTI2ZjBiZjJmOTE3OTdkMzY1YWVh
ZDIxOC4uYzU4ZTI4NDlmYWIwZmEyMWFmMDUwNDQ3ZGQ1NmQwZjVjNDExOGYwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcApAQCAtODksNiArODksMTEgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9z
dDo6aW5zcGVjdGVkTm9kZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0KCksIG5vZGUpOwogfQogCitKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjppbnNwZWN0ZWRPYmplY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworfQorCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5hbENvbnN0
cnVjdG9yTmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCAzYWE0NDRjOWRl
MDhkMzlhMjYwN2E2ODU5ZTIyOTNlZDczNjk0MTk4Li43MGM2ZjI1M2Y0MTk1NmQxZmY5Y2I0MmRl
MjY2NDFkMGY0N2U0Njc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTY2
LDE5ICs2NiwyMCBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1Njcmlw
dFZhbHVlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJldHVybiBTY3JpcHRW
YWx1ZSh0b1Y4KG5vZGUpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVk
T2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RB
VFMoIkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWROb2RlKCkiKTsKKyAgICBJTkNfU1RBVFMo
IkluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWRPYmplY3QoKSIpOwogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAgIEluamVj
dGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLQotICAgIE5vZGUqIG5vZGUgPSBob3N0LT5pbnNwZWN0ZWROb2RlKGFyZ3Nb
MF0tPlRvSW50MzIoKS0+VmFsdWUoKSk7Ci0gICAgaWYgKCFub2RlKQorICAgIGlmICghYXJnc1sw
XS0+SXNJbnQzMigpKSB7CisgICAgICAgIHRocm93RXJyb3IoImFyZ3VtZW50IGhhcyB0byBiZSBh
biBpbnRlZ2VyIik7CiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICByZXR1
cm4gdG9WOChub2RlKTsKKyAgICB9CisgICAgCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0
ID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIElu
amVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3QqIG9iamVjdCA9IGhvc3QtPmluc3Bl
Y3RlZE9iamVjdChhcmdzWzBdLT5Ub0ludDMyKCktPlZhbHVlKCkpOworICAgIHJldHVybiBvYmpl
Y3QtPmdldChTY3JpcHRTdGF0ZTo6Y3VycmVudCgpKS52OFZhbHVlKCk7CiB9CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5h
bWVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCA0N2Q0MDhhNTc3ZGYxOTc0
ZWJmMGZjODcxMTExODY0MmY4NDQ3NjI2Li42ZjUwMjJhZmJmNTBiOWRkYzY4OTc2NDgyNGU3ZTY4
YWM2NDlkZDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcApAQCAtNzUsNiArNzUsNyBAQCBJbmplY3RlZFNjcmlwdEhvc3Q6OkluamVjdGVk
U2NyaXB0SG9zdCgpCiAgICAgLCBtX2RvbVN0b3JhZ2VBZ2VudCgwKQogICAgICwgbV9sYXN0V29y
a2VySWQoMSA8PCAzMSkgLy8gRGlzdGluZ3Vpc2ggaWRzIG9mIGZha2Ugd29ya2VycyBmcm9tIHJl
YWwgb25lcywgdG8gbWluaW1pemUgdGhlIGNoYW5jZXMgdGhleSBvdmVybGFwLgogeworICAgIG1f
ZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0ID0gYWRvcHRQdHIobmV3IEluc3BlY3RhYmxlT2JqZWN0
KCkpOwogfQogCiBJbmplY3RlZFNjcmlwdEhvc3Q6On5JbmplY3RlZFNjcmlwdEhvc3QoKQpAQCAt
OTEsMTggKzkyLDYgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmRpc2Nvbm5lY3QoKQogICAg
IG1fZG9tU3RvcmFnZUFnZW50ID0gMDsKIH0KIAotdm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmFk
ZEluc3BlY3RlZE5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBtX2luc3BlY3RlZE5vZGVzLnByZXBl
bmQobm9kZSk7Ci0gICAgd2hpbGUgKG1faW5zcGVjdGVkTm9kZXMuc2l6ZSgpID4gNSkKLSAgICAg
ICAgbV9pbnNwZWN0ZWROb2Rlcy5yZW1vdmVMYXN0KCk7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpjbGVhckluc3BlY3RlZE5vZGVzKCkKLXsKLSAgICBtX2luc3BlY3RlZE5vZGVzLmNs
ZWFyKCk7Ci19Ci0KIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0SW1wbChQYXNzUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBvYmplY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGhp
bnRzKQogewogICAgIGlmIChtX2luc3BlY3RvckFnZW50KQpAQCAtMTIyLDExICsxMTEsMjggQEAg
dm9pZCBJbmplY3RlZFNjcmlwdEhvc3Q6OmNvcHlUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKICAg
ICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT53cml0ZVBsYWluVGV4dCh0ZXh0KTsK
IH0KIAotTm9kZSogSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKHVuc2lnbmVkIGlu
dCBudW0pCitTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0
OjpnZXQoU2NyaXB0U3RhdGUqKQogewotICAgIGlmIChudW0gPCBtX2luc3BlY3RlZE5vZGVzLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIG1faW5zcGVjdGVkTm9kZXNbbnVtXS5nZXQoKTsKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKK307CisKK3ZvaWQgSW5qZWN0ZWRT
Y3JpcHRIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3QoUGFzc093blB0cjxJbmplY3RlZFNjcmlwdEhv
c3Q6Okluc3BlY3RhYmxlT2JqZWN0PiBvYmplY3QpCit7CisgICAgbV9pbnNwZWN0ZWRPYmplY3Rz
LnByZXBlbmQob2JqZWN0KTsKKyAgICB3aGlsZSAobV9pbnNwZWN0ZWRPYmplY3RzLnNpemUoKSA+
IDUpCisgICAgICAgIG1faW5zcGVjdGVkT2JqZWN0cy5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQg
SW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckluc3BlY3RlZE9iamVjdHMoKQoreworICAgIG1faW5z
cGVjdGVkT2JqZWN0cy5jbGVhcigpOworfQorCitJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3Rh
YmxlT2JqZWN0KiBJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdCh1bnNpZ25lZCBp
bnQgbnVtKQoreworICAgIGlmIChudW0gPj0gbV9pbnNwZWN0ZWRPYmplY3RzLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0LmdldCgpOworICAgIHJldHVy
biBtX2luc3BlY3RlZE9iamVjdHNbbnVtXS5nZXQoKTsKIH0KIAogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgK
aW5kZXggMmRiNDY2YTY5NDM1ZWVlNWFkZTc5ZGNmOGQyMTYyYTZlOGE2YWU5OC4uMzI0NjcwNjEx
NGIxY2U0YzcxYjhhN2ZlMDBlMjA2ZDAwM2ViOWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNzgsMTMgKzc4LDE4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZGlzY29ubmVjdCgpOwogCi0gICAgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKE5v
ZGUqKTsKLSAgICB2b2lkIGNsZWFySW5zcGVjdGVkTm9kZXMoKTsKKyAgICBjbGFzcyBJbnNwZWN0
YWJsZU9iamVjdCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIFNjcmlwdFZhbHVlIGdl
dChTY3JpcHRTdGF0ZSopOworICAgICAgICB2aXJ0dWFsIH5JbnNwZWN0YWJsZU9iamVjdCgpIHsg
fQorICAgIH07CisgICAgdm9pZCBhZGRJbnNwZWN0ZWRPYmplY3QoUGFzc093blB0cjxJbnNwZWN0
YWJsZU9iamVjdD4pOworICAgIHZvaWQgY2xlYXJJbnNwZWN0ZWRPYmplY3RzKCk7CisgICAgSW5z
cGVjdGFibGVPYmplY3QqIGluc3BlY3RlZE9iamVjdCh1bnNpZ25lZCBpbnQgbnVtKTsKIAogICAg
IHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9JbnNw
ZWN0LCBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBoaW50cyk7CiAgICAgdm9pZCBjbGVhckNv
bnNvbGVNZXNzYWdlcygpOwogICAgIHZvaWQgY29weVRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsK
LSAgICBOb2RlKiBpbnNwZWN0ZWROb2RlKHVuc2lnbmVkIGludCBudW0pOwogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCiAgICAgaW50IGRhdGFiYXNlSWRJbXBsKERhdGFiYXNlKik7CiAjZW5kaWYK
QEAgLTEwNSw3ICsxMTAsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKICAgICBsb25nIG1fbGFzdFdvcmtlcklkOwot
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2luc3BlY3RlZE5vZGVzOworICAgIFZlY3RvcjxP
d25QdHI8SW5zcGVjdGFibGVPYmplY3Q+ID4gbV9pbnNwZWN0ZWRPYmplY3RzOworICAgIE93blB0
cjxJbnNwZWN0YWJsZU9iamVjdD4gbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3Q7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdEhvc3QuaWRsCmluZGV4IGIzMGE4MzU4N2ExYzQ5ZmRiYTUzMTAxMTQ3NTg4MGJk
NGE0NzIxYjMuLmFlMTQ2ODY2Yjc2ZDg3NjE0ZmFmMWFjYjkzOGJkYjM3MjI0MzdlZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCkBAIC0z
OCw3ICszOCw3IEBAIG1vZHVsZSBjb3JlIHsKIAogICAgICAgICB2b2lkIGNvcHlUZXh0KGluIERP
TVN0cmluZyB0ZXh0KTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBpbnNwZWN0KGluIERPTU9iamVj
dCBvYmplY3RJZCwgaW4gRE9NT2JqZWN0IGhpbnRzKTsKLSAgICAgICAgW0N1c3RvbV0gRE9NT2Jq
ZWN0IGluc3BlY3RlZE5vZGUoaW4gaW50IG51bSk7CisgICAgICAgIFtDdXN0b21dIERPTU9iamVj
dCBpbnNwZWN0ZWRPYmplY3QoaW4gaW50IG51bSk7CiAgICAgICAgIFtDdXN0b21dIERPTU9iamVj
dCBpbnRlcm5hbENvbnN0cnVjdG9yTmFtZShpbiBET01PYmplY3Qgb2JqZWN0KTsKICAgICAgICAg
W0N1c3RvbV0gYm9vbGVhbiBpc0hUTUxBbGxDb2xsZWN0aW9uKGluIERPTU9iamVjdCBvYmplY3Qp
OwogICAgICAgICBbQ3VzdG9tXSBET01TdHJpbmcgdHlwZShpbiBET01PYmplY3Qgb2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJj
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpp
bmRleCBiZTViOTlmOTQ2Y2Y5ZWNlNmVjY2FjZDhjODk3OTBjOTZkMmU3NmI0Li40N2ZmMzUwZmY5
NDc0ODE3OGI1ZDFiZGQ3NjE3NDc1NjllYzhmNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC01NzEsNyArNTcxLDcgQEAgZnVu
Y3Rpb24gQ29tbWFuZExpbmVBUEkoY29tbWFuZExpbmVBUElJbXBsLCBjYWxsRnJhbWUpCiAgICAg
ICAgIGlmIChtZW1iZXIgaW4gaW5zcGVjdGVkV2luZG93IHx8IGluU2NvcGVWYXJpYWJsZXMobWVt
YmVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHRoaXMuX19kZWZpbmVHZXR0
ZXJfXygiJCIgKyBpLCBiaW5kKGNvbW1hbmRMaW5lQVBJSW1wbCwgY29tbWFuZExpbmVBUElJbXBs
Ll9pbnNwZWN0ZWROb2RlLCBpKSk7CisgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXygiJCIg
KyBpLCBiaW5kKGNvbW1hbmRMaW5lQVBJSW1wbCwgY29tbWFuZExpbmVBUElJbXBsLl9pbnNwZWN0
ZWRPYmplY3QsIGkpKTsKICAgICB9CiB9CiAKQEAgLTY4NSw5ICs2ODUsMTAgQEAgQ29tbWFuZExp
bmVBUElJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHRIb3N0LmNsZWFy
Q29uc29sZU1lc3NhZ2VzKCk7CiAgICAgfSwKIAotICAgIF9pbnNwZWN0ZWROb2RlOiBmdW5jdGlv
bihudW0pCisgICAgX2luc3BlY3RlZE9iamVjdDogZnVuY3Rpb24obnVtKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWROb2RlKG51bSk7CisgICAgICAg
IGNvbnNvbGUubG9nKCIgX2luc3BlY3RlZE9iamVjdDogIiArIG51bSk7CisgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkT2JqZWN0KG51bSk7CiAgICAgfSwKIAogICAg
IF9ub3JtYWxpemVFdmVudFR5cGVzOiBmdW5jdGlvbih0eXBlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA5MWIyYWRiMTExZjg1N2E5YjI0YzQ3OGRmZjhlOTUx
MTYwNzVkYmQ4Li40ODRmN2QxMTRjODdiN2E4NGNhNjgzZjY0OTJhMmI5M2IxMWQ1YzQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC01MjcsNiArNTI3LDEyIEBA
CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5h
YmxlcyBjb25zb2xlIHRvIHJlZmVyIHRvIHRoZSBub2RlIHdpdGggZ2l2ZW4gaWQgdmlhICR4IChz
ZWUgQ29tbWFuZCBMaW5lIEFQSSBmb3IgbW9yZSBkZXRhaWxzICR4IGZ1bmN0aW9ucykuIiwKICAg
ICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJhZGRJbnNwZWN0ZWRPYmplY3QiLAorICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImhlYXBPYmplY3RJZCIsICJ0eXBlIjogImludGVnZXIiIH0KKwkJXQogICAgICAgICAgICAgfQog
ICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggZWM0Y2UxZDZjMDExMGZkYzkyN2QyMmYwZDRmMDIy
NTI2MTYwNTAzYi4uMzFkNTE2NjAzMGI0MTQ2MmVlMjVlNWEyNzNmNDQ1M2M5ZDE3NGQyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0xNTAsNyAr
MTUwLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAKIHZv
aWQgSW5zcGVjdG9yQWdlbnQ6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZpcmVkKCkKIHsKLSAgICBt
X2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmNsZWFySW5zcGVj
dGVkTm9kZXMoKTsKKyAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRI
b3N0KCktPmNsZWFySW5zcGVjdGVkT2JqZWN0cygpOwogfQogCiBib29sIEluc3BlY3RvckFnZW50
Ojppc01haW5SZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBLVVJM
JiByZXF1ZXN0VXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmNwcAppbmRleCA0ZjdkYjBjNmE3NzRiNjNkNjg3MzRkNWRlNTBmZTNlZmMw
YzU3NTJhLi5hOGViOTdiMDFjMjU5YmJiYWUxZjUxNjM3MjUyMTJjYWIyMjk3N2Y3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApA
QCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IlNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgorI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgorI2luY2x1ZGUgIlNjcmlwdFByb2ZpbGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC0yNzksNiArMjgxLDIyIEBAIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPiBj
b25zb2xlCiAgICAgfQogfQogCitjbGFzcyBJbnNwZWN0YWJsZUhlYXBPYmplY3QgOiBwdWJsaWMg
SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgSW5z
cGVjdGFibGVIZWFwT2JqZWN0KGludCBoZWFwT2JqZWN0SWQpIDogbV9oZWFwT2JqZWN0SWQoaGVh
cE9iamVjdElkKSB7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdFZhbHVlIGdldChTY3JpcHRTdGF0ZSop
CisgICAgeworICAgICAgICByZXR1cm4gU2NyaXB0UHJvZmlsZXI6Om9iamVjdEJ5SGVhcE9iamVj
dElkKG1faGVhcE9iamVjdElkKTsKKyAgICB9Citwcml2YXRlOgorICAgIGludCBtX2hlYXBPYmpl
Y3RJZDsKK307CisKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWRPYmpl
Y3QoRXJyb3JTdHJpbmcqLCBpbnQgaW5zcGVjdGVkSGVhcE9iamVjdElkKQoreworICAgIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+YWRkSW5zcGVjdGVkT2Jq
ZWN0KGFkb3B0UHRyKG5ldyBJbnNwZWN0YWJsZUhlYXBPYmplY3QoaW5zcGVjdGVkSGVhcE9iamVj
dElkKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oCmluZGV4IDMwMjQyOWE0NTRjYzFlNDVmNGFiMGQ5ZDBlMGFjYzgwOTY4YWVlM2Eu
LmM4NjZkNGZkZWQwMmE3MzQzZmQ4NTEwYTFkM2JjNDRlYjVlNDg5MGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTg1LDYgKzg1
LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHNldE1vbml0b3JpbmdYSFJF
bmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKTsKICAgICB2aXJ0dWFsIHZvaWQgYWRk
SW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkSW5zcGVjdGVkT2JqZWN0KEVycm9yU3RyaW5nKiwgaW50IGluc3BlY3RlZEhlYXBP
YmplY3RJZCk7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKFBhc3NP
d25QdHI8Q29uc29sZU1lc3NhZ2U+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCA4Nzc0Mjc2Y2IyMzNiMWU3ZWMzNzM0
NGE1OGY0YmM4Y2Q0ZjBjNWNhLi4wOGU5ZWE2M2EzZDc2NTFjMTczYzBlMzliYzU4MTQ1NzAzY2I3
ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3Qu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCkBAIC0yNjQsNiArMjY1
LDcgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKCkKICAgICBtX25l
eHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlciA9IDE7CiAgICAgbV9uZXh0VXNlckluaXRpYXRl
ZEhlYXBTbmFwc2hvdE51bWJlciA9IDE7CiAgICAgcmVzZXRGcm9udGVuZFByb2ZpbGVzKCk7Cisg
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5jbGVhcklu
c3BlY3RlZE9iamVjdHMoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNl
dEZyb250ZW5kUHJvZmlsZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25z
b2xlQWdlbnQuY3BwCmluZGV4IGVlZTRiZmFiZmExOGU4ZGUxYmY1NjlmMjM4NmVlYmExZGEwY2Nm
NGMuLmVmODcyYmIzNTE1N2UwMGExMThiZjA1YTIwMTU1MjE0M2QxMjExNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDgg
QEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiTm9k
ZS5oIgorI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTYxLDEyICs2MywyNSBAQCB2b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xl
YXJNZXNzYWdlcyhlcnJvclN0cmluZyk7CiB9CiAKLXZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6YWRk
SW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQpCitjbGFzcyBJbnNwZWN0YWJs
ZU5vZGUgOiBwdWJsaWMgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7Citw
dWJsaWM6CisgICAgSW5zcGVjdGFibGVOb2RlKE5vZGUqIG5vZGUpIDogbV9ub2RlKG5vZGUpIHsg
fQorICAgIHZpcnR1YWwgU2NyaXB0VmFsdWUgZ2V0KFNjcmlwdFN0YXRlKiBzdGF0ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKHN0
YXRlLCBtX25vZGUpOworICAgIH0KK3ByaXZhdGU6CisgICAgTm9kZSogbV9ub2RlOworfTsKKwor
dm9pZCBQYWdlQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgaW50IG5vZGVJZCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9pbnNwZWN0b3JET01B
Z2VudC0+bm9kZUZvcklkKG5vZGVJZCk7Ci0gICAgaWYgKCFub2RlKQorICAgIGlmICghbm9kZSkg
eworICAgICAgICAqZXJyb3JTdHJpbmcgPSAibm9kZUlkIGlzIG5vdCB2YWxpZCI7CiAgICAgICAg
IHJldHVybjsKLSAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0
KCktPmFkZEluc3BlY3RlZE5vZGUobm9kZSk7CisgICAgfQorICAgIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLT5pbmplY3RlZFNjcmlwdEhvc3QoKS0+YWRkSW5zcGVjdGVkT2JqZWN0KGFkb3B0UHRy
KG5ldyBJbnNwZWN0YWJsZU5vZGUobm9kZSkpKTsKIH0KIAogYm9vbCBQYWdlQ29uc29sZUFnZW50
OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkKQEAgLTc0LDcgKzg5LDYgQEAgYm9vbCBQYWdlQ29u
c29sZUFnZW50OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkKICAgICByZXR1cm4gbV9pbnNwZWN0
b3JBZ2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5q
cwppbmRleCA0YTRiNjA3NGJlYTk2ZmMzMjcxNzM0MTI4MDcwOTYxZmY1OWViNDM3Li5kOTMzZTVl
NTAyZWEyNWU0N2I2NGJkMDNmNzE2YmQ1ZWFjM2M5ZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMK
QEAgLTUwMSw2ICs1MDEsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBm
dW5jdGlvbihwYXJlbnQsIHByb2ZpbGUpCiAgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbm1lbnREYXRhR3JpZCgpOwogICAgIHRo
aXMucmV0YWlubWVudERhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0
aGlzLl9tb3VzZUNsaWNrSW5SZXRhaW5tZW50R3JpZC5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB0
aGlzLnJldGFpbm1lbnREYXRhR3JpZC5zaG93KHRoaXMucmV0YWlubWVudFZpZXcuZWxlbWVudCk7
CisgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuRXZlbnRzLlNlbGVjdGVkTm9kZSwgdGhpcy5faW5zcGVjdGVkT2JqZWN0Q2hh
bmdlZCwgdGhpcyk7CiAgICAgdGhpcy5yZXRhaW5tZW50Vmlldy5zaG93KHRoaXMuZWxlbWVudCk7
CiAgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQucmVzZXQoKTsKIApAQCAtODQxLDYgKzg0Miwx
MyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZSA9IGV2ZW50LnRhcmdldC5zZWxlY3RlZE5vZGU7
CiAgICAgICAgIHRoaXMuX3NldFJldGFpbm1lbnREYXRhR3JpZFNvdXJjZShzZWxlY3RlZE5vZGUp
OworICAgICAgICB0aGlzLl9pbnNwZWN0ZWRPYmplY3RDaGFuZ2VkKGV2ZW50KTsKKyAgICB9LAor
CisgICAgX2luc3BlY3RlZE9iamVjdENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdmFyIHNlbGVjdGVkTm9kZSA9IGV2ZW50LnRhcmdldC5zZWxlY3RlZE5vZGU7CisgICAg
ICAgIENvbnNvbGVBZ2VudC5hZGRJbnNwZWN0ZWRPYmplY3Qoc2VsZWN0ZWROb2RlLnNuYXBzaG90
Tm9kZUlkKTsKICAgICB9LAogCiAgICAgX3NldFJldGFpbm1lbnREYXRhR3JpZFNvdXJjZTogZnVu
Y3Rpb24obm9kZUl0ZW0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127212</attachid>
            <date>2012-02-15 12:16:29 -0800</date>
            <delta_ts>2012-02-16 05:55:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78496-20120216001625.patch</filename>
            <type>text/plain</type>
            <size>22285</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTA2MWNiZTI4NjYxOTYx
ZDFiMzhhMjBkYTY5MTg1YWNkNDNiYjRiNC4uYzZmMzM3MDE3ZWQzYmQ2ZjQ2Njc3YTU3MTdjODQz
MGY4MTQ5Yzc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTAyLTE1ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBbaGVhcCBzbmFwc2hvdF0gSXQgY291bGQgYmUgdXNlZnVsIHRvIGhhdmUgYWNjZXNzIHRv
IHRoZSBzZWxlY3RlZCBoZWFwIG9iamVjdCBmcm9tIHRoZSBjb25zb2xlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0OTYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3Qp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVk
T2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbmplY3RlZFNjcmlw
dEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJs
ZU9iamVjdDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5q
ZWN0ZWRTY3JpcHRIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5qZWN0ZWRTY3JpcHRIb3N0OjpjbGVhckluc3BlY3RlZE9iamVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3QpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKEluc3BlY3RhYmxlT2JqZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmpl
Y3Q6On5JbnNwZWN0YWJsZU9iamVjdCk6CisgICAgICAgIChJbmplY3RlZFNjcmlwdEhvc3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6OmRvbUNvbnRlbnRM
b2FkZWRFdmVudEZpcmVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3RhYmxlSGVhcE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0YWJsZUhlYXBPYmplY3Q6Okluc3BlY3RhYmxlSGVhcE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0YWJsZUhlYXBPYmplY3Q6OmdldCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkSW5zcGVj
dGVkSGVhcE9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oOgorICAgICAgICAoSW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQcm9maWxlckFnZW50OjpyZXNldFN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0YWJsZU5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdGFibGVOb2RlOjpJbnNwZWN0YWJsZU5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdGFibGVOb2RlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5fc2VsZWN0aW9uQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBl
Ll9pbnNwZWN0ZWRPYmplY3RDaGFuZ2VkKToKKworMjAxMi0wMi0xNSAgSWx5YSBUaWtob25vdnNr
eSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW2hlYXAg
c25hcHNob3RdIEl0IGNvdWxkIGJlIHVzZWZ1bCB0byBoYXZlIGFjY2VzcyB0byB0aGUgc2VsZWN0
ZWQgaGVhcCBvYmplY3QgZnJvbSB0aGUgY29uc29sZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5z
cGVjdGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0Q2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmFkZEluc3BlY3RlZE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0
SG9zdDo6Y2xlYXJJbnNwZWN0ZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVk
U2NyaXB0SG9zdDo6aW5zcGVjdGVkT2JqZWN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0Lmg6CisgICAgICAgIChJbmplY3RlZFNjcmlwdEhvc3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkSW5z
cGVjdGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNvbnNvbGVBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6cmVzZXRTdGF0ZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuX3NlbGVjdGlvbkNo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3LnByb3Rv
dHlwZS5faW5zcGVjdGVkT2JqZWN0Q2hhbmdlZCk6CisKIDIwMTItMDItMTUgIEplc3NpZSBCZXJs
aW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlIGJ1aWxkIGV4Y2VlZHMg
YWRkcmVzcyBzcGFjZSBvbiAzMi1iaXQgV2luZG93cyBidWlsZGVycyAoYWdhaW4pLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwCmluZGV4IDczY2IyZmE3ZTc4ZTRiZTkyNmYwYmYyZjkxNzk3ZDM2NWFlYWQyMTgu
LjcwNDAyYmM0NjU5ODRkNzg5YmVlNjcwYjRiZTYyODNiOWZkN2JkYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHAKQEAgLTc2LDE3ICs3NiwxNyBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNjcmlwdEhvc3Q6
Om5vZGVBc1NjcmlwdFZhbHVlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZQogICAgIHJl
dHVybiBTY3JpcHRWYWx1ZShzdGF0ZS0+Z2xvYmFsRGF0YSgpLCB0b0pTKHN0YXRlLCBkZXByZWNh
dGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgbm9kZSkpOwogfQogCi1KU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWROb2RlKEV4ZWNTdGF0ZSogZXhlYykKK0pT
VmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdChFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgTm9kZSogbm9kZSA9IGltcGwoKS0+aW5zcGVjdGVkTm9k
ZShleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpKTsKLSAgICBpZiAoIW5vZGUpCisgICAg
SW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2JqZWN0ID0gaW1wbCgpLT5p
bnNwZWN0ZWRPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKSk7CisgICAgaWYg
KCFvYmplY3QpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCiAgICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QoKSwgbm9kZSk7CisgICAgcmV0dXJuIG9iamVjdC0+Z2V0KGV4ZWMpLmpzVmFsdWUoKTsK
IH0KIAogSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5h
bWUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXgg
M2FhNDQ0YzlkZTA4ZDM5YTI2MDdhNjg1OWUyMjkzZWQ3MzY5NDE5OC4uNzBjNmYyNTNmNDE5NTZk
MWZmOWNiNDJkZTI2NjQxZDBmNDdlNDY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20u
Y3BwCkBAIC02NiwxOSArNjYsMjAgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpu
b2RlQXNTY3JpcHRWYWx1ZShTY3JpcHRTdGF0ZSogc3RhdGUsIE5vZGUqIG5vZGUKICAgICByZXR1
cm4gU2NyaXB0VmFsdWUodG9WOChub2RlKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkTm9kZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6
Omluc3BlY3RlZE9iamVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0g
ICAgSU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkTm9kZSgpIik7CisgICAg
SU5DX1NUQVRTKCJJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkT2JqZWN0KCkiKTsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAK
LSAgICBJbmplY3RlZFNjcmlwdEhvc3QqIGhvc3QgPSBWOEluamVjdGVkU2NyaXB0SG9zdDo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0KLSAgICBOb2RlKiBub2RlID0gaG9zdC0+aW5zcGVjdGVk
Tm9kZShhcmdzWzBdLT5Ub0ludDMyKCktPlZhbHVlKCkpOwotICAgIGlmICghbm9kZSkKKyAgICBp
ZiAoIWFyZ3NbMF0tPklzSW50MzIoKSkgeworICAgICAgICB0aHJvd0Vycm9yKCJhcmd1bWVudCBo
YXMgdG8gYmUgYW4gaW50ZWdlciIpOwogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwot
Ci0gICAgcmV0dXJuIHRvVjgobm9kZSk7CisgICAgfQorICAgIAorICAgIEluamVjdGVkU2NyaXB0
SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKKyAgICBJbmplY3RlZFNjcmlwdEhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0KiBvYmplY3QgPSBo
b3N0LT5pbnNwZWN0ZWRPYmplY3QoYXJnc1swXS0+VG9JbnQzMigpLT5WYWx1ZSgpKTsKKyAgICBy
ZXR1cm4gb2JqZWN0LT5nZXQoU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSkudjhWYWx1ZSgpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29u
c3RydWN0b3JOYW1lQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAKaW5kZXggNDdkNDA4
YTU3N2RmMTk3NGViZjBmYzg3MTExMTg2NDJmODQ0NzYyNi4uNmY1MDIyYWZiZjUwYjlkZGM2ODk3
NjQ4MjRlN2U2OGFjNjQ5ZGQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgSW5qZWN0ZWRTY3JpcHRIb3N0
OjpJbmplY3RlZFNjcmlwdEhvc3QoKQogICAgICwgbV9kb21TdG9yYWdlQWdlbnQoMCkKICAgICAs
IG1fbGFzdFdvcmtlcklkKDEgPDwgMzEpIC8vIERpc3Rpbmd1aXNoIGlkcyBvZiBmYWtlIHdvcmtl
cnMgZnJvbSByZWFsIG9uZXMsIHRvIG1pbmltaXplIHRoZSBjaGFuY2VzIHRoZXkgb3ZlcmxhcC4K
IHsKKyAgICBtX2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0
YWJsZU9iamVjdCgpKTsKIH0KIAogSW5qZWN0ZWRTY3JpcHRIb3N0Ojp+SW5qZWN0ZWRTY3JpcHRI
b3N0KCkKQEAgLTkxLDE4ICs5Miw2IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0OjpkaXNjb25u
ZWN0KCkKICAgICBtX2RvbVN0b3JhZ2VBZ2VudCA9IDA7CiB9CiAKLXZvaWQgSW5qZWN0ZWRTY3Jp
cHRIb3N0OjphZGRJbnNwZWN0ZWROb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgbV9pbnNwZWN0ZWRO
b2Rlcy5wcmVwZW5kKG5vZGUpOwotICAgIHdoaWxlIChtX2luc3BlY3RlZE5vZGVzLnNpemUoKSA+
IDUpCi0gICAgICAgIG1faW5zcGVjdGVkTm9kZXMucmVtb3ZlTGFzdCgpOwotfQotCi12b2lkIElu
amVjdGVkU2NyaXB0SG9zdDo6Y2xlYXJJbnNwZWN0ZWROb2RlcygpCi17Ci0gICAgbV9pbnNwZWN0
ZWROb2Rlcy5jbGVhcigpOwotfQotCiB2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdElt
cGwoUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0LCBQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBoaW50cykKIHsKICAgICBpZiAobV9pbnNwZWN0b3JBZ2VudCkKQEAgLTEyMiwxMSAr
MTExLDI4IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRIb3N0Ojpjb3B5VGV4dChjb25zdCBTdHJpbmcm
IHRleHQpCiAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+d3JpdGVQbGFpblRl
eHQodGV4dCk7CiB9CiAKLU5vZGUqIEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdGVkTm9kZSh1
bnNpZ25lZCBpbnQgbnVtKQorU2NyaXB0VmFsdWUgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0
YWJsZU9iamVjdDo6Z2V0KFNjcmlwdFN0YXRlKikKIHsKLSAgICBpZiAobnVtIDwgbV9pbnNwZWN0
ZWROb2Rlcy5zaXplKCkpCi0gICAgICAgIHJldHVybiBtX2luc3BlY3RlZE5vZGVzW251bV0uZ2V0
KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7Cit9OworCit2b2lk
IEluamVjdGVkU2NyaXB0SG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5qZWN0
ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQoreworICAgIG1faW5zcGVj
dGVkT2JqZWN0cy5wcmVwZW5kKG9iamVjdCk7CisgICAgd2hpbGUgKG1faW5zcGVjdGVkT2JqZWN0
cy5zaXplKCkgPiA1KQorICAgICAgICBtX2luc3BlY3RlZE9iamVjdHMucmVtb3ZlTGFzdCgpOwor
fQorCit2b2lkIEluamVjdGVkU2NyaXB0SG9zdDo6Y2xlYXJJbnNwZWN0ZWRPYmplY3RzKCkKK3sK
KyAgICBtX2luc3BlY3RlZE9iamVjdHMuY2xlYXIoKTsKK30KKworSW5qZWN0ZWRTY3JpcHRIb3N0
OjpJbnNwZWN0YWJsZU9iamVjdCogSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0ZWRPYmplY3Qo
dW5zaWduZWQgaW50IG51bSkKK3sKKyAgICBpZiAobnVtID49IG1faW5zcGVjdGVkT2JqZWN0cy5z
aXplKCkpCisgICAgICAgIHJldHVybiBtX2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdC5nZXQoKTsK
KyAgICByZXR1cm4gbV9pbnNwZWN0ZWRPYmplY3RzW251bV0uZ2V0KCk7CiB9CiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0SG9zdC5oCmluZGV4IDJkYjQ2NmE2OTQzNWVlZTVhZGU3OWRjZjhkMjE2MmE2ZThhNmFlOTgu
LjMyNDY3MDYxMTRiMWNlNGM3MWI4YTdmZTAwZTIwNmQwMDNlYjlmMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTc4LDEzICs3OCwxOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAotICAgIHZvaWQgYWRkSW5zcGVj
dGVkTm9kZShOb2RlKik7Ci0gICAgdm9pZCBjbGVhckluc3BlY3RlZE5vZGVzKCk7CisgICAgY2xh
c3MgSW5zcGVjdGFibGVPYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCBTY3Jp
cHRWYWx1ZSBnZXQoU2NyaXB0U3RhdGUqKTsKKyAgICAgICAgdmlydHVhbCB+SW5zcGVjdGFibGVP
YmplY3QoKSB7IH0KKyAgICB9OworICAgIHZvaWQgYWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25Q
dHI8SW5zcGVjdGFibGVPYmplY3Q+KTsKKyAgICB2b2lkIGNsZWFySW5zcGVjdGVkT2JqZWN0cygp
OworICAgIEluc3BlY3RhYmxlT2JqZWN0KiBpbnNwZWN0ZWRPYmplY3QodW5zaWduZWQgaW50IG51
bSk7CiAKICAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IG9i
amVjdFRvSW5zcGVjdCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gaGludHMpOwogICAgIHZv
aWQgY2xlYXJDb25zb2xlTWVzc2FnZXMoKTsKICAgICB2b2lkIGNvcHlUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCk7Ci0gICAgTm9kZSogaW5zcGVjdGVkTm9kZSh1bnNpZ25lZCBpbnQgbnVtKTsKICNp
ZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIGludCBkYXRhYmFzZUlkSW1wbChEYXRhYmFzZSop
OwogI2VuZGlmCkBAIC0xMDUsNyArMTEwLDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudCogbV9kb21TdG9yYWdlQWdlbnQ7CiAgICAgbG9uZyBtX2xhc3RX
b3JrZXJJZDsKLSAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9pbnNwZWN0ZWROb2RlczsKKyAg
ICBWZWN0b3I8T3duUHRyPEluc3BlY3RhYmxlT2JqZWN0PiA+IG1faW5zcGVjdGVkT2JqZWN0czsK
KyAgICBPd25QdHI8SW5zcGVjdGFibGVPYmplY3Q+IG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAppbmRleCBiMzBhODM1ODdhMWM0OWZkYmE1MzEw
MTE0NzU4ODBiZDRhNDcyMWIzLi5hZTE0Njg2NmI3NmQ4NzYxNGZhZjFhY2I5MzhiZGIzNzIyNDM3
ZWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmlkbApAQCAtMzgsNyArMzgsNyBAQCBtb2R1bGUgY29yZSB7CiAKICAgICAgICAgdm9pZCBjb3B5
VGV4dChpbiBET01TdHJpbmcgdGV4dCk7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgaW5zcGVjdChp
biBET01PYmplY3Qgb2JqZWN0SWQsIGluIERPTU9iamVjdCBoaW50cyk7Ci0gICAgICAgIFtDdXN0
b21dIERPTU9iamVjdCBpbnNwZWN0ZWROb2RlKGluIGludCBudW0pOworICAgICAgICBbQ3VzdG9t
XSBET01PYmplY3QgaW5zcGVjdGVkT2JqZWN0KGluIGludCBudW0pOwogICAgICAgICBbQ3VzdG9t
XSBET01PYmplY3QgaW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWUoaW4gRE9NT2JqZWN0IG9iamVjdCk7
CiAgICAgICAgIFtDdXN0b21dIGJvb2xlYW4gaXNIVE1MQWxsQ29sbGVjdGlvbihpbiBET01PYmpl
Y3Qgb2JqZWN0KTsKICAgICAgICAgW0N1c3RvbV0gRE9NU3RyaW5nIHR5cGUoaW4gRE9NT2JqZWN0
IG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMKaW5kZXggYmU1Yjk5Zjk0NmNmOWVjZTZlY2NhY2Q4Yzg5NzkwYzk2ZDJlNzZiNC4u
NzllNmM2ZDk4MmI3ZmQwNTA5OGVkN2EwOTk4N2MzNWVlYjZkMDA0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtNTcxLDcgKzU3
MSw3IEBAIGZ1bmN0aW9uIENvbW1hbmRMaW5lQVBJKGNvbW1hbmRMaW5lQVBJSW1wbCwgY2FsbEZy
YW1lKQogICAgICAgICBpZiAobWVtYmVyIGluIGluc3BlY3RlZFdpbmRvdyB8fCBpblNjb3BlVmFy
aWFibGVzKG1lbWJlcikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB0aGlzLl9f
ZGVmaW5lR2V0dGVyX18oIiQiICsgaSwgYmluZChjb21tYW5kTGluZUFQSUltcGwsIGNvbW1hbmRM
aW5lQVBJSW1wbC5faW5zcGVjdGVkTm9kZSwgaSkpOworICAgICAgICB0aGlzLl9fZGVmaW5lR2V0
dGVyX18oIiQiICsgaSwgYmluZChjb21tYW5kTGluZUFQSUltcGwsIGNvbW1hbmRMaW5lQVBJSW1w
bC5faW5zcGVjdGVkT2JqZWN0LCBpKSk7CiAgICAgfQogfQogCkBAIC02ODUsOSArNjg1LDkgQEAg
Q29tbWFuZExpbmVBUElJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgSW5qZWN0ZWRTY3JpcHRI
b3N0LmNsZWFyQ29uc29sZU1lc3NhZ2VzKCk7CiAgICAgfSwKIAotICAgIF9pbnNwZWN0ZWROb2Rl
OiBmdW5jdGlvbihudW0pCisgICAgX2luc3BlY3RlZE9iamVjdDogZnVuY3Rpb24obnVtKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0SG9zdC5pbnNwZWN0ZWROb2RlKG51bSk7
CisgICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdEhvc3QuaW5zcGVjdGVkT2JqZWN0KG51bSk7
CiAgICAgfSwKIAogICAgIF9ub3JtYWxpemVFdmVudFR5cGVzOiBmdW5jdGlvbih0eXBlcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAzOTJlNTU1ODI1ZDc2NWZk
NGFkYzg3ZDRhNWY5ZjVlNmY3NjcyNDkwLi5jMmM0ZmVlYjRlYzczZmM5YzFmM2NmYjY4ZDZlZjY4
MDk2YmQ5MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC01
MjcsNiArNTI3LDEyIEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRW5hYmxlcyBjb25zb2xlIHRvIHJlZmVyIHRvIHRoZSBub2RlIHdpdGggZ2l2
ZW4gaWQgdmlhICR4IChzZWUgQ29tbWFuZCBMaW5lIEFQSSBmb3IgbW9yZSBkZXRhaWxzICR4IGZ1
bmN0aW9ucykuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJhZGRJbnNwZWN0ZWRI
ZWFwT2JqZWN0IiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJoZWFwT2JqZWN0SWQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9CisJ
CV0KICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCmluZGV4IGVjNGNlMWQ2YzAx
MTBmZGM5MjdkMjJmMGQ0ZjAyMjUyNjE2MDUwM2IuLjMxZDUxNjYwMzBiNDE0NjJlZTI1ZTVhMjcz
ZjQ0NTNjOWQxNzRkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmRpc2FibGUo
RXJyb3JTdHJpbmcqKQogCiB2b2lkIEluc3BlY3RvckFnZW50Ojpkb21Db250ZW50TG9hZGVkRXZl
bnRGaXJlZCgpCiB7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0
SG9zdCgpLT5jbGVhckluc3BlY3RlZE5vZGVzKCk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5jbGVhckluc3BlY3RlZE9iamVjdHMoKTsKIH0KIAog
Ym9vbCBJbnNwZWN0b3JBZ2VudDo6aXNNYWluUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgY29uc3QgS1VSTCYgcmVxdWVzdFVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggNGY3ZGIwYzZhNzc0YjYz
ZDY4NzM0ZDVkZTUwZmUzZWZjMGM1NzUyYS4uYWQ1MWFkZDU2MmRiYzE1OWE5OThhZjEyNmU5NjUx
N2YwYWQ3YTgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJTY3JpcHRBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRD
YWxsU3RhY2suaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKKyNpbmNsdWRlICJTY3JpcHRQ
cm9maWxlci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgpAQCAtMjc5LDYgKzI4MSwyMiBA
QCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFzc093blB0
cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZQogICAgIH0KIH0KIAorY2xhc3MgSW5zcGVjdGFibGVI
ZWFwT2JqZWN0IDogcHVibGljIEluamVjdGVkU2NyaXB0SG9zdDo6SW5zcGVjdGFibGVPYmplY3Qg
eworcHVibGljOgorICAgIGV4cGxpY2l0IEluc3BlY3RhYmxlSGVhcE9iamVjdChpbnQgaGVhcE9i
amVjdElkKSA6IG1faGVhcE9iamVjdElkKGhlYXBPYmplY3RJZCkgeyB9CisgICAgdmlydHVhbCBT
Y3JpcHRWYWx1ZSBnZXQoU2NyaXB0U3RhdGUqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFNjcmlw
dFByb2ZpbGVyOjpvYmplY3RCeUhlYXBPYmplY3RJZChtX2hlYXBPYmplY3RJZCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBpbnQgbV9oZWFwT2JqZWN0SWQ7Cit9OworCit2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkSGVhcE9iamVjdChFcnJvclN0cmluZyosIGludCBpbnNw
ZWN0ZWRIZWFwT2JqZWN0SWQpCit7CisgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVj
dGVkU2NyaXB0SG9zdCgpLT5hZGRJbnNwZWN0ZWRPYmplY3QoYWRvcHRQdHIobmV3IEluc3BlY3Rh
YmxlSGVhcE9iamVjdChpbnNwZWN0ZWRIZWFwT2JqZWN0SWQpKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKaW5kZXggMzAyNDI5YTQ1
NGNjMWU0NWY0YWIwZDlkMGUwYWNjODA5NjhhZWUzYS4uNGJhNGFhYTJkNmJiNjNlYmM5OTkxOWY5
MDZiNDcxYmQ5MGViNDg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29s
IGVuYWJsZWQpOwogICAgIHZpcnR1YWwgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRJbnNwZWN0ZWRIZWFwT2Jq
ZWN0KEVycm9yU3RyaW5nKiwgaW50IGluc3BlY3RlZEhlYXBPYmplY3RJZCk7CiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3NhZ2U+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcAppbmRleCA4Nzc0Mjc2Y2IyMzNiMWU3ZWMzNzM0NGE1OGY0YmM4Y2Q0ZjBjNWNhLi4w
OGU5ZWE2M2EzZDc2NTFjMTczYzBlMzliYzU4MTQ1NzAzY2I3ZjYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0zNCw2
ICszNCw3IEBACiAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3Jp
cHQuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclN0YXRlLmgiCkBAIC0yNjQsNiArMjY1LDcgQEAgdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpyZXNldFN0YXRlKCkKICAgICBtX25leHRVc2VySW5pdGlhdGVkUHJvZmls
ZU51bWJlciA9IDE7CiAgICAgbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlciA9
IDE7CiAgICAgcmVzZXRGcm9udGVuZFByb2ZpbGVzKCk7CisgICAgbV9pbmplY3RlZFNjcmlwdE1h
bmFnZXItPmluamVjdGVkU2NyaXB0SG9zdCgpLT5jbGVhckluc3BlY3RlZE9iamVjdHMoKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldEZyb250ZW5kUHJvZmlsZXMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IGVl
ZTRiZmFiZmExOGU4ZGUxYmY1NjlmMjM4NmVlYmExZGEwY2NmNGMuLmZjZDFmM2QwYmI5YzdmOGQ3
Yjc4NGMzMjU5NWZlZmZmZjJlM2UzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDEyICs2MywyNSBAQCB2
b2lkIFBhZ2VDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nKQogICAgIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhlcnJvclN0cmlu
Zyk7CiB9CiAKLXZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJvclN0
cmluZyosIGludCBub2RlSWQpCitjbGFzcyBJbnNwZWN0YWJsZU5vZGUgOiBwdWJsaWMgSW5qZWN0
ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
SW5zcGVjdGFibGVOb2RlKE5vZGUqIG5vZGUpIDogbV9ub2RlKG5vZGUpIHsgfQorICAgIHZpcnR1
YWwgU2NyaXB0VmFsdWUgZ2V0KFNjcmlwdFN0YXRlKiBzdGF0ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBJbmplY3RlZFNjcmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKHN0YXRlLCBtX25vZGUp
OworICAgIH0KK3ByaXZhdGU6CisgICAgTm9kZSogbV9ub2RlOworfTsKKwordm9pZCBQYWdlQ29u
c29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IG5vZGVJZCkKIHsKICAgICBOb2RlKiBub2RlID0gbV9pbnNwZWN0b3JET01BZ2VudC0+bm9kZUZv
cklkKG5vZGVJZCk7Ci0gICAgaWYgKCFub2RlKQorICAgIGlmICghbm9kZSkgeworICAgICAgICAq
ZXJyb3JTdHJpbmcgPSAibm9kZUlkIGlzIG5vdCB2YWxpZCI7CiAgICAgICAgIHJldHVybjsKLSAg
ICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRIb3N0KCktPmFkZEluc3Bl
Y3RlZE5vZGUobm9kZSk7CisgICAgfQorICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEhvc3QoKS0+YWRkSW5zcGVjdGVkT2JqZWN0KGFkb3B0UHRyKG5ldyBJbnNwZWN0
YWJsZU5vZGUobm9kZSkpKTsKIH0KIAogYm9vbCBQYWdlQ29uc29sZUFnZW50OjpkZXZlbG9wZXJF
eHRyYXNFbmFibGVkKCkKQEAgLTc0LDcgKzg5LDYgQEAgYm9vbCBQYWdlQ29uc29sZUFnZW50Ojpk
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkKICAgICByZXR1cm4gbV9pbnNwZWN0b3JBZ2VudC0+ZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZCgpOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwppbmRleCA0YTRi
NjA3NGJlYTk2ZmMzMjcxNzM0MTI4MDcwOTYxZmY1OWViNDM3Li5kOTMzZTVlNTAyZWEyNWU0N2I2
NGJkMDNmNzE2YmQ1ZWFjM2M5ZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKQEAgLTUwMSw2ICs1
MDEsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJl
bnQsIHByb2ZpbGUpCiAgICAgdGhpcy5yZXRhaW5tZW50RGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFJldGFpbm1lbnREYXRhR3JpZCgpOwogICAgIHRoaXMucmV0YWlubWVu
dERhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9tb3VzZUNs
aWNrSW5SZXRhaW5tZW50R3JpZC5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB0aGlzLnJldGFpbm1l
bnREYXRhR3JpZC5zaG93KHRoaXMucmV0YWlubWVudFZpZXcuZWxlbWVudCk7CisgICAgdGhpcy5y
ZXRhaW5tZW50RGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
RXZlbnRzLlNlbGVjdGVkTm9kZSwgdGhpcy5faW5zcGVjdGVkT2JqZWN0Q2hhbmdlZCwgdGhpcyk7
CiAgICAgdGhpcy5yZXRhaW5tZW50Vmlldy5zaG93KHRoaXMuZWxlbWVudCk7CiAgICAgdGhpcy5y
ZXRhaW5tZW50RGF0YUdyaWQucmVzZXQoKTsKIApAQCAtODQxLDYgKzg0MiwxMyBAQCBXZWJJbnNw
ZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAg
dmFyIHNlbGVjdGVkTm9kZSA9IGV2ZW50LnRhcmdldC5zZWxlY3RlZE5vZGU7CiAgICAgICAgIHRo
aXMuX3NldFJldGFpbm1lbnREYXRhR3JpZFNvdXJjZShzZWxlY3RlZE5vZGUpOworICAgICAgICB0
aGlzLl9pbnNwZWN0ZWRPYmplY3RDaGFuZ2VkKGV2ZW50KTsKKyAgICB9LAorCisgICAgX2luc3Bl
Y3RlZE9iamVjdENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIHNl
bGVjdGVkTm9kZSA9IGV2ZW50LnRhcmdldC5zZWxlY3RlZE5vZGU7CisgICAgICAgIENvbnNvbGVB
Z2VudC5hZGRJbnNwZWN0ZWRPYmplY3Qoc2VsZWN0ZWROb2RlLnNuYXBzaG90Tm9kZUlkKTsKICAg
ICB9LAogCiAgICAgX3NldFJldGFpbm1lbnREYXRhR3JpZFNvdXJjZTogZnVuY3Rpb24obm9kZUl0
ZW0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMGY4NWQzY2E1OTYwZjI5NjRlYzY5MmVlOWU5YWExMTZhNTU5ZDI3Mi4uYjcz
N2ZjYmM1YTM1MGJhOGQxZGJiMWRmNjA1MTUzMzExMWVjNmE1MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEyLTAyLTE1ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbaGVhcCBzbmFwc2hvdF0gSXQgY291bGQgYmUgdXNl
ZnVsIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBzZWxlY3RlZCBoZWFwIG9iamVjdCBmcm9tIHRoZSBj
b25zb2xlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzg0OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGluc3BlY3Rvci9wcm90b2NvbC9jb25zb2xlLWFnZW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvcHJvdG9jb2wvY29uc29sZS1hZ2VudC5odG1sOgorCiAyMDEyLTAyLTE1ICBB
ZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlLXNwZWNpZnkgZmxh
a2luZXNzIG9mIGh0dHAvdGVzdHMvZmlsZXN5c3RlbS93b3JrZXJzIGFzIFBBU1MgVElNRU9VVCwg
c2luY2UgdGhleSBuZXZlciBjcmFzaC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9wcm90b2NvbC9jb25zb2xlLWFnZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9wcm90b2NvbC9jb25zb2xlLWFnZW50LWV4cGVjdGVkLnR4dAppbmRleCBmMGY1Njc2ZDAx
NDA0NjhhMmNjZjZmNDQ3YTUyNzYxMDAwODMyYTgwLi45YTZjNjFmY2Y5MjViNDYzMDQxNmIzYTg1
NWRiOWQ2YjBhMzMwY2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvdG9j
b2wvY29uc29sZS1hZ2VudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Byb3RvY29sL2NvbnNvbGUtYWdlbnQtZXhwZWN0ZWQudHh0CkBAIC0xNjcsNiArMTY3LDI1IEBA
IHJlc3BvbnNlOgogICAgIGlkIDogPG51bWJlcj4KIH0KIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbnNvbGVBZ2VudC5hZGRJ
bnNwZWN0ZWRIZWFwT2JqZWN0KDxudW1iZXI+KQorCityZXF1ZXN0OgoreworICAgIG1ldGhvZCA6
ICJDb25zb2xlLmFkZEluc3BlY3RlZEhlYXBPYmplY3QiCisgICAgcGFyYW1zIDogeworICAgICAg
ICBoZWFwT2JqZWN0SWQgOiAxCisgICAgfQorICAgIGlkIDogPG51bWJlcj4KK30KKworcmVzcG9u
c2U6Cit7CisgICAgcmVzdWx0IDogeworICAgIH0KKyAgICBpZCA6IDxudW1iZXI+Cit9CisKID09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CiBDb3ZlcmFnZSBmb3IgQ29uc29sZUFnZW50CiB7CkBAIC0xNzUsNiArMTk0LDcgQEAgQ292ZXJh
Z2UgZm9yIENvbnNvbGVBZ2VudAogICAgIGNsZWFyTWVzc2FnZXMgOiAiY2hlY2tlZCIKICAgICBz
ZXRNb25pdG9yaW5nWEhSRW5hYmxlZCA6ICJjaGVja2VkIgogICAgIGFkZEluc3BlY3RlZE5vZGUg
OiAiY2hlY2tlZCIKKyAgICBhZGRJbnNwZWN0ZWRIZWFwT2JqZWN0IDogImNoZWNrZWQiCiAgICAg
bWVzc2FnZUFkZGVkIDogImNoZWNrZWQiCiAgICAgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCA6
ICJjaGVja2VkIgogICAgIG1lc3NhZ2VzQ2xlYXJlZCA6ICJjaGVja2VkIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb3RvY29sL2NvbnNvbGUtYWdlbnQuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9wcm90b2NvbC9jb25zb2xlLWFnZW50Lmh0bWwKaW5kZXggNDFlN2Rl
ZDZlY2JhNjAzNzBjMjY2Mzk4ZDdhODlmZGI1Zjc1MzBlOC4uODI3YTU3MTE2MThjMjhjNWYzNGEz
OGUwMzg1OWFmNWY5YTQ4Y2YzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b3RvY29sL2NvbnNvbGUtYWdlbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJv
dG9jb2wvY29uc29sZS1hZ2VudC5odG1sCkBAIC0xMyw3ICsxMyw4IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBbIkNvbnNvbGVBZ2VudCIsICJjbGVhck1lc3NhZ2VzIl0sCiAgICAgICAgIFsi
Q29uc29sZUFnZW50IiwgInNldE1vbml0b3JpbmdYSFJFbmFibGVkIiwgdHJ1ZV0sCiAgICAgICAg
IFsiQ29uc29sZUFnZW50IiwgInNldE1vbml0b3JpbmdYSFJFbmFibGVkIiwgZmFsc2VdLAotICAg
ICAgICBbIkNvbnNvbGVBZ2VudCIsICJhZGRJbnNwZWN0ZWROb2RlIiwgMV0KKyAgICAgICAgWyJD
b25zb2xlQWdlbnQiLCAiYWRkSW5zcGVjdGVkTm9kZSIsIDFdLAorICAgICAgICBbIkNvbnNvbGVB
Z2VudCIsICJhZGRJbnNwZWN0ZWRIZWFwT2JqZWN0IiwgMV0KICAgICBdOwogCiAgICAgSW5zcGVj
dG9yVGVzdC5ydW5Qcm90b2NvbFRlc3RTdWl0ZSgiQ29uc29sZUFnZW50IiwgdGVzdFN1aXRlLCBb
J2lkJywgJ3JlcXVlc3RJZCcsICdpbmplY3RlZFNjcmlwdElkJywgJ3N0YWNrVHJhY2UnXSk7Cg==
</data>
<flag name="review"
          id="129282"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>