<?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>99186</bug_id>
          
          <creation_ts>2012-10-12 09:36:42 -0700</creation_ts>
          <short_desc>Web Inspector: NMI remove hand made object builders with automatic builder</short_desc>
          <delta_ts>2012-10-14 23:21:35 -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>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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>dglazkov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>740975</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-12 09:36:42 -0700</bug_when>
    <thetext>Our ObjectType to size map handles a map between pointers to strings like &quot;MemoryCache.Image&quot; and the corresponding allocated size.
The builders fetch the data and creates hierarchical structure.
This solution is not scalable solution. I&apos;d like to add another types and need to implement additional builders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740980</commentid>
    <comment_count>1</comment_count>
      <attachid>168439</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-12 09:43:25 -0700</bug_when>
    <thetext>Created attachment 168439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741074</commentid>
    <comment_count>2</comment_count>
      <attachid>168439</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-12 11:46:21 -0700</bug_when>
    <thetext>Comment on attachment 168439
Patch

Attachment 168439 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14282043

New failing tests:
inspector/profiler/memory-instrumentation-cached-images.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741101</commentid>
    <comment_count>3</comment_count>
      <attachid>168439</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-12 12:09:29 -0700</bug_when>
    <thetext>Comment on attachment 168439
Patch

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

New failing tests:
inspector/profiler/memory-instrumentation-canvas.html
inspector/profiler/memory-instrumentation-cached-images.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741119</commentid>
    <comment_count>4</comment_count>
      <attachid>168439</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-12 12:46:22 -0700</bug_when>
    <thetext>Comment on attachment 168439
Patch

Attachment 168439 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14262594

New failing tests:
inspector/profiler/memory-instrumentation-cached-images.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741479</commentid>
    <comment_count>5</comment_count>
      <attachid>168556</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-13 09:19:19 -0700</bug_when>
    <thetext>Created attachment 168556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741762</commentid>
    <comment_count>6</comment_count>
      <attachid>168556</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-10-14 23:11:39 -0700</bug_when>
    <thetext>Comment on attachment 168556
Patch

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

&gt; Source/WebCore/inspector/InspectorMemoryAgent.cpp:126
&gt; +        if (objectType.endsWith(&quot;.used&quot;, false))

Can we check if the parent block already exists and contains size value? Or better always sum up children sizes.

&gt; Source/WebCore/inspector/MemoryInstrumentationImpl.cpp:43
&gt; +    // TypeToSizeMap uses const char* as the key.

You should probably note that we compare pointers not strings and use hash for pointer not string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741764</commentid>
    <comment_count>7</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-10-14 23:21:35 -0700</bug_when>
    <thetext>Committed r131290: &lt;http://trac.webkit.org/changeset/131290&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168439</attachid>
            <date>2012-10-12 09:43:25 -0700</date>
            <delta_ts>2012-10-13 09:19:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99186-20121012204220.patch</filename>
            <type>text/plain</type>
            <size>16453</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q2OTliY2Y1NjYwOGE1
N2E1ZjY1ODEyNTg0ZWQzMzZlMjZiNzI2Yy4uNmY2OTQzNjFjYjE3ZTFhZjIyOGI4ZWYxYTFlOWQ4
ZjgxNGYxYmRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEwLTEyICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUkgcmVtb3ZlIGhhbmQgbWFkZSBvYmplY3QgYnVpbGRlcnMgd2l0aCBhdXRvbWF0aWMg
YnVpbGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5MTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T2xkIGJ1aWxkZXJzIHdlcmUgcmVwbGFjZWQgd2l0aCBzaW5nbGUgYXV0b21hdGljIGJ1aWxkZXIu
CisgICAgICAgIEl0IGRvZXMgdGhlIG5leHQgdGhpbmdzOgorICAgICAgICBhKSBkZWR1cGxpY2F0
ZXMgZW50cmllcyBpbiB0aGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50J3MgbWFwIGFuZCBj
b252ZXJ0cyBvYmplY3RUeXBlIHBvaW50ZXJzIHRvIFN0cmluZzsKKyAgICAgICAgYikgY3JlYXRl
cyBwYXJlbnQgZW50cmllcyBhbmQgYXNzaWducyB0aGVpciBhZ2dyZWdhdGVkIHNpemVzOworICAg
ICAgICBjKSBjcmVhdGVzIHRoZSBoaWVyYXJjaHkgb2YgTWVtb3J5QmxvY2tzIHJlY3Vyc2l2ZWx5
LgorCisgICAgICAgICogZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmVNZW1vcnlUeXBlcyk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6anNIZWFwSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJUcmVlSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjphZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpzaXpl
c01hcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnRJbXBsKToKKwogMjAxMi0xMC0xMiAgU2hpbnlhIEthd2FuYWth
ICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgT3B0aW16aWUgU2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQgbWVtb3J5IGxheW91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dl
YkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGE1MTBlMGM0YjA5YTY4NTAzZmMy
MDIwODA4MWQxN2NiNzYxNThjMDAuLjZlZGM1Mzk3OThkMjUxMWY1MjlkOTNiYWFjYzJiMmEzM2Q5
MWM5MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTMzLDEyICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLU1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpQYWdlID0gIlBhZ2UiOwog
TWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSA9ICJQYWdlLkRPTSI7CiBN
ZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTID0gIlBhZ2UuQ1NTIjsKIE1l
bW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpCaW5kaW5nID0gIlBhZ2UuQmluZGlu
ZyI7CiAKLU1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpNZW1vcnlDYWNoZSA9
ICJNZW1vcnlDYWNoZSI7CiBNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBlczo6TWVt
b3J5Q2FjaGVTdHJ1Y3R1cmVzID0gIk1lbW9yeUNhY2hlLkludGVybmFsU3RydWN0dXJlcyI7CiBN
ZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBlczo6Q2FjaGVkUmVzb3VyY2UgPSAiTWVt
b3J5Q2FjaGUuUmVzb3VyY2UiOwogTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6
OkNhY2hlZFJlc291cmNlUmF3ID0gIk1lbW9yeUNhY2hlLlJhd1Jlc291cmNlIjsKQEAgLTUwLDcg
KzQ4LDYgQEAgTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291
cmNlU1ZHID0gIk1lbW9yeUNhY2hlLlNWRyI7CiBNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1v
cnlUeXBlczo6Q2FjaGVkUmVzb3VyY2VTaGFkZXIgPSAiTWVtb3J5Q2FjaGUuU2hhZGVyIjsKIE1l
bW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpDYWNoZWRSZXNvdXJjZVhTTFQgPSAi
TWVtb3J5Q2FjaGUuWFNMVCI7CiAKLU1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVz
OjpFeHRlcm5hbFJlc291cmNlcyA9ICJKU0V4dGVybmFsUmVzb3VyY2VzIjsKIE1lbW9yeU9iamVj
dFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpFeHRlcm5hbFN0cmluZ3MgPSAiSlNFeHRlcm5hbFJl
c291cmNlcy5TdHJpbmdzIjsKIE1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpF
eHRlcm5hbEFycmF5cyA9ICJKU0V4dGVybmFsUmVzb3VyY2VzLkFycmF5cyI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oCmluZGV4IGMz
MTc5OWJhYTVmNzE3YTUyZTI1ODBiNTI1Mjg5ZjRlMTVlNmI5ZmMuLjBiY2YwOWRkZTk1YWZhMmVk
YmM5NDVlNGM0ZDdmOGVlNGQwMWEwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dl
YkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtNDEsMTIgKzQxLDEwIEBAIHVzaW5nIFdU
Rjo6TWVtb3J5T2JqZWN0VHlwZTsKIAogY2xhc3MgV2ViQ29yZU1lbW9yeVR5cGVzIDogcHVibGlj
IFBsYXRmb3JtTWVtb3J5VHlwZXMgewogcHVibGljOgotICAgIHN0YXRpYyBNZW1vcnlPYmplY3RU
eXBlIFBhZ2U7CiAgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgRE9NOwogICAgIHN0YXRpYyBN
ZW1vcnlPYmplY3RUeXBlIENTUzsKICAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBCaW5kaW5n
OwogCi0gICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgTWVtb3J5Q2FjaGU7CiAgICAgc3RhdGlj
IE1lbW9yeU9iamVjdFR5cGUgTWVtb3J5Q2FjaGVTdHJ1Y3R1cmVzOwogICAgIHN0YXRpYyBNZW1v
cnlPYmplY3RUeXBlIENhY2hlZFJlc291cmNlOwogICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBl
IENhY2hlZFJlc291cmNlUmF3OwpAQCAtNTgsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IE1lbW9yeU9iamVjdFR5cGUgQ2FjaGVkUmVzb3VyY2VTaGFkZXI7CiAgICAgc3RhdGljIE1lbW9y
eU9iamVjdFR5cGUgQ2FjaGVkUmVzb3VyY2VYU0xUOwogCi0gICAgc3RhdGljIE1lbW9yeU9iamVj
dFR5cGUgRXh0ZXJuYWxSZXNvdXJjZXM7CiAgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgRXh0
ZXJuYWxTdHJpbmdzOwogICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIEV4dGVybmFsQXJyYXlz
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwCmluZGV4IDcyZmI5ZDgxODc2ZDVmMzY4ZTNiMjk4MDhhYzA1Y2FjZDhlZmIyYTkuLmUw
ZGNmZDMyMzJhMjI4NjFkZWM4YTE1ODJjNWYwODZlZDk3OGZjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNTYsNiArNTYs
NyBAQAogI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25BcnJheUJ1ZmZlclZp
ZXcuaD4KKyNpbmNsdWRlIDx3dGYvTm9uQ29weWluZ1NvcnQuaD4KICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC03MCw2ICs3MSw3IEBAIHVzaW5nIFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpNZW1vcnk6
OlN0cmluZ1N0YXRpc3RpY3M7CiAKIC8vIFVzZSBhIHR5cGUgYWxpYXMgaW5zdGVhZCBvZiAndXNp
bmcnIGhlcmUgd2hpY2ggd291bGQgY2F1c2UgYSBjb25mbGljdCBvbiBNYWMuCiB0eXBlZGVmIFdl
YkNvcmU6OlR5cGVCdWlsZGVyOjpNZW1vcnk6Ok1lbW9yeUJsb2NrIEluc3BlY3Rvck1lbW9yeUJs
b2NrOwordHlwZWRlZiBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5
QmxvY2s+IEluc3BlY3Rvck1lbW9yeUJsb2NrczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC05Myw3OCArOTUsNjEgQEAgY2xhc3MgTWVtb3J5VXNhZ2VTdGF0c0dlbmVyYXRvciB7CiBwdWJs
aWM6CiAgICAgTWVtb3J5VXNhZ2VTdGF0c0dlbmVyYXRvcihNZW1vcnlJbnN0cnVtZW50YXRpb25D
bGllbnRJbXBsKiBjbGllbnQpIDogbV9jbGllbnQoY2xpZW50KSB7IH0KIAotICAgIHZvaWQgZHVt
cChUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBjaGlsZHJlbikKKyAg
ICB2b2lkIGR1bXAoSW5zcGVjdG9yTWVtb3J5QmxvY2tzKiBjaGlsZHJlbikKICAgICB7Ci0gICAg
ICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTWVtb3J5Q2FjaGUoKSk7Ci0gICAg
ICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yUGFnZSgpKTsKLSAgICAgICAgY2hp
bGRyZW4tPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JFeHRlcm5hbFJlc291cmNlcygpKTsKKyAgICAg
ICAgbV9zaXplc01hcCA9IG1fY2xpZW50LT5zaXplc01hcCgpOwogCi0gICAgICAgIGFkZE1lbW9y
eUluc3RydW1lbnRhdGlvbkRlYnVnRGF0YShjaGlsZHJlbik7Ci0gICAgfQorICAgICAgICBWZWN0
b3I8U3RyaW5nPiBvYmplY3RUeXBlczsKKyAgICAgICAgb2JqZWN0VHlwZXMuYXBwZW5kUmFuZ2Uo
bV9zaXplc01hcC5rZXlzKCkuYmVnaW4oKSwgbV9zaXplc01hcC5rZXlzKCkuZW5kKCkpOwogCi1w
cml2YXRlOgotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGJ1aWxkT2JqZWN0
Rm9yTWVtb3J5Q2FjaGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9
IDA7CisgICAgICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBvYmpl
Y3RUeXBlcy5iZWdpbigpOyBpICE9IG9iamVjdFR5cGVzLmVuZCgpOyArK2kpCisgICAgICAgICAg
ICB1cGRhdGVQYXJlbnRTaXplcygqaSwgbV9zaXplc01hcC5nZXQoKmkpKTsKIAotICAgICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVu
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0g
ICAgICAgIHRvdGFsU2l6ZSArPSBhZGRNZW1vcnlCbG9ja0ZvcihjaGlsZHJlbi5nZXQoKSwgV2Vi
Q29yZU1lbW9yeVR5cGVzOjpNZW1vcnlDYWNoZVN0cnVjdHVyZXMpOwotICAgICAgICB0b3RhbFNp
emUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBl
czo6Q2FjaGVkUmVzb3VyY2VSYXcpOwotICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5Qmxv
Y2tGb3IoY2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6Q2FjaGVkUmVzb3VyY2VD
U1MpOwotICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0
KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6Q2FjaGVkUmVzb3VyY2VGb250KTsKLSAgICAgICAgdG90
YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkNhY2hlZFJlc291cmNlSW1hZ2UpOwotICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVt
b3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6Q2FjaGVkUmVz
b3VyY2VTY3JpcHQpOwotICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hp
bGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6Q2FjaGVkUmVzb3VyY2VTVkcpOwotICAg
ICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIFdlYkNv
cmVNZW1vcnlUeXBlczo6Q2FjaGVkUmVzb3VyY2VTaGFkZXIpOwotICAgICAgICB0b3RhbFNpemUg
Kz0gYWRkTWVtb3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6
Q2FjaGVkUmVzb3VyY2VYU0xUKTsKLQotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGJsb2NrID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoV2ViQ29y
ZU1lbW9yeVR5cGVzOjpNZW1vcnlDYWNoZSk7Ci0gICAgICAgIGJsb2NrLT5zZXRTaXplKHRvdGFs
U2l6ZSk7Ci0gICAgICAgIGJsb2NrLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOwot
ICAgICAgICByZXR1cm4gYmxvY2sucmVsZWFzZSgpOwotICAgIH0KKyAgICAgICAgb2JqZWN0VHlw
ZXMuY2xlYXIoKTsKKyAgICAgICAgb2JqZWN0VHlwZXMuYXBwZW5kUmFuZ2UobV9zaXplc01hcC5r
ZXlzKCkuYmVnaW4oKSwgbV9zaXplc01hcC5rZXlzKCkuZW5kKCkpOworICAgICAgICBub25Db3B5
aW5nU29ydChvYmplY3RUeXBlcy5iZWdpbigpLCBvYmplY3RUeXBlcy5lbmQoKSwgc3RyaW5nQ29t
cGFyZSk7CiAKLSAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBidWlsZE9iamVj
dEZvclBhZ2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7Cisg
ICAgICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgICAgIHdoaWxlIChpbmRleCA8IG9iamVjdFR5
cGVzLnNpemUoKSkKKyAgICAgICAgICAgIGluZGV4ID0gYnVpbGRPYmplY3RGb3JJbmRleChpbmRl
eCwgb2JqZWN0VHlwZXMsIGNoaWxkcmVuKTsKIAotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IGRvbUNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6
OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgICAgIHRvdGFsU2l6
ZSArPSBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgV2ViQ29yZU1lbW9yeVR5
cGVzOjpET00pOwotICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hp
bGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6SW1hZ2UpOwotICAgICAgICB0b3RhbFNp
emUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlU
eXBlczo6Q1NTKTsKLSAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNo
aWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgICAgICB0b3Rh
bFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoZG9tQ2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1v
cnlUeXBlczo6TG9hZGVyKTsKLQotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+
IGRvbSA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKFdlYkNvcmVNZW1v
cnlUeXBlczo6UGFnZSk7Ci0gICAgICAgIGRvbS0+c2V0U2l6ZSh0b3RhbFNpemUpOwotICAgICAg
ICBkb20tPnNldENoaWxkcmVuKGRvbUNoaWxkcmVuLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVy
biBkb20ucmVsZWFzZSgpOworICAgICAgICBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0Rh
dGEoY2hpbGRyZW4pOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+IGJ1aWxkT2JqZWN0Rm9yRXh0ZXJuYWxSZXNvdXJjZXMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgc2l6ZV90IHRvdGFsU2l6ZSA9IDA7Citwcml2YXRlOgorICAgIHN0YXRpYyBib29sIHN0cmlu
Z0NvbXBhcmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIFdURjo6
Y29kZVBvaW50Q29tcGFyZShhLCBiKSA8IDA7IH0KIAotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiA+IHJlc291cmNlc0NoaWxkcmVuID0gVHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7Ci0gICAgICAg
IHRvdGFsU2l6ZSArPSBhZGRNZW1vcnlCbG9ja0ZvcihyZXNvdXJjZXNDaGlsZHJlbi5nZXQoKSwg
V2ViQ29yZU1lbW9yeVR5cGVzOjpFeHRlcm5hbFN0cmluZ3MpOwotICAgICAgICB0b3RhbFNpemUg
Kz0gYWRkTWVtb3J5QmxvY2tGb3IocmVzb3VyY2VzQ2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1v
cnlUeXBlczo6RXh0ZXJuYWxBcnJheXMpOworICAgIHZvaWQgdXBkYXRlUGFyZW50U2l6ZXMoU3Ry
aW5nIG9iamVjdFR5cGUsIGNvbnN0IHNpemVfdCBzaXplKQorICAgIHsKKyAgICAgICAgLy8gRG8g
bm90IGluY3JlbWVudCBwYXJlbnRzJyBzaXplcyB3aXRoICd1c2VkJyB2YWx1ZXMuCisgICAgICAg
IC8vIEl0IGlzIG5vdCBhbGxvY2F0ZWQgc2l6ZSBidXQgdXNlZCBzaXplLgorICAgICAgICBpZiAo
b2JqZWN0VHlwZS5lbmRzV2l0aCgiLnVzZWQiLCBmYWxzZSkpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZXNvdXJjZXMgPSBJbnNw
ZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZShXZWJDb3JlTWVtb3J5VHlwZXM6OkV4
dGVybmFsUmVzb3VyY2VzKTsKLSAgICAgICAgcmVzb3VyY2VzLT5zZXRTaXplKHRvdGFsU2l6ZSk7
Ci0gICAgICAgIHJlc291cmNlcy0+c2V0Q2hpbGRyZW4ocmVzb3VyY2VzQ2hpbGRyZW4ucmVsZWFz
ZSgpKTsKLSAgICAgICAgcmV0dXJuIHJlc291cmNlcy5yZWxlYXNlKCk7CisgICAgICAgIGZvciAo
c2l6ZV90IGRvdFBvc2l0aW9uID0gb2JqZWN0VHlwZS5yZXZlcnNlRmluZCgnLicpOyBkb3RQb3Np
dGlvbiAhPSBub3RGb3VuZDsgZG90UG9zaXRpb24gPSBvYmplY3RUeXBlLnJldmVyc2VGaW5kKCcu
JywgZG90UG9zaXRpb24pKSB7CisgICAgICAgICAgICBvYmplY3RUeXBlID0gb2JqZWN0VHlwZS5z
dWJzdHJpbmcoMCwgZG90UG9zaXRpb24pOworICAgICAgICAgICAgVHlwZU5hbWVUb1NpemVNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX3NpemVzTWFwLmFkZChvYmplY3RUeXBlLCBzaXplKTsKKyAg
ICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSArPSBzaXplOworICAgICAgICB9CiAgICAgfQogCi0gICAgc2l6ZV90
IGFkZE1lbW9yeUJsb2NrRm9yKFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9j
az4qIGFycmF5LCBNZW1vcnlPYmplY3RUeXBlIHR5cGVOYW1lKSBjb25zdAorICAgIHNpemVfdCBi
dWlsZE9iamVjdEZvckluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG9i
amVjdFR5cGVzLCBJbnNwZWN0b3JNZW1vcnlCbG9ja3MqIGFycmF5KQogICAgIHsKLSAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZXN1bHQgPSBJbnNwZWN0b3JNZW1vcnlCbG9j
azo6Y3JlYXRlKCkuc2V0TmFtZSh0eXBlTmFtZSk7Ci0gICAgICAgIHNpemVfdCBzaXplID0gbV9j
bGllbnQtPnRvdGFsU2l6ZSh0eXBlTmFtZSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0U2l6ZShzaXpl
KTsKLSAgICAgICAgYXJyYXktPmFkZEl0ZW0ocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHNpemU7
CisgICAgICAgIFN0cmluZyB0eXBlTmFtZSA9IG9iamVjdFR5cGVzW2luZGV4XTsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBibG9jayA9IEluc3BlY3Rvck1lbW9yeUJsb2Nr
OjpjcmVhdGUoKS5zZXROYW1lKHR5cGVOYW1lKTsKKyAgICAgICAgYmxvY2stPnNldFNpemUobV9z
aXplc01hcC5nZXQodHlwZU5hbWUpKTsKKyAgICAgICAgYXJyYXktPmFkZEl0ZW0oYmxvY2spOwor
ICAgICAgICArK2luZGV4OworICAgICAgICB3aGlsZSAoaW5kZXggPCBvYmplY3RUeXBlcy5zaXpl
KCkgJiYgb2JqZWN0VHlwZXNbaW5kZXhdLnN0YXJ0c1dpdGgodHlwZU5hbWUpKSB7CisgICAgICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1l
bW9yeUJsb2Nrczo6Y3JlYXRlKCk7CisgICAgICAgICAgICBpbmRleCA9IGJ1aWxkT2JqZWN0Rm9y
SW5kZXgoaW5kZXgsIG9iamVjdFR5cGVzLCBjaGlsZHJlbi5nZXQoKSk7CisgICAgICAgICAgICBi
bG9jay0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gaW5kZXg7CiAgICAgfQogCi0gICAgdm9pZCBhZGRNZW1vcnlJbnN0cnVtZW50YXRp
b25EZWJ1Z0RhdGEoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogY2hp
bGRyZW4pCisgICAgdm9pZCBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEoSW5zcGVj
dG9yTWVtb3J5QmxvY2tzKiBjaGlsZHJlbikKICAgICB7CiAgICAgICAgIGlmIChtX2NsaWVudC0+
Y2hlY2tJbnN0cnVtZW50ZWRPYmplY3RzKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gdG90YWxJbnN0cnVtZW50ZWQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6
Y3JlYXRlKCkuc2V0TmFtZSgiSW5zdHJ1bWVudGVkT2JqZWN0c0NvdW50Iik7CkBAIC0xNzksNiAr
MTY0LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGll
bnRJbXBsKiBtX2NsaWVudDsKKyAgICBUeXBlTmFtZVRvU2l6ZU1hcCBtX3NpemVzTWFwOwogfTsK
IAogU3RyaW5nIG5vZGVOYW1lKE5vZGUqIG5vZGUpCkBAIC00OTksNyArNDg1LDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGpzSGVhcEluZm8oKQogICAgIFJlZlB0
cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4ganNIZWFwQWxsb2NhdGVkID0gSW5zcGVjdG9yTWVtb3J5
QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0hlYXBBbGxvY2F0ZWQp
OwogICAgIGpzSGVhcEFsbG9jYXRlZC0+c2V0U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGluZm8udG90
YWxKU0hlYXBTaXplKSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
ck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1l
bW9yeUJsb2NrPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1lbW9yeUJsb2Nrczo6Y3Jl
YXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBqc0hlYXBVc2VkID0gSW5z
cGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0hl
YXBVc2VkKTsKICAgICBqc0hlYXBVc2VkLT5zZXRTaXplKHN0YXRpY19jYXN0PGludD4oaW5mby51
c2VkSlNIZWFwU2l6ZSkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGpzSGVhcFVzZWQpOwpAQCAt
NTE1LDcgKzUwMSw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBy
ZW5kZXJUcmVlSW5mbyhQYWdlKiBwYWdlKQogICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gcmVuZGVyVHJlZUFsbG9jYXRlZCA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5z
ZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6cmVuZGVyVHJlZUFsbG9jYXRlZCk7CiAgICAgcmVuZGVy
VHJlZUFsbG9jYXRlZC0+c2V0U2l6ZShhcmVuYVNpemUuYWxsb2NhdGVkKTsKIAotICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1lbW9yeUJs
b2Nrczo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZW5kZXJU
cmVlVXNlZCA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJs
b2NrTmFtZTo6cmVuZGVyVHJlZVVzZWQpOwogICAgIHJlbmRlclRyZWVVc2VkLT5zZXRTaXplKGFy
ZW5hU2l6ZS50cmVlU2l6ZSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZVVzZWQp
OwpAQCAtNTg5LDcgKzU3NSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3REb21UcmVlSW5mbyhQYWdl
KiBwYWdlLCBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsJiBtZW1vcnlJbnN0CiAgICAgZG9tVHJl
ZXNJdGVyYXRvci52aXNpdE1lbW9yeUNhY2hlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFBsYXRm
b3JtQ29tcG9uZW50c0luZm8oUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9y
TWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4pCitzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNvbXBvbmVu
dHNJbmZvKFBhc3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbikKIHsKICAg
ICBWZWN0b3I8TWVtb3J5VXNhZ2VTdXBwb3J0OjpDb21wb25lbnRJbmZvPiBjb21wb25lbnRzOwog
ICAgIE1lbW9yeVVzYWdlU3VwcG9ydDo6bWVtb3J5VXNhZ2VCeUNvbXBvbmVudHMoY29tcG9uZW50
cyk7CkBAIC02MTksNyArNjA1LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJv
Y2Vzc01lbW9yeURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBNZW1v
cnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudChh
bGxvY2F0ZWRPYmplY3RzLmlzRW1wdHkoKSA/IDAgOiAmYWxsb2NhdGVkT2JqZWN0cyk7CiAgICAg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbCBtZW1vcnlJbnN0cnVtZW50YXRpb24oJm1lbW9yeUlu
c3RydW1lbnRhdGlvbkNsaWVudCk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvck1lbW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvck1lbW9yeUJsb2NrPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJs
b2Nrcz4gY2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOwogICAgIGNo
aWxkcmVuLT5hZGRJdGVtKGpzSGVhcEluZm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVu
ZGVyVHJlZUluZm8obV9wYWdlKSk7IC8vIEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAg
ICAgY29sbGVjdERvbVRyZWVJbmZvKG1fcGFnZSwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsgLy8g
RklYTUU6IGNvbGxlY3QgZm9yIGFsbCBwYWdlcz8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcAppbmRleCAyNDljYjE2MGQy
MzQ3ZThhYmFlY2ZjNTFmMDRjMDk1YzcwNzFlYjU1Li4xNGRhYmVhMmU1NmNiYWE2NmNjMmZlY2Fj
ODFmMWFmMTFmMmI1ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuY3BwCkBAIC0zNCw5ICszNCwyNSBAQAogCiAjaW5j
bHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1R5cGVOYW1lVG9TaXplTWFwIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudElt
cGw6OnNpemVzTWFwKCkgY29uc3QKK3sKKyAgICAvLyBUeXBlVG9TaXplTWFwIHVzZXMgY29uc3Qg
Y2hhciogYXMgdGhlIGtleS4KKyAgICAvLyBUaHVzIGl0IGNvdWxkIGhhcHBlbiB0aGF0IHdlIGhh
dmUgdHdvIGRpZmZlcmVudCBrZXlzIHdpdGggZXF1YWwgc3RyaW5nLgorICAgIFR5cGVOYW1lVG9T
aXplTWFwIHNpemVzTWFwOworICAgIGZvciAoVHlwZVRvU2l6ZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aSA9IG1fdG90YWxTaXplcy5iZWdpbigpOyBpICE9IG1fdG90YWxTaXplcy5lbmQoKTsgKytpKSB7
CisgICAgICAgIFN0cmluZyBvYmplY3RUeXBlKGktPmtleSk7CisgICAgICAgIFR5cGVOYW1lVG9T
aXplTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gc2l6ZXNNYXAuYWRkKG9iamVjdFR5cGUsIGktPnZh
bHVlKTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgKz0gaS0+dmFsdWU7CisgICAgfQorCisgICAgcmV0dXJuIHNpemVz
TWFwOworfQorCiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OmNvdW50T2Jq
ZWN0U2l6ZShNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQogewogICAg
IEFTU0VSVChvYmplY3RUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oCmluZGV4IDNiYTIwY2VjYjU0NDhjNTRhZTA5NTY5
NGYzMmFiYjFmYjFjY2Q5MjcuLjQwZTI1ZTc3NTFiYzdmMzlkODAzNzhhZjIyZTBmZGU5MzI0YTAx
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50
YXRpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1l
bnRhdGlvbkltcGwuaApAQCAtMzcsMTIgKzM3LDE0IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgV1RG
OjpNZW1vcnlPYmplY3RUeXBlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgSGFz
aFNldDxjb25zdCB2b2lkKj4gVmlzaXRlZE9iamVjdHM7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5n
LCBzaXplX3Q+IFR5cGVOYW1lVG9TaXplTWFwOwogCiBjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRp
b25DbGllbnRJbXBsIDogcHVibGljIFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50IHsK
IHB1YmxpYzoKQEAgLTcyLDYgKzc0LDggQEAgcHVibGljOgogICAgICAgICAgICAgbV90b3RhbFNp
emVzLmNhcGFjaXR5KCkgKiBzaXplb2YoVHlwZVRvU2l6ZU1hcDo6VmFsdWVUeXBlKTsKICAgICB9
CiAKKyAgICBUeXBlTmFtZVRvU2l6ZU1hcCBzaXplc01hcCgpIGNvbnN0OworCiAgICAgYm9vbCBj
aGVja0luc3RydW1lbnRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG9jYXRlZE9iamVj
dHM7IH0KICAgICBzaXplX3QgdmlzaXRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3Zpc2l0
ZWRPYmplY3RzLnNpemUoKTsgfQogICAgIHNpemVfdCB0b3RhbENvdW50ZWRPYmplY3RzKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbENvdW50ZWRPYmplY3RzOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168556</attachid>
            <date>2012-10-13 09:19:19 -0700</date>
            <delta_ts>2012-10-14 23:14:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99186-20121013201813.patch</filename>
            <type>text/plain</type>
            <size>16501</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU1MDdhZDU2ZDYxYzE3
MDUzZjgyYjkwZDk5NDNiNjVmMWEyNTBiMy4uNzg2OWI2MDBkZDU3ZjNlMGI0N2E4MzFhN2RiYjY2
YmYwZTg0YzMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTEwLTEyICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUkgcmVtb3ZlIGhhbmQgbWFkZSBvYmplY3QgYnVpbGRlcnMgd2l0aCBhdXRvbWF0aWMg
YnVpbGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk5MTg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
T2xkIGJ1aWxkZXJzIHdlcmUgcmVwbGFjZWQgd2l0aCBzaW5nbGUgYXV0b21hdGljIGJ1aWxkZXIu
CisgICAgICAgIEl0IGRvZXMgdGhlIG5leHQgdGhpbmdzOgorICAgICAgICBhKSBkZWR1cGxpY2F0
ZXMgZW50cmllcyBpbiB0aGUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50J3MgbWFwIGFuZCBj
b252ZXJ0cyBvYmplY3RUeXBlIHBvaW50ZXJzIHRvIFN0cmluZzsKKyAgICAgICAgYikgY3JlYXRl
cyBwYXJlbnQgZW50cmllcyBhbmQgYXNzaWducyB0aGVpciBhZ2dyZWdhdGVkIHNpemVzOworICAg
ICAgICBjKSBjcmVhdGVzIHRoZSBoaWVyYXJjaHkgb2YgTWVtb3J5QmxvY2tzIHJlY3Vyc2l2ZWx5
LgorCisgICAgICAgICogZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmVNZW1vcnlUeXBlcyk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6anNIZWFwSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJUcmVlSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjphZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvck1lbW9yeUFnZW50OjpnZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0
aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsOjpzaXpl
c01hcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChNZW1vcnlJ
bnN0cnVtZW50YXRpb25DbGllbnRJbXBsKToKKwogMjAxMi0xMC0xMyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBkZWFkIGNvZGUgaW4gTm9kZS5pZGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmNwcAppbmRleCBhNTEwZTBjNGIwOWE2ODUwM2ZjMjAyMDgwODFkMTdjYjc2MTU4YzAwLi42ZWRj
NTM5Nzk4ZDI1MTFmNTI5ZDkzYmFhY2MyYjJhMzNkOTFjOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMywxMiAr
MzMsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NZW1vcnlPYmplY3RUeXBlIFdlYkNv
cmVNZW1vcnlUeXBlczo6UGFnZSA9ICJQYWdlIjsKIE1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1l
bW9yeVR5cGVzOjpET00gPSAiUGFnZS5ET00iOwogTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVt
b3J5VHlwZXM6OkNTUyA9ICJQYWdlLkNTUyI7CiBNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1v
cnlUeXBlczo6QmluZGluZyA9ICJQYWdlLkJpbmRpbmciOwogCi1NZW1vcnlPYmplY3RUeXBlIFdl
YkNvcmVNZW1vcnlUeXBlczo6TWVtb3J5Q2FjaGUgPSAiTWVtb3J5Q2FjaGUiOwogTWVtb3J5T2Jq
ZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6Ok1lbW9yeUNhY2hlU3RydWN0dXJlcyA9ICJNZW1v
cnlDYWNoZS5JbnRlcm5hbFN0cnVjdHVyZXMiOwogTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVt
b3J5VHlwZXM6OkNhY2hlZFJlc291cmNlID0gIk1lbW9yeUNhY2hlLlJlc291cmNlIjsKIE1lbW9y
eU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpDYWNoZWRSZXNvdXJjZVJhdyA9ICJNZW1v
cnlDYWNoZS5SYXdSZXNvdXJjZSI7CkBAIC01MCw3ICs0OCw2IEBAIE1lbW9yeU9iamVjdFR5cGUg
V2ViQ29yZU1lbW9yeVR5cGVzOjpDYWNoZWRSZXNvdXJjZVNWRyA9ICJNZW1vcnlDYWNoZS5TVkci
OwogTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291cmNlU2hh
ZGVyID0gIk1lbW9yeUNhY2hlLlNoYWRlciI7CiBNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1v
cnlUeXBlczo6Q2FjaGVkUmVzb3VyY2VYU0xUID0gIk1lbW9yeUNhY2hlLlhTTFQiOwogCi1NZW1v
cnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBlczo6RXh0ZXJuYWxSZXNvdXJjZXMgPSAiSlNF
eHRlcm5hbFJlc291cmNlcyI7CiBNZW1vcnlPYmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBlczo6
RXh0ZXJuYWxTdHJpbmdzID0gIkpTRXh0ZXJuYWxSZXNvdXJjZXMuU3RyaW5ncyI7CiBNZW1vcnlP
YmplY3RUeXBlIFdlYkNvcmVNZW1vcnlUeXBlczo6RXh0ZXJuYWxBcnJheXMgPSAiSlNFeHRlcm5h
bFJlc291cmNlcy5BcnJheXMiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2Vi
Q29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCBjMzE3OTliYWE1ZjcxN2E1MmUyNTgwYjUyNTI4
OWY0ZTE1ZTZiOWZjLi4wYmNmMDlkZGU5NWFmYTJlZGJjOTQ1ZTRjNGQ3ZjhlZTRkMDFhMDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTQxLDEyICs0MSwxMCBAQCB1c2luZyBXVEY6Ok1lbW9yeU9iamVjdFR5cGU7CiAKIGNs
YXNzIFdlYkNvcmVNZW1vcnlUeXBlcyA6IHB1YmxpYyBQbGF0Zm9ybU1lbW9yeVR5cGVzIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBQYWdlOwogICAgIHN0YXRpYyBNZW1v
cnlPYmplY3RUeXBlIERPTTsKICAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDU1M7CiAgICAg
c3RhdGljIE1lbW9yeU9iamVjdFR5cGUgQmluZGluZzsKIAotICAgIHN0YXRpYyBNZW1vcnlPYmpl
Y3RUeXBlIE1lbW9yeUNhY2hlOwogICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIE1lbW9yeUNh
Y2hlU3RydWN0dXJlczsKICAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJj
ZTsKICAgICBzdGF0aWMgTWVtb3J5T2JqZWN0VHlwZSBDYWNoZWRSZXNvdXJjZVJhdzsKQEAgLTU4
LDcgKzU2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENhY2hlZFJl
c291cmNlU2hhZGVyOwogICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIENhY2hlZFJlc291cmNl
WFNMVDsKIAotICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIEV4dGVybmFsUmVzb3VyY2VzOwog
ICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIEV4dGVybmFsU3RyaW5nczsKICAgICBzdGF0aWMg
TWVtb3J5T2JqZWN0VHlwZSBFeHRlcm5hbEFycmF5czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCA3MmZiOWQ4MTg3NmQ1
ZjM2OGUzYjI5ODA4YWMwNWNhY2Q4ZWZiMmE5Li4xMTFiZjY4NmQ1ODI2NTY3NjkzZDczNmU5NjJh
ZmRlZWY0NjY2YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3dGYvQXJyYXlC
dWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uQXJyYXlCdWZmZXJWaWV3Lmg+CisjaW5jbHVkZSA8d3RmL05vbkNv
cHlpbmdTb3J0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzAsNiArNzEsNyBAQCB1c2lu
ZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6TWVtb3J5OjpTdHJpbmdTdGF0aXN0aWNzOwogCiAvLyBV
c2UgYSB0eXBlIGFsaWFzIGluc3RlYWQgb2YgJ3VzaW5nJyBoZXJlIHdoaWNoIHdvdWxkIGNhdXNl
IGEgY29uZmxpY3Qgb24gTWFjLgogdHlwZWRlZiBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6TWVtb3J5
OjpNZW1vcnlCbG9jayBJbnNwZWN0b3JNZW1vcnlCbG9jazsKK3R5cGVkZWYgV2ViQ29yZTo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiBJbnNwZWN0b3JNZW1vcnlCbG9j
a3M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTMsNzggKzk1LDY0IEBAIGNsYXNzIE1l
bW9yeVVzYWdlU3RhdHNHZW5lcmF0b3IgewogcHVibGljOgogICAgIE1lbW9yeVVzYWdlU3RhdHNH
ZW5lcmF0b3IoTWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50SW1wbCogY2xpZW50KSA6IG1fY2xp
ZW50KGNsaWVudCkgeyB9CiAKLSAgICB2b2lkIGR1bXAoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvck1lbW9yeUJsb2NrPiogY2hpbGRyZW4pCisgICAgdm9pZCBkdW1wKEluc3BlY3Rvck1lbW9y
eUJsb2NrcyogY2hpbGRyZW4pCiAgICAgewotICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWls
ZE9iamVjdEZvck1lbW9yeUNhY2hlKCkpOwotICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWls
ZE9iamVjdEZvclBhZ2UoKSk7Ci0gICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxkT2JqZWN0
Rm9yRXh0ZXJuYWxSZXNvdXJjZXMoKSk7CisgICAgICAgIG1fc2l6ZXNNYXAgPSBtX2NsaWVudC0+
c2l6ZXNNYXAoKTsKIAotICAgICAgICBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEo
Y2hpbGRyZW4pOwotICAgIH0KKyAgICAgICAgVmVjdG9yPFN0cmluZz4gb2JqZWN0VHlwZXM7Cisg
ICAgICAgIG9iamVjdFR5cGVzLmFwcGVuZFJhbmdlKG1fc2l6ZXNNYXAua2V5cygpLmJlZ2luKCks
IG1fc2l6ZXNNYXAua2V5cygpLmVuZCgpKTsKIAotcHJpdmF0ZToKLSAgICBQYXNzUmVmUHRyPElu
c3BlY3Rvck1lbW9yeUJsb2NrPiBidWlsZE9iamVjdEZvck1lbW9yeUNhY2hlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgICAgICBmb3IgKFZlY3RvcjxT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpID0gb2JqZWN0VHlwZXMuYmVnaW4oKTsgaSAhPSBvYmpl
Y3RUeXBlcy5lbmQoKTsgKytpKQorICAgICAgICAgICAgdXBkYXRlUGFyZW50U2l6ZXMoKmksIG1f
c2l6ZXNNYXAuZ2V0KCppKSk7CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gPiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3JNZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwotICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVt
b3J5QmxvY2tGb3IoY2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6TWVtb3J5Q2Fj
aGVTdHJ1Y3R1cmVzKTsKLSAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGNo
aWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291cmNlUmF3KTsKLSAg
ICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBXZWJD
b3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291cmNlQ1NTKTsKLSAgICAgICAgdG90YWxTaXplICs9
IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNh
Y2hlZFJlc291cmNlRm9udCk7Ci0gICAgICAgIHRvdGFsU2l6ZSArPSBhZGRNZW1vcnlCbG9ja0Zv
cihjaGlsZHJlbi5nZXQoKSwgV2ViQ29yZU1lbW9yeVR5cGVzOjpDYWNoZWRSZXNvdXJjZUltYWdl
KTsKLSAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgp
LCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291cmNlU2NyaXB0KTsKLSAgICAgICAgdG90
YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkNhY2hlZFJlc291cmNlU1ZHKTsKLSAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9y
eUJsb2NrRm9yKGNoaWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291
cmNlU2hhZGVyKTsKLSAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGNoaWxk
cmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNhY2hlZFJlc291cmNlWFNMVCk7Ci0KLSAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBibG9jayA9IEluc3BlY3Rvck1lbW9y
eUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKFdlYkNvcmVNZW1vcnlUeXBlczo6TWVtb3J5Q2FjaGUp
OwotICAgICAgICBibG9jay0+c2V0U2l6ZSh0b3RhbFNpemUpOwotICAgICAgICBibG9jay0+c2V0
Q2hpbGRyZW4oY2hpbGRyZW4ucmVsZWFzZSgpKTsKLSAgICAgICAgcmV0dXJuIGJsb2NrLnJlbGVh
c2UoKTsKLSAgICB9CisgICAgICAgIG9iamVjdFR5cGVzLmNsZWFyKCk7CisgICAgICAgIG9iamVj
dFR5cGVzLmFwcGVuZFJhbmdlKG1fc2l6ZXNNYXAua2V5cygpLmJlZ2luKCksIG1fc2l6ZXNNYXAu
a2V5cygpLmVuZCgpKTsKKyAgICAgICAgbm9uQ29weWluZ1NvcnQob2JqZWN0VHlwZXMuYmVnaW4o
KSwgb2JqZWN0VHlwZXMuZW5kKCksIHN0cmluZ0NvbXBhcmUpOwogCi0gICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JNZW1vcnlCbG9jaz4gYnVpbGRPYmplY3RGb3JQYWdlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgICAgICBzaXplX3QgaW5kZXggPSAwOwor
ICAgICAgICB3aGlsZSAoaW5kZXggPCBvYmplY3RUeXBlcy5zaXplKCkpCisgICAgICAgICAgICBp
bmRleCA9IGJ1aWxkT2JqZWN0Rm9ySW5kZXgoaW5kZXgsIG9iamVjdFR5cGVzLCBjaGlsZHJlbik7
CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gPiBkb21DaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlCbG9j
az46OmNyZWF0ZSgpOwotICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5QmxvY2tGb3IoZG9t
Q2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAgdG90YWxT
aXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGRvbUNoaWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkltYWdlKTsKLSAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKGRv
bUNoaWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7Ci0gICAgICAgIHRvdGFs
U2l6ZSArPSBhZGRNZW1vcnlCbG9ja0Zvcihkb21DaGlsZHJlbi5nZXQoKSwgV2ViQ29yZU1lbW9y
eVR5cGVzOjpCaW5kaW5nKTsKLSAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9y
KGRvbUNoaWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkxvYWRlcik7Ci0KLSAgICAg
ICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBkb20gPSBJbnNwZWN0b3JNZW1vcnlCbG9j
azo6Y3JlYXRlKCkuc2V0TmFtZShXZWJDb3JlTWVtb3J5VHlwZXM6OlBhZ2UpOwotICAgICAgICBk
b20tPnNldFNpemUodG90YWxTaXplKTsKLSAgICAgICAgZG9tLT5zZXRDaGlsZHJlbihkb21DaGls
ZHJlbi5yZWxlYXNlKCkpOwotICAgICAgICByZXR1cm4gZG9tLnJlbGVhc2UoKTsKKyAgICAgICAg
YWRkTWVtb3J5SW5zdHJ1bWVudGF0aW9uRGVidWdEYXRhKGNoaWxkcmVuKTsKICAgICB9CiAKLSAg
ICBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBidWlsZE9iamVjdEZvckV4dGVybmFs
UmVzb3VyY2VzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOwor
cHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBzdHJpbmdDb21wYXJlKGNvbnN0IFN0cmluZyYgYSwg
Y29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmUoYSwgYikgPCAw
OyB9CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gPiByZXNvdXJjZXNDaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JN
ZW1vcnlCbG9jaz46OmNyZWF0ZSgpOwotICAgICAgICB0b3RhbFNpemUgKz0gYWRkTWVtb3J5Qmxv
Y2tGb3IocmVzb3VyY2VzQ2hpbGRyZW4uZ2V0KCksIFdlYkNvcmVNZW1vcnlUeXBlczo6RXh0ZXJu
YWxTdHJpbmdzKTsKLSAgICAgICAgdG90YWxTaXplICs9IGFkZE1lbW9yeUJsb2NrRm9yKHJlc291
cmNlc0NoaWxkcmVuLmdldCgpLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkV4dGVybmFsQXJyYXlzKTsK
KyAgICB2b2lkIHVwZGF0ZVBhcmVudFNpemVzKFN0cmluZyBvYmplY3RUeXBlLCBjb25zdCBzaXpl
X3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIC8vIERvIG5vdCBpbmNyZW1lbnQgcGFyZW50cycgc2l6
ZXMgd2l0aCAndXNlZCcgdmFsdWVzLgorICAgICAgICAvLyBJdCBpcyBub3QgYWxsb2NhdGVkIHNp
emUgYnV0IHVzZWQgc2l6ZS4KKyAgICAgICAgaWYgKG9iamVjdFR5cGUuZW5kc1dpdGgoIi51c2Vk
IiwgZmFsc2UpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4gcmVzb3VyY2VzID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgp
LnNldE5hbWUoV2ViQ29yZU1lbW9yeVR5cGVzOjpFeHRlcm5hbFJlc291cmNlcyk7Ci0gICAgICAg
IHJlc291cmNlcy0+c2V0U2l6ZSh0b3RhbFNpemUpOwotICAgICAgICByZXNvdXJjZXMtPnNldENo
aWxkcmVuKHJlc291cmNlc0NoaWxkcmVuLnJlbGVhc2UoKSk7Ci0gICAgICAgIHJldHVybiByZXNv
dXJjZXMucmVsZWFzZSgpOworICAgICAgICBmb3IgKHNpemVfdCBkb3RQb3NpdGlvbiA9IG9iamVj
dFR5cGUucmV2ZXJzZUZpbmQoJy4nKTsgZG90UG9zaXRpb24gIT0gbm90Rm91bmQ7IGRvdFBvc2l0
aW9uID0gb2JqZWN0VHlwZS5yZXZlcnNlRmluZCgnLicsIGRvdFBvc2l0aW9uKSkgeworICAgICAg
ICAgICAgb2JqZWN0VHlwZSA9IG9iamVjdFR5cGUuc3Vic3RyaW5nKDAsIGRvdFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIFR5cGVOYW1lVG9TaXplTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9zaXpl
c01hcC5hZGQob2JqZWN0VHlwZSwgc2l6ZSk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05l
d0VudHJ5KQorICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gc2l6ZTsK
KyAgICAgICAgfQogICAgIH0KIAotICAgIHNpemVfdCBhZGRNZW1vcnlCbG9ja0ZvcihUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+KiBhcnJheSwgTWVtb3J5T2JqZWN0VHlw
ZSB0eXBlTmFtZSkgY29uc3QKKyAgICBzaXplX3QgYnVpbGRPYmplY3RGb3JJbmRleChzaXplX3Qg
aW5kZXgsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvYmplY3RUeXBlcywgSW5zcGVjdG9yTWVtb3J5
QmxvY2tzKiBhcnJheSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gcmVzdWx0ID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUodHlwZU5h
bWUpOwotICAgICAgICBzaXplX3Qgc2l6ZSA9IG1fY2xpZW50LT50b3RhbFNpemUodHlwZU5hbWUp
OwotICAgICAgICByZXN1bHQtPnNldFNpemUoc2l6ZSk7Ci0gICAgICAgIGFycmF5LT5hZGRJdGVt
KHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBzaXplOworICAgICAgICBTdHJpbmcgdHlwZU5hbWUg
PSBvYmplY3RUeXBlc1tpbmRleF07CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9j
az4gYmxvY2sgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCkuc2V0TmFtZSh0eXBlTmFt
ZSk7CisgICAgICAgIGJsb2NrLT5zZXRTaXplKG1fc2l6ZXNNYXAuZ2V0KHR5cGVOYW1lKSk7Cisg
ICAgICAgIGFycmF5LT5hZGRJdGVtKGJsb2NrKTsKKyAgICAgICAgKytpbmRleDsKKyAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hpbGRyZW47CisgICAgICAgIHdoaWxlIChp
bmRleCA8IG9iamVjdFR5cGVzLnNpemUoKSAmJiBvYmplY3RUeXBlc1tpbmRleF0uc3RhcnRzV2l0
aCh0eXBlTmFtZSkpIHsKKyAgICAgICAgICAgIGlmICghY2hpbGRyZW4pCisgICAgICAgICAgICAg
ICAgY2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOworICAgICAgICAg
ICAgaW5kZXggPSBidWlsZE9iamVjdEZvckluZGV4KGluZGV4LCBvYmplY3RUeXBlcywgY2hpbGRy
ZW4uZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIGlmIChjaGlsZHJlbikKKyAgICAgICAgICAg
IGJsb2NrLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOworICAgICAgICByZXR1cm4g
aW5kZXg7CiAgICAgfQogCi0gICAgdm9pZCBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0Rh
dGEoVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2NrPiogY2hpbGRyZW4pCisg
ICAgdm9pZCBhZGRNZW1vcnlJbnN0cnVtZW50YXRpb25EZWJ1Z0RhdGEoSW5zcGVjdG9yTWVtb3J5
QmxvY2tzKiBjaGlsZHJlbikKICAgICB7CiAgICAgICAgIGlmIChtX2NsaWVudC0+Y2hlY2tJbnN0
cnVtZW50ZWRPYmplY3RzKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlC
bG9jaz4gdG90YWxJbnN0cnVtZW50ZWQgPSBJbnNwZWN0b3JNZW1vcnlCbG9jazo6Y3JlYXRlKCku
c2V0TmFtZSgiSW5zdHJ1bWVudGVkT2JqZWN0c0NvdW50Iik7CkBAIC0xNzksNiArMTY3LDcgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJbXBsKiBt
X2NsaWVudDsKKyAgICBUeXBlTmFtZVRvU2l6ZU1hcCBtX3NpemVzTWFwOwogfTsKIAogU3RyaW5n
IG5vZGVOYW1lKE5vZGUqIG5vZGUpCkBAIC00OTksNyArNDg4LDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yTWVtb3J5QmxvY2s+IGpzSGVhcEluZm8oKQogICAgIFJlZlB0cjxJbnNwZWN0
b3JNZW1vcnlCbG9jaz4ganNIZWFwQWxsb2NhdGVkID0gSW5zcGVjdG9yTWVtb3J5QmxvY2s6OmNy
ZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0hlYXBBbGxvY2F0ZWQpOwogICAgIGpz
SGVhcEFsbG9jYXRlZC0+c2V0U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGluZm8udG90YWxKU0hlYXBT
aXplKSk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJs
b2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9yeUJsb2Nr
Pjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3JNZW1v
cnlCbG9jaz4gPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1lbW9yeUJsb2Nrczo6Y3JlYXRlKCk7CiAg
ICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiBqc0hlYXBVc2VkID0gSW5zcGVjdG9yTWVt
b3J5QmxvY2s6OmNyZWF0ZSgpLnNldE5hbWUoTWVtb3J5QmxvY2tOYW1lOjpqc0hlYXBVc2VkKTsK
ICAgICBqc0hlYXBVc2VkLT5zZXRTaXplKHN0YXRpY19jYXN0PGludD4oaW5mby51c2VkSlNIZWFw
U2l6ZSkpOwogICAgIGNoaWxkcmVuLT5hZGRJdGVtKGpzSGVhcFVzZWQpOwpAQCAtNTE1LDcgKzUw
NCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZW5kZXJUcmVl
SW5mbyhQYWdlKiBwYWdlKQogICAgIFJlZlB0cjxJbnNwZWN0b3JNZW1vcnlCbG9jaz4gcmVuZGVy
VHJlZUFsbG9jYXRlZCA9IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1l
bW9yeUJsb2NrTmFtZTo6cmVuZGVyVHJlZUFsbG9jYXRlZCk7CiAgICAgcmVuZGVyVHJlZUFsbG9j
YXRlZC0+c2V0U2l6ZShhcmVuYVNpemUuYWxsb2NhdGVkKTsKIAotICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+ID4gY2hpbGRyZW4gPSBUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5QmxvY2s+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbiA9IEluc3BlY3Rvck1lbW9yeUJsb2Nrczo6Y3Jl
YXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2NrPiByZW5kZXJUcmVlVXNlZCA9
IEluc3BlY3Rvck1lbW9yeUJsb2NrOjpjcmVhdGUoKS5zZXROYW1lKE1lbW9yeUJsb2NrTmFtZTo6
cmVuZGVyVHJlZVVzZWQpOwogICAgIHJlbmRlclRyZWVVc2VkLT5zZXRTaXplKGFyZW5hU2l6ZS50
cmVlU2l6ZSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZVVzZWQpOwpAQCAtNTg5
LDcgKzU3OCw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3REb21UcmVlSW5mbyhQYWdlKiBwYWdlLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsJiBtZW1vcnlJbnN0CiAgICAgZG9tVHJlZXNJdGVyYXRv
ci52aXNpdE1lbW9yeUNhY2hlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFBsYXRmb3JtQ29tcG9u
ZW50c0luZm8oUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yTWVtb3J5Qmxv
Y2s+ID4gY2hpbGRyZW4pCitzdGF0aWMgdm9pZCBhZGRQbGF0Zm9ybUNvbXBvbmVudHNJbmZvKFBh
c3NSZWZQdHI8SW5zcGVjdG9yTWVtb3J5QmxvY2tzPiBjaGlsZHJlbikKIHsKICAgICBWZWN0b3I8
TWVtb3J5VXNhZ2VTdXBwb3J0OjpDb21wb25lbnRJbmZvPiBjb21wb25lbnRzOwogICAgIE1lbW9y
eVVzYWdlU3VwcG9ydDo6bWVtb3J5VXNhZ2VCeUNvbXBvbmVudHMoY29tcG9uZW50cyk7CkBAIC02
MTksNyArNjA4LDcgQEAgdm9pZCBJbnNwZWN0b3JNZW1vcnlBZ2VudDo6Z2V0UHJvY2Vzc01lbW9y
eURpc3RyaWJ1dGlvbihFcnJvclN0cmluZyosIFJlZlB0cjxJbnMKICAgICBNZW1vcnlJbnN0cnVt
ZW50YXRpb25DbGllbnRJbXBsIG1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudChhbGxvY2F0ZWRP
YmplY3RzLmlzRW1wdHkoKSA/IDAgOiAmYWxsb2NhdGVkT2JqZWN0cyk7CiAgICAgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbCBtZW1vcnlJbnN0cnVtZW50YXRpb24oJm1lbW9yeUluc3RydW1lbnRh
dGlvbkNsaWVudCk7CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1l
bW9yeUJsb2NrPiA+IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvck1lbW9y
eUJsb2NrPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hp
bGRyZW4gPSBJbnNwZWN0b3JNZW1vcnlCbG9ja3M6OmNyZWF0ZSgpOwogICAgIGNoaWxkcmVuLT5h
ZGRJdGVtKGpzSGVhcEluZm8oKSk7CiAgICAgY2hpbGRyZW4tPmFkZEl0ZW0ocmVuZGVyVHJlZUlu
Zm8obV9wYWdlKSk7IC8vIEZJWE1FOiBjb2xsZWN0IGZvciBhbGwgcGFnZXM/CiAgICAgY29sbGVj
dERvbVRyZWVJbmZvKG1fcGFnZSwgbWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsgLy8gRklYTUU6IGNv
bGxlY3QgZm9yIGFsbCBwYWdlcz8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmNwcAppbmRleCAyNDljYjE2MGQyMzQ3ZThhYmFl
Y2ZjNTFmMDRjMDk1YzcwNzFlYjU1Li4xNGRhYmVhMmU1NmNiYWE2NmNjMmZlY2FjODFmMWFmMTFm
MmI1ZmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1
bWVudGF0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUlu
c3RydW1lbnRhdGlvbkltcGwuY3BwCkBAIC0zNCw5ICszNCwyNSBAQAogCiAjaW5jbHVkZSAiTWVt
b3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K1R5cGVOYW1lVG9TaXplTWFwIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OnNpemVz
TWFwKCkgY29uc3QKK3sKKyAgICAvLyBUeXBlVG9TaXplTWFwIHVzZXMgY29uc3QgY2hhciogYXMg
dGhlIGtleS4KKyAgICAvLyBUaHVzIGl0IGNvdWxkIGhhcHBlbiB0aGF0IHdlIGhhdmUgdHdvIGRp
ZmZlcmVudCBrZXlzIHdpdGggZXF1YWwgc3RyaW5nLgorICAgIFR5cGVOYW1lVG9TaXplTWFwIHNp
emVzTWFwOworICAgIGZvciAoVHlwZVRvU2l6ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaSA9IG1fdG90
YWxTaXplcy5iZWdpbigpOyBpICE9IG1fdG90YWxTaXplcy5lbmQoKTsgKytpKSB7CisgICAgICAg
IFN0cmluZyBvYmplY3RUeXBlKGktPmtleSk7CisgICAgICAgIFR5cGVOYW1lVG9TaXplTWFwOjpB
ZGRSZXN1bHQgcmVzdWx0ID0gc2l6ZXNNYXAuYWRkKG9iamVjdFR5cGUsIGktPnZhbHVlKTsKKyAg
ICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgKz0gaS0+dmFsdWU7CisgICAgfQorCisgICAgcmV0dXJuIHNpemVzTWFwOworfQor
CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbkNsaWVudEltcGw6OmNvdW50T2JqZWN0U2l6ZShN
ZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5cGUsIHNpemVfdCBzaXplKQogewogICAgIEFTU0VSVChv
YmplY3RUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJ
bnN0cnVtZW50YXRpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5z
dHJ1bWVudGF0aW9uSW1wbC5oCmluZGV4IDNiYTIwY2VjYjU0NDhjNTRhZTA5NTY5NGYzMmFiYjFm
YjFjY2Q5MjcuLjQwZTI1ZTc3NTFiYzdmMzlkODAzNzhhZjIyZTBmZGU5MzI0YTAxODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVtZW50YXRpb25JbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbklt
cGwuaApAQCAtMzcsMTIgKzM3LDE0IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNs
dWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgV1RGOjpNZW1vcnlP
YmplY3RUeXBlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgSGFzaFNldDxjb25z
dCB2b2lkKj4gVmlzaXRlZE9iamVjdHM7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+
IFR5cGVOYW1lVG9TaXplTWFwOwogCiBjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25DbGllbnRJ
bXBsIDogcHVibGljIFdURjo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoK
QEAgLTcyLDYgKzc0LDggQEAgcHVibGljOgogICAgICAgICAgICAgbV90b3RhbFNpemVzLmNhcGFj
aXR5KCkgKiBzaXplb2YoVHlwZVRvU2l6ZU1hcDo6VmFsdWVUeXBlKTsKICAgICB9CiAKKyAgICBU
eXBlTmFtZVRvU2l6ZU1hcCBzaXplc01hcCgpIGNvbnN0OworCiAgICAgYm9vbCBjaGVja0luc3Ry
dW1lbnRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG9jYXRlZE9iamVjdHM7IH0KICAg
ICBzaXplX3QgdmlzaXRlZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3Zpc2l0ZWRPYmplY3Rz
LnNpemUoKTsgfQogICAgIHNpemVfdCB0b3RhbENvdW50ZWRPYmplY3RzKCkgY29uc3QgeyByZXR1
cm4gbV90b3RhbENvdW50ZWRPYmplY3RzOyB9Cg==
</data>
<flag name="review"
          id="181572"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>