<?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>13233</bug_id>
          
          <creation_ts>2007-03-30 13:57:09 -0700</creation_ts>
          <short_desc>Need to implement an optimizing XPath evaluator</short_desc>
          <delta_ts>2010-06-10 17:30:36 -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>XML</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>emacemac7</cc>
    
    <cc>sam</cc>
    
    <cc>sasha</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>16436</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-30 13:57:09 -0700</bug_when>
    <thetext>There are many opportunities for XPath optimization that we are still missing.

Some work is still needed on micro-optimizing our implementation. For example, it&apos;s wasteful to implement a node-set as Vector&lt;RefPtr&gt;, as nodes won&apos;t go away during evaluation anyway (except for lazily created Attr nodes).

Many ideas for higher-level optimizations can be apparently borrowed from Mozilla, see &lt;https://bugzilla.mozilla.org/show_bug.cgi?id=208172&gt; and &lt;http://www.fiveanddime.net/firefox-1.5-source/mozilla/extensions/transformiix/docs/optimized-xpath.html.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16433</commentid>
    <comment_count>1</comment_count>
      <attachid>13893</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-03-30 14:03:50 -0700</bug_when>
    <thetext>Created attachment 13893
Romeo&amp;Juliet performance test

Some XPath performance tests:

http://ejohn.org/apps/classname/xpath.html
http://www.andrewdupont.net/test/xpath/
http://www.asciiarmor.com/2004/11/13/java-xpath-10-engine-comparison-performance/

A simple JavaScript translation of the last one is attached; it could use some more attention, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110217</commentid>
    <comment_count>2</comment_count>
    <who name="Sasha Firsov">sasha</who>
    <bug_when>2009-02-19 09:44:36 -0800</bug_when>
    <thetext>At the moment the WebKit XPath evaluation is outsider among of FF,IE,Opera. 
The performance is so bad, that exclude WebKit from Web 2.0 heavy service-oriented apps. Test for 100K &quot;/root/el&quot; in &lt;root&gt;&lt;el&gt;123&lt;/el&gt;...&lt;/root&gt; takes several minutes in comparison to few seconds in other browsers. Accounting the browser freeze app looks failed. 
Accounting WekKit market share on such kind of apps, ways around will not be made and putting WebKit in row of unsupported browsers.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110222</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-19 10:00:17 -0800</bug_when>
    <thetext>Realistic tests would go a long way towards improving WebKit XPath support. Iterating a single dimensional array (If I understood you correctly, that&apos;s your example) is hardly a task for XPath. Nor would be a topic for this bug, as it&apos;s likely a target for implementation micro-optimizations, not for an optimizing evaluator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110223</commentid>
    <comment_count>4</comment_count>
    <who name="Sasha Firsov">sasha</who>
    <bug_when>2009-02-19 10:12:51 -0800</bug_when>
    <thetext>Evaluator optimizing is the subject for Iterating a single dimensional array.
And it is a task for XPath evaluator optimization. Most of apps which utilizing web services working with flat array-like data XML. Picture galleries, search engines are just simple samples. You could use their JSON incarnation, but XPath is way more usable as filters over same data.

XPath optimisation is not so critical for UI DOM navigation, where numbers are sufficient(still few times slower of other browsers).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123731</commentid>
    <comment_count>5</comment_count>
      <attachid>30812</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-31 06:25:03 -0700</bug_when>
    <thetext>Created attachment 30812
first step

Implement some optimizations:
- avoid building full NodeSets to evaluate predicates, if possible;
- optimize &quot;//&quot; if there are no context sensitive predicates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123742</commentid>
    <comment_count>6</comment_count>
      <attachid>30817</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-31 10:45:38 -0700</bug_when>
    <thetext>Created attachment 30817
Don&apos;t needlessly sort location path results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123766</commentid>
    <comment_count>7</comment_count>
      <attachid>30812</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-05-31 17:05:18 -0700</bug_when>
    <thetext>Comment on attachment 30812
first step

&gt; +            void addSubExpression(Expression* expr)
&gt; +            {
&gt; +                m_subExpressions.append(expr);
&gt; +                m_isContextNodeSensitive = m_isContextNodeSensitive || expr-&gt;m_isContextNodeSensitive;
&gt; +                m_isContextPositionSensitive = m_isContextPositionSensitive || expr-&gt;m_isContextPositionSensitive;
&gt; +                m_isContextSizeSensitive = m_isContextSizeSensitive || expr-&gt;m_isContextSizeSensitive;
&gt; +            }

How about using |= here?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123767</commentid>
    <comment_count>8</comment_count>
      <attachid>30817</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-05-31 17:07:46 -0700</bug_when>
    <thetext>Comment on attachment 30817
Don&apos;t needlessly sort location path results

&gt; +            NodeSet(const NodeSet&amp; other) : m_isSorted(other.m_isSorted), m_subtreesAreDisjoint(other.m_subtreesAreDisjoint), m_nodes(other.m_nodes) { }
&gt; +            NodeSet&amp; operator=(const NodeSet&amp; other) { m_isSorted = other.m_isSorted; m_subtreesAreDisjoint = other.m_subtreesAreDisjoint; m_nodes = other.m_nodes; return *this; }

You should instead delete these explicit definitions. The compiler defaults would work fine.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123776</commentid>
    <comment_count>9</comment_count>
      <attachid>30812</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-31 21:32:09 -0700</bug_when>
    <thetext>Comment on attachment 30812
first step

Committed revision 44306, clearing review flag.

&gt; How about using |= here?

Not sure about that - it feels strange to use a binary operation with booleans.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123779</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-05-31 21:51:32 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Not sure about that - it feels strange to use a binary operation with booleans.

I don&apos;t know why. The logical operations and binary operations both do the same thing with booleans, except for their short-circuiting properties. The binary operations aren&apos;t &quot;raw bits&quot; operations or anything like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123781</commentid>
    <comment_count>11</comment_count>
      <attachid>30817</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-05-31 22:25:52 -0700</bug_when>
    <thetext>Comment on attachment 30817
Don&apos;t needlessly sort location path results

Committed revision 44307, clearing review flag.

&gt; You should instead delete these explicit definitions. The compiler defaults
&gt; would work fine.

Done.

&gt; I don&apos;t know why. The logical operations and binary operations both do the same
&gt; thing with booleans, except for their short-circuiting properties.

It&apos;s not so good for BOOLs and Booleans, but OK, changed it when landing this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13893</attachid>
            <date>2007-03-30 14:03:50 -0700</date>
            <delta_ts>2007-03-30 14:03:50 -0700</delta_ts>
            <desc>Romeo&amp;Juliet performance test</desc>
            <filename>randj.zip</filename>
            <type>application/zip</type>
            <size>68882</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">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
NTv78S/sRhjOvCh95Zbo+v/B/24X0hQ+zdpF3cvDU5/hC3n2w7r94f/84d/Out+7rG6GX/9ZrPjg
99+9rpvGzzr56sWbye3k+sMNulD3TeYxD2125zvpZeXX2Yefr15dfBpbIz+gze+/++Xi0w2fmrpW
GqmrrPXorExJK63MvLaw+/xft32S8fxlf0D4ZG9zYA1Kt9Gf5k1ddUsnW6nRD7jOK9kIWMZVPy2q
ef3TD//zP/6nTJn9tt1flxfZ7afzdxdvvmTXb7NP11cX19n5hzfZ335+P7m43W6aH13fLermp+km
tpo//sX+jK7uvh89kKNQV85vX/qmcdJfWZ6P9qftazL89+Pqrqn7lfz6L/bEa2m7b7df+5fQ6k8X
7cyVfTvOPjZFNfNYqF+8zIjDBrHvoNntEx9dU8j3Xbap++pOdmtfdePsvqjapauyruZu1Nb22ti2
cCUT7u56P84W3uXc4d26zmSbtbK0rsse5BUOvVkX3SLzbrbIamm1SbT32q16OTD/Xc2dV1kt+/3K
VeNwuOwN2dwti3KTeI4SYyxblLMQBpn48u1m6krpcuVXC9nH8sB7J4LHXpSaON/M+q6oE9NNaTVv
Ci//yB/Yn0RLr3z1UJdoaduB7bJE2vlvHMVbWY1GvijiSjo9zt42sjiF7MPqqw/8rV5UB3z5lXRo
4VonMrn1zYOrum/NxbkIxeXet6Nrh5O1fejGLVfyw95jXx/2u8bf1c3mDzzxUcTl/jD0Khq1WdU3
bWpryf49X2GDz0TWn2WJlVs03mdXfVvM5Gy06aau5/Ni9uis7H6FC77dOuti7g/Y/rvbZPtQbDpk
0ncf1BkYZ7nr7xYyPd+exQ+Yqu3kPWpcfgvCMsu4yEF6vi664p++arci8UX2zlciQJe+4hHR39Y1
fpcvTWXOTeq8MEl85dp7edk4u62b2WIKUY/fPopwl3/e9a7J5d/PrpstpJFxdqNL3fIIWhvncjNV
OT490/5tezwMhZfDX57cZLjkpnWOi+7HduYrrz9UuW9nP928vvhwcXZ6GsYm8q7rIfbDF/YuuY+f
rt9fv/v5Yk8NajuoS0Xz00WFpdBbBi2Ez/VbK+9ni5/0J7nyGl5H+Jr9Gq6tspAe3gbRvRAhLBPB
WXVlcS+6TZXlxV1VdJvxj3/hl/eenFQin4vGFkt2lYh4kfk+k1mg9sEpiD76tqmXGQSLrGh21/T5
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
ng6eHugNEAmB3nZ64CykKDmMbWWXeG3WID4Dxy1okx8HFZ+R0hOMfB9ecUwlAtO6psDglnU88nY5
vCkANkPVcjp9d0tjPZHGTkM6ys/GODGI+dQMC5ZsQudQekeOc2BC7AI7HTGQOp0uHl6aDMWnxgOy
CZxDJevxiS3MfNIm9qiiv0IgGVDH6v6YklvqI3YhohXnFFE5jBLpfdWd6EGaezN/5zXQPrmfHlEh
FKiWceCpUFta43QwORRDslvz5RnJfYji1Ybae2HJNE0YQl81B7YeN2p2CCiWuLbEol85I4xUqsu7
JySxg9EQAvtiusxLRafXJfHlrvqtB4KmRlwlsRUZwvIj2Og1/H4buzknBJTeh2h/ahuG74ytDuR2
FIYH2nO0PQ32hqAEDOaTp2VtBkDFXszm9baudcV7faRRDZ9wje8GdJU7eo4JR+zO/Q5qF9fFJ1fr
vJFxPrHA0aLZ9DaIGaFYkm1hnG/Vzo7L8T2PNYmozrJt6RNp+wlp4XOEJYIYCMZR4YP9JCIEkuS2
mPqmOMgVGe/+Z803DmIK1jMBDCH5BMDsuv7vEPSdlQgmkymlgTErejHkRND99w1C6bNahUGZ53br
hFTQyxHj2QYCjzF5gBxjkAV1wc9OYSFSDAbux3jKwAY65wMFm9JkKNPuJlv7PCe63R8Uqk6N7dI6
hBeEqsm8OoeIQCrERipGq19NJURRbr7yy4PC1YlKQxvjeKTa3a4a7Jig7vEvsriJhIUA3VZUUV9h
1SodD38cYOLRxz82dY7ae+BpKhr1VjNuVxjVSRYv7WgQJdpLRpVS1vBQ5YfPRWp1bJ/DmH1JIyn8
8nyTL2sWG1nuieaudFoN4XH5m20wHXjOCY/QExUoJXZR149lq4wsc5yNrB7W6OvyNs3bXHMZ6yq6
cIqj0msHEGTTN8DPdccayygI0TzizDoMzCidPDk9zX788fZycpNdvL94ffvp+sPkdfbLxaebyfWH
7Pptdnt5kb2+vvr4/uL2Ivt8/em/bvDp58n795Pzq++/u7k8/6+Lm48X558uMmnj9fXHL58m7y5v
sx/+4z/+7VT+79+zV1/w3Ps32fvJq0/nn76I0Pzw+mycnX94I498/93HT9e/TN5cvMEX5ee/SS+y
dz/fXnx4dfHpXSav/d+3eOXr808fLt5NLrKri/fvpW8/f5iwm7dfvv/u8+T2Mvt48elqcoN+n2W7
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
LrHoRVBLBQYAAAAABQAFAGQBAACYCwEAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30812</attachid>
            <date>2009-05-31 06:25:03 -0700</date>
            <delta_ts>2010-06-10 17:30:36 -0700</delta_ts>
            <desc>first step</desc>
            <filename>OptimizedXPath_1.txt</filename>
            <type>text/plain</type>
            <size>40341</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTI1IEBACisyMDA5LTA1LTMxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBmYXN0L3hwYXRoL2F0dHJpYnV0ZS1ub2RlLXByZWRpY2F0ZS5odG1sCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjMzCisgICAgICAg
IE5lZWQgdG8gaW1wbGVtZW50IGFuIG9wdGltaXppbmcgWFBhdGggZXZhbHVhdG9yCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBhZGRzIHNvbWUgaW5mcmFzdHJ1Y3R1cmUgYW5kIHNpbXBsZSBvcHRpbWl6
YXRpb25zLiBOYW1lbHksCisgICAgICAgIC0gd2Ugbm93IGF2b2lkIGJ1aWxkaW5nIGEgZnVsbCBO
b2RlU2V0IGp1c3QgdG8gZXZhbHVhdGUgYSBwcmVkaWNhdGUgaW4gc29tZSBjYXNlczsKKyAgICAg
ICAgLSAiL2Rlc2NlbmRhbnQtb3Itc2VsZjo6bm9kZSgpL2NoaWxkOjoiIGlzIG9wdGltaXplZCB0
byBpdGVyYXRlIHRoZSB0cmVlIG9uY2Ugd2hlbiBwb3NzaWJsZTsKKworICAgICAgICAqIHhtbC9Y
UGF0aEV4cHJlc3Npb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpFeHByZXNz
aW9uOjpFeHByZXNzaW9uKToKKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkV4cHJlc3Npb246OmFkZFN1YkV4cHJlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkV4cHJlc3Npb246OmlzQ29udGV4dE5vZGVTZW5zaXRp
dmUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkV4cHJlc3Npb246OmlzQ29udGV4dFBvc2l0
aW9uU2Vuc2l0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpFeHByZXNzaW9uOjppc0Nv
bnRleHRTaXplU2Vuc2l0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpFeHByZXNzaW9u
OjpzZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpF
eHByZXNzaW9uOjpzZXRJc0NvbnRleHRQb3NpdGlvblNlbnNpdGl2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpYUGF0aDo6RXhwcmVzc2lvbjo6c2V0SXNDb250ZXh0U2l6ZVNlbnNpdGl2ZSk6CisgICAg
ICAgIFhQYXRoIGV4cHJlc3Npb24gbm93IGtub3dzIGl0cyByZXN1bHQgdHlwZSwgYW5kIHdoZXRo
ZXIgZXZhbHVhdGlvbiBkZXBlbmRzIG9uIGNvbnRleHQuCisKKyAgICAgICAgKiB4bWwvWFBhdGhG
dW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkxhc3Q6OnJlc3VsdFR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkxhc3Q6OkZ1bkxhc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6WFBhdGg6OkZ1blBvc2l0aW9uOjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhQYXRoOjpGdW5Qb3NpdGlvbjo6RnVuUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OkZ1bkNvdW50OjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
OjpGdW5JZDo6cmVzdWx0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTG9jYWxO
YW1lOjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5Mb2NhbE5hbWU6
OkZ1bkxvY2FsTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTmFtZXNwYWNlVVJJ
OjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5OYW1lc3BhY2VVUkk6
OkZ1bk5hbWVzcGFjZVVSSSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTmFtZTo6cmVz
dWx0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuTmFtZTo6RnVuTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuU3RyaW5nOjpyZXN1bHRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OlhQYXRoOjpGdW5TdHJpbmc6OkZ1blN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6RnVuQ29uY2F0OjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
OjpGdW5TdGFydHNXaXRoOjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpG
dW5Db250YWluczo6cmVzdWx0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuU3Vi
c3RyaW5nQmVmb3JlOjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5T
dWJzdHJpbmdBZnRlcjo6cmVzdWx0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVu
U3Vic3RyaW5nOjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5TdHJp
bmdMZW5ndGg6OnJlc3VsdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1blN0cmlu
Z0xlbmd0aDo6RnVuU3RyaW5nTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5O
b3JtYWxpemVTcGFjZTo6cmVzdWx0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVu
Tm9ybWFsaXplU3BhY2U6OkZ1bk5vcm1hbGl6ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQ
YXRoOjpGdW5UcmFuc2xhdGU6OnJlc3VsdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OkZ1bkJvb2xlYW46OnJlc3VsdFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bk5v
dDo6cmVzdWx0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuVHJ1ZTo6cmVzdWx0
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuRmFsc2U6OnJlc3VsdFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkxhbmc6OnJlc3VsdFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6WFBhdGg6OkZ1bkxhbmc6OkZ1bkxhbmcpOgorICAgICAgICAoV2ViQ29yZTo6WFBh
dGg6OkZ1bk51bWJlcjo6cmVzdWx0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVu
TnVtYmVyOjpGdW5OdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1blN1bTo6cmVz
dWx0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RnVuRmxvb3I6OnJlc3VsdFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bkNlaWxpbmc6OnJlc3VsdFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1blJvdW5kOjpyZXN1bHRUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OlhQYXRoOjpGdW5jdGlvbjo6c2V0QXJndW1lbnRzKToKKyAgICAgICAgU2V0IG9wdGlt
aXphdGlvbiBkZXRhaWxzIGZvciB0aGUgZXhwcmVzc2lvbi4gTm9ybWFsbHksIGEgZnVuY3Rpb24g
ZG9lcyBub3QgaW50cm9kdWNlIGNvbnRleHQKKyAgICAgICAgbm9kZSBzZXQgZGVwZW5kZW5jeSwg
YnV0IHNvbWUgdXNlIGNvbnRleHQgbm9kZSBhcyBkZWZhdWx0IGFyZ3VtZW50LCBvciBvdGhlcndp
c2UgdXNlIHRoZSBjb250ZXh0LgorCisgICAgICAgICogeG1sL1hQYXRoRnVuY3Rpb25zLmg6IFR3
ZWFrZWQgc3R5bGUuCisKKyAgICAgICAgKiB4bWwvWFBhdGhQYXRoLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhQYXRoOjpGaWx0ZXI6OkZpbHRlcik6IEEgZmlsdGVyIGlzIGFzIGNvbnRleHQgbm9k
ZSBzZXQgc2Vuc2l0aXZlIGFzIGl0cyBleHByZXNzaW9uIGlzLgorICAgICAgICAoV2ViQ29yZTo6
WFBhdGg6OkxvY2F0aW9uUGF0aDo6TG9jYXRpb25QYXRoKTogQSBsb2NhdGlvbiBwYXRoIGNhbiBv
bmx5IGJlIGNvbnRleHQgbm9kZSBzZW5zaXRpdmUsCisgICAgICAgIGFuZCBvbmx5IGlmIHRoZSBw
YXRoIHJlbGF0aXZlLgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0aW9uUGF0aDo6YXBw
ZW5kU3RlcCk6IEludm9rZSBjb21waWxlLXRpbWUgU3RlcCBvcHRpbWl6YXRpb25zLgorICAgICAg
ICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0aW9uUGF0aDo6aW5zZXJ0Rmlyc3RTdGVwKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6UGF0aDo6UGF0aCk6IEEgcGF0aCBpcyBhcyBjb250
ZXh0IG5vZGUgc2V0IHNlbnNpdGl2ZSBhcyBpdHMgZmlsdGVyIGlzLgorCisgICAgICAgICogeG1s
L1hQYXRoUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZpbHRlcjo6cmVzdWx0VHlw
ZSk6IFJlc3VsdCB0eXBlIG9mIGEgZmlsdGVyIGlzIHRoZSBzYW1lIGFzIG9mIGl0cyBleHByZXNz
aW9uCisgICAgICAgICh1c2VmdWwgZmlsdGVycyByZXR1cm4gTm9kZVNldHMsIG9mIGNvdXJzZSku
CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6TG9jYXRpb25QYXRoOjpzZXRBYnNvbHV0ZSk6IEFu
IGFic29sdXRlIGxvY2F0aW9uIHBhdGggaWYgY29udGV4dCBub2RlIHNldAorICAgICAgICBpbnNl
bnNpdGl2ZS4KKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2NhdGlvblBhdGg6OnJlc3VsdFR5
cGUpOiBBIHBhdGgncyByZXN1bHQgaXMgYWx3YXlzIGEgbm9kZSBzZXQuCisgICAgICAgIChXZWJD
b3JlOjpYUGF0aDo6UGF0aDo6cmVzdWx0VHlwZSk6IERpdHRvLgorCisgICAgICAgICogeG1sL1hQ
YXRoUHJlZGljYXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6TnVtYmVyOjpyZXN1bHRU
eXBlKTogUmV0dXJuIGEgcHJvcGVyIHJlc3VsdCB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6WFBh
dGg6OlN0cmluZ0V4cHJlc3Npb246OnJlc3VsdFR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpOZWdhdGl2ZTo6cmVzdWx0VHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6Ok51bWVyaWNPcDo6cmVzdWx0VHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OkVxVGVzdE9wOjpyZXN1bHRUeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6TG9naWNhbE9wOjpyZXN1bHRUeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6VW5pb246OnJlc3VsdFR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlhQ
YXRoOjpQcmVkaWNhdGU6OmlzQ29udGV4dFBvc2l0aW9uU2Vuc2l0aXZlKTogQSBwcmVkaWNhdGUg
Y2FuIGJlIGNvbnRleHQgcG9zaXRpb24KKyAgICAgICAgc2Vuc2l0aXZlIGV2ZW4gaWYgaXRzIGV4
cHJlc3Npb24gaXMgbm90LCBiZWNhdXNlIGUuZy4gWzVdIGlzIGEgc2hvcnRjdXQgZm9yIFtwb3Np
dGlvbigpPTVdLgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlByZWRpY2F0ZTo6aXNDb250ZXh0
U2l6ZVNlbnNpdGl2ZSk6IFRoaXMgbWF0Y2hlcyBleHByZXNzaW9uIHJlc3VsdC4KKworICAgICAg
ICAqIHhtbC9YUGF0aFN0ZXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpOb2Rl
VGVzdDo6S2luZCk6IFJlbW92ZWQgdW51c2VkIEVsZW1lbnROb2RlVGVzdCwgd2hpY2ggd2FzIHBy
ZXZpb3VzbHkKKyAgICAgICAgYm9ycm93ZWQgZnJvbSBYUGF0aCAyLjAgdG8gZXhwcmVzcyBzb21l
IG9wdGltaXphdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6U3RlcDo6Tm9kZVRlc3Q6
Om1lcmdlZFByZWRpY2F0ZXMpOiBUbyBhdm9pZCBidWlsZGluZyBhIGh1Z2Ugbm9kZSBzZXQgYW5k
CisgICAgICAgIGZpbHRlcmluZyBpdCB3aXRoIHByZWRpY2F0ZXMsIHdlIG5vdyB0cnkgdG8gYXBw
bHkgcHJlZGljYXRlcyB3aGlsZSBlbnVtZXJhdGluZyBhbiBheGlzLgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OlN0ZXA6Om5vZGVUZXN0KTogRXhwb3NlIG1fbm9kZVRlc3QuCisKKyAgICAgICAg
KiB4bWwvWFBhdGhTdGVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjp+U3Rl
cCk6IFRoZSBzdGVwIG93bnMgTm9kZVRlc3QgbWVyZ2VkIHByZWRpY2F0ZXMsIHNvIGl0IGlzIHN0
aWxsCisgICAgICAgIHBvc3NpYmxlIHRvIGNvcHkgTm9kZVRlc3RzLgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OlN0ZXA6Om9wdGltaXplKTogTWVyZ2UgcHJlZGljYXRlcyBpbnRvIE5vZGVUZXN0
IGlmIHBvc3NpYmxlLgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Om9wdGltaXplU3RlcFBhaXIp
OiBPcHRpbWl6ZSBzb21lIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgIi8vIi4KKyAgICAgICAgKFdl
YkNvcmU6OlhQYXRoOjpTdGVwOjpwcmVkaWNhdGVzQXJlQ29udGV4dExpc3RJbnNlbnNpdGl2ZSk6
IFRoZSBhYm92ZSBvcHRpbWl6YXRpb24gaXMgb25seQorICAgICAgICBwb3NzaWJsZSBpZiB0aGVy
ZSBhcmUgbm8gY29udGV4dCBzZW5zaXRpdmUgcHJlZGljYXRlcyBmb3IgIi8vIi4KKyAgICAgICAg
KFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpldmFsdWF0ZSk6IFRyYWNrIGNvbnRleHQgcG9zaXRpb24g
Zm9yIHRoZSBmaXJzdCBtZXJnZWQgcHJlZGljYXRlLgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
Om5vZGVNYXRjaGVzQmFzaWNUZXN0KTogQ2hlY2sgd2hldGhlciB0aGUgbm9kZSBtYXRjaGVzIG5v
ZGUgdGVzdCwgaWdub3JpbmcKKyAgICAgICAgbWVyZ2VkIHByZWRpY2F0ZXMuCisgICAgICAgIChX
ZWJDb3JlOjpYUGF0aDo6bm9kZU1hdGNoZXMpOiBBZGRpdGlvbmFsbHkgY2hlY2sgbWVyZ2VkIHBy
ZWRpY2F0ZXMsIGFuZCB1cGRhdGUgcG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6
U3RlcDo6bm9kZXNJbkF4aXMpOiBDaGVjayBtZXJnZWQgcHJlZGljYXRlcyBpbiBvcHRpbWl6ZWQg
YXR0cmlidXRlIGNvZGUKKyAgICAgICAgcGF0aC4KKworICAgICAgICAqIHhtbC9YUGF0aFZhcmlh
YmxlUmVmZXJlbmNlLmg6IChXZWJDb3JlOjpYUGF0aDo6VmFyaWFibGVSZWZlcmVuY2U6OnJlc3Vs
dFR5cGUpOiBWYXJpYWJsZQorICAgICAgICByZWZlcmVuY2VzIGFyZSBub3QgdXNlZCB3aXRoIFhQ
YXRoRXZhbHVhdG9yLCBzbyB3ZSdsbCBvbmx5IG5lZWQgdGhlbSBpZiB3ZSBkZWNpZGUgdG8KKyAg
ICAgICAgcmVpbXBsZW1lbnQgWFNMVC4gVGhlIHR5cGUgb2YgdmFyaWFibGUgcmVmZXJlbmNlIGlz
IG5vdCBrbm93biBhdCBjb21waWxlIHRpbWUuCisKIDIwMDktMDUtMzAgIEtldmluIE9sbGl2aWVy
ICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBwbGF0
Zm9ybXMgd2l0aG91dCBwbHVnaW5zIHN1cHBvcnQuCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aEV4
cHJlc3Npb25Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Np
b25Ob2RlLmNwcAkocmV2aXNpb24gNDQyODMpCisrKyBXZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Np
b25Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2lmIEVOQUJMRShY
UEFUSCkKIAogI2luY2x1ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJYUGF0aFZhbHVlLmgiCiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw2
ICs0Miw5IEBAIEV2YWx1YXRpb25Db250ZXh0JiBFeHByZXNzaW9uOjpldmFsdWF0aW8KIH0KIAog
RXhwcmVzc2lvbjo6RXhwcmVzc2lvbigpCisgICAgOiBtX2lzQ29udGV4dE5vZGVTZW5zaXRpdmUo
ZmFsc2UpCisgICAgLCBtX2lzQ29udGV4dFBvc2l0aW9uU2Vuc2l0aXZlKGZhbHNlKQorICAgICwg
bV9pc0NvbnRleHRTaXplU2Vuc2l0aXZlKGZhbHNlKQogewogfQogCkluZGV4OiBXZWJDb3JlL3ht
bC9YUGF0aEV4cHJlc3Npb25Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhF
eHByZXNzaW9uTm9kZS5oCShyZXZpc2lvbiA0NDI4MykKKysrIFdlYkNvcmUveG1sL1hQYXRoRXhw
cmVzc2lvbk5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgMjAwNSBGcmVyaWNoIFJhYWJlIDxyYWFiZUBrZGUub3JnPgotICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgRnJlcmlj
aCBSYWFiZSA8cmFhYmVAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOSBBcHBs
ZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDE0ICszMSwxMyBA
QAogCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRl
ICJYUGF0aFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIG5hbWVzcGFjZSBYUGF0aCB7
Ci0KLSAgICAgICAgY2xhc3MgVmFsdWU7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgRXZhbHVh
dGlvbkNvbnRleHQgewogICAgICAgICAgICAgRXZhbHVhdGlvbkNvbnRleHQoKSA6IG5vZGUoMCks
IHNpemUoMCksIHBvc2l0aW9uKDApIHsgfQpAQCAtNjQsNyArNjMsMjIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3QgPSAw
OwogCi0gICAgICAgICAgICB2b2lkIGFkZFN1YkV4cHJlc3Npb24oRXhwcmVzc2lvbiogZXhwcikg
eyBtX3N1YkV4cHJlc3Npb25zLmFwcGVuZChleHByKTsgfQorICAgICAgICAgICAgdm9pZCBhZGRT
dWJFeHByZXNzaW9uKEV4cHJlc3Npb24qIGV4cHIpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbV9zdWJFeHByZXNzaW9ucy5hcHBlbmQoZXhwcik7CisgICAgICAgICAgICAgICAgbV9p
c0NvbnRleHROb2RlU2Vuc2l0aXZlID0gbV9pc0NvbnRleHROb2RlU2Vuc2l0aXZlIHx8IGV4cHIt
Pm1faXNDb250ZXh0Tm9kZVNlbnNpdGl2ZTsKKyAgICAgICAgICAgICAgICBtX2lzQ29udGV4dFBv
c2l0aW9uU2Vuc2l0aXZlID0gbV9pc0NvbnRleHRQb3NpdGlvblNlbnNpdGl2ZSB8fCBleHByLT5t
X2lzQ29udGV4dFBvc2l0aW9uU2Vuc2l0aXZlOworICAgICAgICAgICAgICAgIG1faXNDb250ZXh0
U2l6ZVNlbnNpdGl2ZSA9IG1faXNDb250ZXh0U2l6ZVNlbnNpdGl2ZSB8fCBleHByLT5tX2lzQ29u
dGV4dFNpemVTZW5zaXRpdmU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2wgaXND
b250ZXh0Tm9kZVNlbnNpdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250ZXh0Tm9kZVNlbnNp
dGl2ZTsgfQorICAgICAgICAgICAgYm9vbCBpc0NvbnRleHRQb3NpdGlvblNlbnNpdGl2ZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNDb250ZXh0UG9zaXRpb25TZW5zaXRpdmU7IH0KKyAgICAgICAgICAg
IGJvb2wgaXNDb250ZXh0U2l6ZVNlbnNpdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNDb250ZXh0
U2l6ZVNlbnNpdGl2ZTsgfQorICAgICAgICAgICAgdm9pZCBzZXRJc0NvbnRleHROb2RlU2Vuc2l0
aXZlKGJvb2wgdmFsdWUpIHsgbV9pc0NvbnRleHROb2RlU2Vuc2l0aXZlID0gdmFsdWU7IH0KKyAg
ICAgICAgICAgIHZvaWQgc2V0SXNDb250ZXh0UG9zaXRpb25TZW5zaXRpdmUoYm9vbCB2YWx1ZSkg
eyBtX2lzQ29udGV4dFBvc2l0aW9uU2Vuc2l0aXZlID0gdmFsdWU7IH0KKyAgICAgICAgICAgIHZv
aWQgc2V0SXNDb250ZXh0U2l6ZVNlbnNpdGl2ZShib29sIHZhbHVlKSB7IG1faXNDb250ZXh0U2l6
ZVNlbnNpdGl2ZSA9IHZhbHVlOyB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUg
cmVzdWx0VHlwZSgpIGNvbnN0ID0gMDsKIAogICAgICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgICAg
ICB1bnNpZ25lZCBzdWJFeHByQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3N1YkV4cHJlc3Npb25z
LnNpemUoKTsgfQpAQCAtNzMsNiArODcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHByaXZhdGU6CiAgICAgICAgICAgICBWZWN0b3I8RXhwcmVzc2lvbio+IG1fc3ViRXhwcmVz
c2lvbnM7CisKKyAgICAgICAgICAgIC8vIEV2YWx1YXRpb24gZGV0YWlscyB0aGF0IGNhbiBiZSB1
c2VkIGZvciBvcHRpbWl6YXRpb24uCisgICAgICAgICAgICBib29sIG1faXNDb250ZXh0Tm9kZVNl
bnNpdGl2ZTsKKyAgICAgICAgICAgIGJvb2wgbV9pc0NvbnRleHRQb3NpdGlvblNlbnNpdGl2ZTsK
KyAgICAgICAgICAgIGJvb2wgbV9pc0NvbnRleHRTaXplU2Vuc2l0aXZlOwogICAgICAgICB9Owog
CiAgICAgfQpJbmRleDogV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAkocmV2aXNpb24gNDQyODMpCisrKyBX
ZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgotICogQ29weXJpZ2h0IDIwMDUgRnJlcmljaCBSYWFiZSA8cmFhYmVAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0
IChDKSAyMDA1IEZyZXJpY2ggUmFhYmUgPHJhYWJlQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDkgQXBwbGUgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9z
a3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC03NCwxMTAgKzc0
LDE1NyBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIEZ1bmN0aW9uUmVjPiogZnVuCiAKIGNsYXNz
IEZ1bkxhc3QgOiBwdWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJl
dHVybiBWYWx1ZTo6TnVtYmVyVmFsdWU7IH0KK3B1YmxpYzoKKyAgICBGdW5MYXN0KCkgeyBzZXRJ
c0NvbnRleHRTaXplU2Vuc2l0aXZlKHRydWUpOyB9CiB9OwogCiBjbGFzcyBGdW5Qb3NpdGlvbiA6
IHB1YmxpYyBGdW5jdGlvbiB7CiAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFZhbHVl
OjpOdW1iZXJWYWx1ZTsgfQorcHVibGljOgorICAgIEZ1blBvc2l0aW9uKCkgeyBzZXRJc0NvbnRl
eHRQb3NpdGlvblNlbnNpdGl2ZSh0cnVlKTsgfQogfTsKIAogY2xhc3MgRnVuQ291bnQgOiBwdWJs
aWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6TnVt
YmVyVmFsdWU7IH0KIH07CiAKIGNsYXNzIEZ1bklkIDogcHVibGljIEZ1bmN0aW9uIHsKICAgICB2
aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZTo6VHlwZSBy
ZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gVmFsdWU6Ok5vZGVTZXRWYWx1ZTsgfQogfTsKIAog
Y2xhc3MgRnVuTG9jYWxOYW1lIDogcHVibGljIEZ1bmN0aW9uIHsKICAgICB2aXJ0dWFsIFZhbHVl
IGV2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gVmFsdWU6OlN0cmluZ1ZhbHVlOyB9CitwdWJsaWM6CisgICAgRnVuTG9j
YWxOYW1lKCkgeyBzZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKHRydWUpOyB9IC8vIGxvY2FsLW5h
bWUoKSB3aXRoIG5vIGFyZ3VtZW50cyB1c2VzIGNvbnRleHQgbm9kZS4gCiB9OwogCiBjbGFzcyBG
dW5OYW1lc3BhY2VVUkkgOiBwdWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZh
bHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25z
dCB7IHJldHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KK3B1YmxpYzoKKyAgICBGdW5OYW1lc3Bh
Y2VVUkkoKSB7IHNldElzQ29udGV4dE5vZGVTZW5zaXRpdmUodHJ1ZSk7IH0gLy8gbmFtZXNwYWNl
LXVyaSgpIHdpdGggbm8gYXJndW1lbnRzIHVzZXMgY29udGV4dCBub2RlLiAKIH07CiAKIGNsYXNz
IEZ1bk5hbWUgOiBwdWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJl
dHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KK3B1YmxpYzoKKyAgICBGdW5OYW1lKCkgeyBzZXRJ
c0NvbnRleHROb2RlU2Vuc2l0aXZlKHRydWUpOyB9IC8vIG5hbWUoKSB3aXRoIG5vIGFyZ3VtZW50
cyB1c2VzIGNvbnRleHQgbm9kZS4gCiB9OwogCiBjbGFzcyBGdW5TdHJpbmcgOiBwdWJsaWMgRnVu
Y3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6U3RyaW5nVmFs
dWU7IH0KK3B1YmxpYzoKKyAgICBGdW5TdHJpbmcoKSB7IHNldElzQ29udGV4dE5vZGVTZW5zaXRp
dmUodHJ1ZSk7IH0gLy8gc3RyaW5nKCkgd2l0aCBubyBhcmd1bWVudHMgdXNlcyBjb250ZXh0IG5v
ZGUuIAogfTsKIAogY2xhc3MgRnVuQ29uY2F0IDogcHVibGljIEZ1bmN0aW9uIHsKICAgICB2aXJ0
dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1
bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gVmFsdWU6OlN0cmluZ1ZhbHVlOyB9CiB9OwogCiBjbGFz
cyBGdW5TdGFydHNXaXRoIDogcHVibGljIEZ1bmN0aW9uIHsKICAgICB2aXJ0dWFsIFZhbHVlIGV2
YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29u
c3QgeyByZXR1cm4gVmFsdWU6OkJvb2xlYW5WYWx1ZTsgfQogfTsKIAogY2xhc3MgRnVuQ29udGFp
bnMgOiBwdWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBW
YWx1ZTo6Qm9vbGVhblZhbHVlOyB9CiB9OwogCiBjbGFzcyBGdW5TdWJzdHJpbmdCZWZvcmUgOiBw
dWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6
U3RyaW5nVmFsdWU7IH0KIH07CiAKIGNsYXNzIEZ1blN1YnN0cmluZ0FmdGVyIDogcHVibGljIEZ1
bmN0aW9uIHsKICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVh
bCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gVmFsdWU6OlN0cmluZ1Zh
bHVlOyB9CiB9OwogCiBjbGFzcyBGdW5TdWJzdHJpbmcgOiBwdWJsaWMgRnVuY3Rpb24gewogICAg
IHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBl
IHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KIH07CiAK
IGNsYXNzIEZ1blN0cmluZ0xlbmd0aCA6IHB1YmxpYyBGdW5jdGlvbiB7CiAgICAgdmlydHVhbCBW
YWx1ZSBldmFsdWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQorcHVibGljOgorICAgIEZ1
blN0cmluZ0xlbmd0aCgpIHsgc2V0SXNDb250ZXh0Tm9kZVNlbnNpdGl2ZSh0cnVlKTsgfSAvLyBz
dHJpbmctbGVuZ3RoKCkgd2l0aCBubyBhcmd1bWVudHMgdXNlcyBjb250ZXh0IG5vZGUuIAogfTsK
IAogY2xhc3MgRnVuTm9ybWFsaXplU3BhY2UgOiBwdWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1
YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3Vs
dFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KK3B1YmxpYzoKKyAg
ICBGdW5Ob3JtYWxpemVTcGFjZSgpIHsgc2V0SXNDb250ZXh0Tm9kZVNlbnNpdGl2ZSh0cnVlKTsg
fSAvLyBub3JtYWxpemUtc3BhY2UoKSB3aXRoIG5vIGFyZ3VtZW50cyB1c2VzIGNvbnRleHQgbm9k
ZS4gCiB9OwogCiBjbGFzcyBGdW5UcmFuc2xhdGUgOiBwdWJsaWMgRnVuY3Rpb24gewogICAgIHZp
cnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJl
c3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KIH07CiAKIGNs
YXNzIEZ1bkJvb2xlYW4gOiBwdWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZh
bHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25z
dCB7IHJldHVybiBWYWx1ZTo6Qm9vbGVhblZhbHVlOyB9CiB9OwogCiBjbGFzcyBGdW5Ob3QgOiBw
dWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6
Qm9vbGVhblZhbHVlOyB9CiB9OwogCiBjbGFzcyBGdW5UcnVlIDogcHVibGljIEZ1bmN0aW9uIHsK
ICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZTo6
VHlwZSByZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gVmFsdWU6OkJvb2xlYW5WYWx1ZTsgfQog
fTsKIAogY2xhc3MgRnVuRmFsc2UgOiBwdWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFs
dWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUo
KSBjb25zdCB7IHJldHVybiBWYWx1ZTo6Qm9vbGVhblZhbHVlOyB9CiB9OwogCiBjbGFzcyBGdW5M
YW5nIDogcHVibGljIEZ1bmN0aW9uIHsKICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29u
c3Q7CisgICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4g
VmFsdWU6OkJvb2xlYW5WYWx1ZTsgfQorcHVibGljOgorICAgIEZ1bkxhbmcoKSB7IHNldElzQ29u
dGV4dE5vZGVTZW5zaXRpdmUodHJ1ZSk7IH0gLy8gbGFuZygpIGFsd2F5cyB3b3JrcyBvbiBjb250
ZXh0IG5vZGUuIAogfTsKIAogY2xhc3MgRnVuTnVtYmVyIDogcHVibGljIEZ1bmN0aW9uIHsKICAg
ICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZTo6VHlw
ZSByZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CitwdWJs
aWM6CisgICAgRnVuTnVtYmVyKCkgeyBzZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKHRydWUpOyB9
IC8vIG51bWJlcigpIHdpdGggbm8gYXJndW1lbnRzIHVzZXMgY29udGV4dCBub2RlLiAKIH07CiAK
IGNsYXNzIEZ1blN1bSA6IHB1YmxpYyBGdW5jdGlvbiB7CiAgICAgdmlydHVhbCBWYWx1ZSBldmFs
dWF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQogfTsKIAogY2xhc3MgRnVuRmxvb3IgOiBw
dWJsaWMgRnVuY3Rpb24gewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6
TnVtYmVyVmFsdWU7IH0KIH07CiAKIGNsYXNzIEZ1bkNlaWxpbmcgOiBwdWJsaWMgRnVuY3Rpb24g
ewogICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFZhbHVl
OjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6TnVtYmVyVmFsdWU7IH0K
IH07CiAKIGNsYXNzIEZ1blJvdW5kIDogcHVibGljIEZ1bmN0aW9uIHsKICAgICB2aXJ0dWFsIFZh
bHVlIGV2YWx1YXRlKCkgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBl
KCkgY29uc3QgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGRvdWJsZSByb3VuZChkb3VibGUpOwogfTsKQEAgLTI0Niw4ICsyOTMsMTMgQEAgaW5saW5l
IGJvb2wgSW50ZXJ2YWw6OmNvbnRhaW5zKGludCB2YWx1ZQogCiB2b2lkIEZ1bmN0aW9uOjpzZXRB
cmd1bWVudHMoY29uc3QgVmVjdG9yPEV4cHJlc3Npb24qPiYgYXJncykKIHsKLSAgICBWZWN0b3I8
RXhwcmVzc2lvbio+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBhcmdzLmVuZCgpOworICAgIEFTU0VS
VCghc3ViRXhwckNvdW50KCkpOworCisgICAgLy8gU29tZSBmdW5jdGlvbnMgdXNlIGNvbnRleHQg
bm9kZSBhcyBpbXBsaWNpdCBhcmd1bWVudCwgc28gd2hlbiBleHBsaWNpdCBhcmd1bWVudHMgYXJl
IGFkZGVkLCB0aGV5IG1heSBubyBsb25nZXIgYmUgY29udGV4dCBub2RlIHNlbnNpdGl2ZS4KKyAg
ICBpZiAobV9uYW1lICE9ICJsYW5nIiAmJiAhYXJncy5pc0VtcHR5KCkpCisgICAgICAgICBzZXRJ
c0NvbnRleHROb2RlU2Vuc2l0aXZlKGZhbHNlKTsKIAorICAgIFZlY3RvcjxFeHByZXNzaW9uKj46
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGFyZ3MuZW5kKCk7CiAgICAgZm9yIChWZWN0b3I8RXhwcmVz
c2lvbio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGFyZ3MuYmVnaW4oKTsgaXQgIT0gZW5kOyBpdCsr
KQogICAgICAgICBhZGRTdWJFeHByZXNzaW9uKCppdCk7CiB9CkluZGV4OiBXZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25z
LmgJKHJldmlzaW9uIDQ0MjgzKQorKysgV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCi0gKiBmdW5jdGlvbnMuaCAtIENvcHlyaWdo
dCAyMDA1IEZyZXJpY2ggUmFhYmUgPHJhYWJlQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNSBGcmVyaWNoIFJh
YWJlIDxyYWFiZUBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA5IEFwcGxlIElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksNyArMzksNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIHZvaWQgc2V0QXJn
dW1lbnRzKGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uKj4mKTsKICAgICAgICAgICAgIHZvaWQgc2V0
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQotCiAgICAgICAgIHBy
b3RlY3RlZDoKICAgICAgICAgICAgIEV4cHJlc3Npb24qIGFyZyhpbnQgcG9zKSB7IHJldHVybiBz
dWJFeHByKHBvcyk7IH0KICAgICAgICAgICAgIGNvbnN0IEV4cHJlc3Npb24qIGFyZyhpbnQgcG9z
KSBjb25zdCB7IHJldHVybiBzdWJFeHByKHBvcyk7IH0KQEAgLTUyLDExICs1MSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRnVuY3Rpb24qIGNyZWF0ZUZ1bmN0aW9uKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb24qPiYgYXJncyA9IFZlY3RvcjxF
eHByZXNzaW9uKj4oKSk7CiAKLSAgICB9CisgICAgfSAvLyBuYW1lc3BhY2UgWFBhdGgKIAotfQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFhQQVRIKQogCi0jZW5k
aWYgLy8gWFBhdGhfRnVuY3Rpb25zX0gKLQorI2VuZGlmIC8vIFhQYXRoRnVuY3Rpb25zX2gKSW5k
ZXg6IFdlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwv
WFBhdGhQYXRoLmNwcAkocmV2aXNpb24gNDQyODMpCisrKyBXZWJDb3JlL3htbC9YUGF0aFBhdGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBAIG5hbWVzcGFjZSBYUGF0aCB7CiBG
aWx0ZXI6OkZpbHRlcihFeHByZXNzaW9uKiBleHByLCBjb25zdCBWZWN0b3I8UHJlZGljYXRlKj4m
IHByZWRpY2F0ZXMpCiAgICAgOiBtX2V4cHIoZXhwciksIG1fcHJlZGljYXRlcyhwcmVkaWNhdGVz
KQogeworICAgIHNldElzQ29udGV4dE5vZGVTZW5zaXRpdmUobV9leHByLT5pc0NvbnRleHROb2Rl
U2Vuc2l0aXZlKCkpOworICAgIHNldElzQ29udGV4dFBvc2l0aW9uU2Vuc2l0aXZlKG1fZXhwci0+
aXNDb250ZXh0UG9zaXRpb25TZW5zaXRpdmUoKSk7CisgICAgc2V0SXNDb250ZXh0U2l6ZVNlbnNp
dGl2ZShtX2V4cHItPmlzQ29udGV4dFNpemVTZW5zaXRpdmUoKSk7CiB9CiAKIEZpbHRlcjo6fkZp
bHRlcigpCkBAIC04Myw2ICs4Niw3IEBAIFZhbHVlIEZpbHRlcjo6ZXZhbHVhdGUoKSBjb25zdAog
TG9jYXRpb25QYXRoOjpMb2NhdGlvblBhdGgoKQogICAgIDogbV9hYnNvbHV0ZShmYWxzZSkKIHsK
KyAgICBzZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKHRydWUpOwogfQogCiBMb2NhdGlvblBhdGg6
On5Mb2NhdGlvblBhdGgoKQpAQCAtMTM0LDExICsxMzgsMzEgQEAgdm9pZCBMb2NhdGlvblBhdGg6
OmV2YWx1YXRlKE5vZGVTZXQmIG5vZAogCiB2b2lkIExvY2F0aW9uUGF0aDo6YXBwZW5kU3RlcChT
dGVwKiBzdGVwKQogeworICAgIHVuc2lnbmVkIHN0ZXBDb3VudCA9IG1fc3RlcHMuc2l6ZSgpOwor
ICAgIGlmIChzdGVwQ291bnQpIHsKKyAgICAgICAgYm9vbCBkcm9wU2Vjb25kU3RlcDsKKyAgICAg
ICAgb3B0aW1pemVTdGVwUGFpcihtX3N0ZXBzW3N0ZXBDb3VudCAtIDFdLCBzdGVwLCBkcm9wU2Vj
b25kU3RlcCk7CisgICAgICAgIGlmIChkcm9wU2Vjb25kU3RlcCkgeworICAgICAgICAgICAgZGVs
ZXRlIHN0ZXA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgc3Rl
cC0+b3B0aW1pemUoKTsKICAgICBtX3N0ZXBzLmFwcGVuZChzdGVwKTsKIH0KIAogdm9pZCBMb2Nh
dGlvblBhdGg6Omluc2VydEZpcnN0U3RlcChTdGVwKiBzdGVwKQogeworICAgIGlmIChtX3N0ZXBz
LnNpemUoKSkgeworICAgICAgICBib29sIGRyb3BTZWNvbmRTdGVwOworICAgICAgICBvcHRpbWl6
ZVN0ZXBQYWlyKHN0ZXAsIG1fc3RlcHNbMF0sIGRyb3BTZWNvbmRTdGVwKTsKKyAgICAgICAgaWYg
KGRyb3BTZWNvbmRTdGVwKSB7CisgICAgICAgICAgICBkZWxldGUgbV9zdGVwc1swXTsKKyAgICAg
ICAgICAgIG1fc3RlcHNbMF0gPSBzdGVwOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorICAgIHN0ZXAtPm9wdGltaXplKCk7CiAgICAgbV9zdGVwcy5pbnNlcnQoMCwgc3Rl
cCk7CiB9CiAKQEAgLTE0Niw2ICsxNzAsOSBAQCBQYXRoOjpQYXRoKEZpbHRlciogZmlsdGVyLCBM
b2NhdGlvblBhdGgqCiAgICAgOiBtX2ZpbHRlcihmaWx0ZXIpCiAgICAgLCBtX3BhdGgocGF0aCkK
IHsKKyAgICBzZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKGZpbHRlci0+aXNDb250ZXh0Tm9kZVNl
bnNpdGl2ZSgpKTsKKyAgICBzZXRJc0NvbnRleHRQb3NpdGlvblNlbnNpdGl2ZShmaWx0ZXItPmlz
Q29udGV4dFBvc2l0aW9uU2Vuc2l0aXZlKCkpOworICAgIHNldElzQ29udGV4dFNpemVTZW5zaXRp
dmUoZmlsdGVyLT5pc0NvbnRleHRTaXplU2Vuc2l0aXZlKCkpOwogfQogCiBQYXRoOjp+UGF0aCgp
CkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aFBhdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3ht
bC9YUGF0aFBhdGguaAkocmV2aXNpb24gNDQyODMpCisrKyBXZWJDb3JlL3htbC9YUGF0aFBhdGgu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7CiAKICAgICAgICAgcHJp
dmF0ZToKKyAgICAgICAgICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwci0+cmVzdWx0VHlwZSgpOyB9CisKICAgICAgICAgICAgIEV4cHJlc3Np
b24qIG1fZXhwcjsKICAgICAgICAgICAgIFZlY3RvcjxQcmVkaWNhdGUqPiBtX3ByZWRpY2F0ZXM7
CiAgICAgICAgIH07CkBAIC01NSw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgcHVibGljOgogICAgICAgICAgICAgTG9jYXRpb25QYXRoKCk7CiAgICAgICAgICAgICB2aXJ0
dWFsIH5Mb2NhdGlvblBhdGgoKTsKLSAgICAgICAgICAgIHZvaWQgc2V0QWJzb2x1dGUoYm9vbCB2
YWx1ZSkgeyBtX2Fic29sdXRlID0gdmFsdWU7IH0KKyAgICAgICAgICAgIHZvaWQgc2V0QWJzb2x1
dGUoYm9vbCB2YWx1ZSkgeyBtX2Fic29sdXRlID0gdmFsdWU7IHNldElzQ29udGV4dE5vZGVTZW5z
aXRpdmUoIW1fYWJzb2x1dGUpOyB9CiAKICAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVh
dGUoKSBjb25zdDsKICAgICAgICAgICAgIHZvaWQgZXZhbHVhdGUoTm9kZVNldCYgbm9kZXMpIGNv
bnN0OyAvLyBub2RlcyBpcyBhbiBpbnB1dC9vdXRwdXQgcGFyYW1ldGVyCkBAIC02NCw2ICs2Niw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHZvaWQgaW5zZXJ0Rmlyc3RTdGVw
KFN0ZXAqIHN0ZXApOwogCiAgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICB2aXJ0dWFsIFZh
bHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6Tm9kZVNldFZhbHVl
OyB9CisKICAgICAgICAgICAgIFZlY3RvcjxTdGVwKj4gbV9zdGVwczsKICAgICAgICAgICAgIGJv
b2wgbV9hYnNvbHV0ZTsKICAgICAgICAgfTsKQEAgLTc3LDYgKzgxLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OwogCiAg
ICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5
cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6Tm9kZVNldFZhbHVlOyB9CisKICAgICAgICAgICAg
IEZpbHRlciogbV9maWx0ZXI7CiAgICAgICAgICAgICBMb2NhdGlvblBhdGgqIG1fcGF0aDsKICAg
ICAgICAgfTsKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuaAkocmV2aXNpb24gNDQyODMpCisrKyBXZWJD
b3JlL3htbC9YUGF0aFByZWRpY2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIE51bWJlcihkb3VibGUpOwogICAgICAg
ICBwcml2YXRlOgogICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0Owor
ICAgICAgICAgICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1
cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CisKICAgICAgICAgICAgIFZhbHVlIG1fdmFsdWU7CiAg
ICAgICAgIH07CiAKQEAgLTQ5LDEyICs1MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICBTdHJpbmdFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBwcml2YXRl
OgogICAgICAgICAgICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OworICAgICAgICAg
ICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gVmFsdWU6
OlN0cmluZ1ZhbHVlOyB9CisKICAgICAgICAgICAgIFZhbHVlIG1fdmFsdWU7CiAgICAgICAgIH07
CiAKICAgICAgICAgY2xhc3MgTmVnYXRpdmUgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CiAgICAgICAg
IHByaXZhdGU6CiAgICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Q7Cisg
ICAgICAgICAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVy
biBWYWx1ZTo6TnVtYmVyVmFsdWU7IH0KICAgICAgICAgfTsKIAogICAgICAgICBjbGFzcyBOdW1l
cmljT3AgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CkBAIC02NSw2ICs3MCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgIE51bWVyaWNPcChPcGNvZGUsIEV4cHJlc3Npb24qIGxocywg
RXhwcmVzc2lvbiogcmhzKTsKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIHZpcnR1YWwg
VmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKyAgICAgICAgICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUg
cmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQorCiAgICAg
ICAgICAgICBPcGNvZGUgbV9vcGNvZGU7CiAgICAgICAgIH07CiAKQEAgLTc0LDcgKzgxLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRXFUZXN0T3AoT3Bjb2RlLCBFeHByZXNz
aW9uKiBsaHMsIEV4cHJlc3Npb24qIHJocyk7CiAgICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2
YWx1YXRlKCkgY29uc3Q7CiAgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICB2aXJ0dWFsIFZh
bHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTo6Qm9vbGVhblZhbHVl
OyB9CiAgICAgICAgICAgICBib29sIGNvbXBhcmUoY29uc3QgVmFsdWUmLCBjb25zdCBWYWx1ZSYp
IGNvbnN0OworCiAgICAgICAgICAgICBPcGNvZGUgbV9vcGNvZGU7CiAgICAgICAgIH07CiAKQEAg
LTgzLDE0ICs5MiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBlbnVtIE9w
Y29kZSB7IE9QX0FuZCwgT1BfT3IgfTsKICAgICAgICAgICAgIExvZ2ljYWxPcChPcGNvZGUsIEV4
cHJlc3Npb24qIGxocywgRXhwcmVzc2lvbiogcmhzKTsKICAgICAgICAgcHJpdmF0ZToKKyAgICAg
ICAgICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFZh
bHVlOjpCb29sZWFuVmFsdWU7IH0KICAgICAgICAgICAgIGJvb2wgc2hvcnRDaXJjdWl0T24oKSBj
b25zdDsKICAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdDsKKwogICAg
ICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlOwogICAgICAgICB9OwogCiAgICAgICAgIGNsYXNzIFVu
aW9uIDogcHVibGljIEV4cHJlc3Npb24gewogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAg
dmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0OworICAgICAgICAgICAgdmlydHVhbCBWYWx1
ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3QgeyByZXR1cm4gVmFsdWU6Ok5vZGVTZXRWYWx1ZTsg
fQogICAgICAgICB9OwogCiAgICAgICAgIGNsYXNzIFByZWRpY2F0ZSA6IE5vbmNvcHlhYmxlIHsK
QEAgLTk4LDYgKzExMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQcmVk
aWNhdGUoRXhwcmVzc2lvbiopOwogICAgICAgICAgICAgflByZWRpY2F0ZSgpOwogICAgICAgICAg
ICAgYm9vbCBldmFsdWF0ZSgpIGNvbnN0OworCisgICAgICAgICAgICBib29sIGlzQ29udGV4dFBv
c2l0aW9uU2Vuc2l0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9leHByLT5pc0NvbnRleHRQb3NpdGlv
blNlbnNpdGl2ZSgpIHx8IG1fZXhwci0+cmVzdWx0VHlwZSgpID09IFZhbHVlOjpOdW1iZXJWYWx1
ZTsgfQorICAgICAgICAgICAgYm9vbCBpc0NvbnRleHRTaXplU2Vuc2l0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHByLT5pc0NvbnRleHRTaXplU2Vuc2l0aXZlKCk7IH0KKwogICAgICAgICBwcml2
YXRlOgogICAgICAgICAgICAgRXhwcmVzc2lvbiogbV9leHByOwogICAgICAgICB9OwpJbmRleDog
V2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0
aFN0ZXAuY3BwCShyZXZpc2lvbiA0NDI4MykKKysrIFdlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDE0ICs1MSw3NCBAQCBTdGVwOjpTdGVwKEF4aXMgYXhpcywg
Y29uc3QgTm9kZVRlc3QmIG5vCiBTdGVwOjp+U3RlcCgpCiB7CiAgICAgZGVsZXRlQWxsVmFsdWVz
KG1fcHJlZGljYXRlcyk7CisgICAgZGVsZXRlQWxsVmFsdWVzKG1fbm9kZVRlc3QubWVyZ2VkUHJl
ZGljYXRlcygpKTsKK30KKwordm9pZCBTdGVwOjpvcHRpbWl6ZSgpCit7CisgICAgLy8gRXZhbHVh
dGUgcHJlZGljYXRlcyBhcyBwYXJ0IG9mIG5vZGUgdGVzdCBpZiBwb3NzaWJsZSB0byBhdm9pZCBi
dWlsZGluZyB1bm5lY2Vzc2FyeSBOb2RlU2V0cy4KKyAgICAvLyBFLmcuLCB0aGVyZSBpcyBubyBu
ZWVkIHRvIGJ1aWxkIGEgc2V0IG9mIGFsbCAiZm9vIiBub2RlcyB0byBldmFsdWF0ZSAiZm9vW0Bi
YXJdIiwgd2UgY2FuIGNoZWNrIHRoZSBwcmVkaWNhdGUgd2hpbGUgZW51bWVyYXRpbmcuCisgICAg
Ly8gVGhpcyBvcHRpbWl6YXRpb24gY2FuIGJlIGFwcGxpZWQgdG8gcHJlZGljYXRlcyB0aGF0IGFy
ZSBub3QgY29udGV4dCBub2RlIGxpc3Qgc2Vuc2l0aXZlLCBvciB0byBmaXJzdCBwcmVkaWNhdGUg
dGhhdCBpcyBvbmx5IGNvbnRleHQgcG9zaXRpb24gc2Vuc2l0aXZlLCBlLmcuIGZvb1twb3NpdGlv
bigpIG1vZCAyID0gMF0uCisgICAgVmVjdG9yPFByZWRpY2F0ZSo+IHJlbWFpbmluZ1ByZWRpY2F0
ZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ByZWRpY2F0ZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgUHJlZGljYXRlKiBwcmVkaWNhdGUgPSBtX3ByZWRpY2F0ZXNbaV07CisgICAg
ICAgIGlmICgoIXByZWRpY2F0ZS0+aXNDb250ZXh0UG9zaXRpb25TZW5zaXRpdmUoKSB8fCBtX25v
ZGVUZXN0Lm1lcmdlZFByZWRpY2F0ZXMoKS5pc0VtcHR5KCkpICYmICFwcmVkaWNhdGUtPmlzQ29u
dGV4dFNpemVTZW5zaXRpdmUoKSAmJiByZW1haW5pbmdQcmVkaWNhdGVzLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgbV9ub2RlVGVzdC5tZXJnZWRQcmVkaWNhdGVzKCkuYXBwZW5kKHByZWRpY2F0
ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVtYWluaW5nUHJlZGljYXRlcy5hcHBl
bmQocHJlZGljYXRlKTsKKyAgICB9CisgICAgc3dhcChyZW1haW5pbmdQcmVkaWNhdGVzLCBtX3By
ZWRpY2F0ZXMpOworfQorCit2b2lkIG9wdGltaXplU3RlcFBhaXIoU3RlcCogZmlyc3QsIFN0ZXAq
IHNlY29uZCwgYm9vbCYgZHJvcFNlY29uZFN0ZXApCit7CisgICAgZHJvcFNlY29uZFN0ZXAgPSBm
YWxzZTsKKworICAgIGlmIChmaXJzdC0+bV9heGlzID09IFN0ZXA6OkRlc2NlbmRhbnRPclNlbGZB
eGlzCisgICAgICAgICYmIGZpcnN0LT5tX25vZGVUZXN0LmtpbmQoKSA9PSBTdGVwOjpOb2RlVGVz
dDo6QW55Tm9kZVRlc3QKKyAgICAgICAgJiYgZmlyc3QtPm1fcHJlZGljYXRlcy5zaXplKCkgPT0g
MAorICAgICAgICAmJiBmaXJzdC0+bV9ub2RlVGVzdC5tZXJnZWRQcmVkaWNhdGVzKCkuc2l6ZSgp
ID09IDApIHsKKworICAgICAgICBBU1NFUlQoZmlyc3QtPm1fbm9kZVRlc3QuZGF0YSgpLmlzRW1w
dHkoKSk7CisgICAgICAgIEFTU0VSVChmaXJzdC0+bV9ub2RlVGVzdC5uYW1lc3BhY2VVUkkoKS5p
c0VtcHR5KCkpOworCisgICAgICAgIC8vIE9wdGltaXplIHRoZSBjb21tb24gY2FzZSBvZiAiLy8i
IEFLQSAvZGVzY2VuZGFudC1vci1zZWxmOjpub2RlKCkvY2hpbGQ6Ok5vZGVUZXN0IHRvIC9kZXNj
ZW5kYW50OjpOb2RlVGVzdC4KKyAgICAgICAgaWYgKHNlY29uZC0+bV9heGlzID09IFN0ZXA6OkNo
aWxkQXhpcyAmJiBzZWNvbmQtPnByZWRpY2F0ZXNBcmVDb250ZXh0TGlzdEluc2Vuc2l0aXZlKCkp
IHsKKyAgICAgICAgICAgIGZpcnN0LT5tX2F4aXMgPSBTdGVwOjpEZXNjZW5kYW50QXhpczsKKyAg
ICAgICAgICAgIGZpcnN0LT5tX25vZGVUZXN0ID0gU3RlcDo6Tm9kZVRlc3Qoc2Vjb25kLT5tX25v
ZGVUZXN0LmtpbmQoKSwgc2Vjb25kLT5tX25vZGVUZXN0LmRhdGEoKSwgc2Vjb25kLT5tX25vZGVU
ZXN0Lm5hbWVzcGFjZVVSSSgpKTsKKyAgICAgICAgICAgIHN3YXAoc2Vjb25kLT5tX25vZGVUZXN0
Lm1lcmdlZFByZWRpY2F0ZXMoKSwgZmlyc3QtPm1fbm9kZVRlc3QubWVyZ2VkUHJlZGljYXRlcygp
KTsKKyAgICAgICAgICAgIHN3YXAoc2Vjb25kLT5tX3ByZWRpY2F0ZXMsIGZpcnN0LT5tX3ByZWRp
Y2F0ZXMpOworICAgICAgICAgICAgZmlyc3QtPm9wdGltaXplKCk7CisgICAgICAgICAgICBkcm9w
U2Vjb25kU3RlcCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgU3RlcDo6cHJl
ZGljYXRlc0FyZUNvbnRleHRMaXN0SW5zZW5zaXRpdmUoKSBjb25zdAoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9wcmVkaWNhdGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFByZWRp
Y2F0ZSogcHJlZGljYXRlID0gbV9wcmVkaWNhdGVzW2ldOworICAgICAgICBpZiAocHJlZGljYXRl
LT5pc0NvbnRleHRQb3NpdGlvblNlbnNpdGl2ZSgpIHx8IHByZWRpY2F0ZS0+aXNDb250ZXh0U2l6
ZVNlbnNpdGl2ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ub2RlVGVzdC5tZXJnZWRQcmVkaWNhdGVzKCkuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgUHJlZGljYXRlKiBwcmVkaWNhdGUgPSBtX25vZGVUZXN0Lm1lcmdl
ZFByZWRpY2F0ZXMoKVtpXTsKKyAgICAgICAgaWYgKHByZWRpY2F0ZS0+aXNDb250ZXh0UG9zaXRp
b25TZW5zaXRpdmUoKSB8fCBwcmVkaWNhdGUtPmlzQ29udGV4dFNpemVTZW5zaXRpdmUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dm9pZCBTdGVwOjpldmFsdWF0ZShOb2RlKiBjb250ZXh0LCBOb2RlU2V0JiBub2RlcykgY29uc3QK
IHsKLSAgICBub2Rlc0luQXhpcyhjb250ZXh0LCBub2Rlcyk7Ci0gICAgCiAgICAgRXZhbHVhdGlv
bkNvbnRleHQmIGV2YWx1YXRpb25Db250ZXh0ID0gRXhwcmVzc2lvbjo6ZXZhbHVhdGlvbkNvbnRl
eHQoKTsKLSAgICAKKyAgICBldmFsdWF0aW9uQ29udGV4dC5wb3NpdGlvbiA9IDA7CisKKyAgICBu
b2Rlc0luQXhpcyhjb250ZXh0LCBub2Rlcyk7CisKKyAgICAvLyBDaGVjayBwcmVkaWNhdGVzIHRo
YXQgY291bGRuJ3QgYmUgbWVyZ2VkIGludG8gbm9kZSB0ZXN0LgogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3ByZWRpY2F0ZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgUHJlZGljYXRl
KiBwcmVkaWNhdGUgPSBtX3ByZWRpY2F0ZXNbaV07CiAKQEAgLTY5LDcgKzEyOSw3IEBAIHZvaWQg
U3RlcDo6ZXZhbHVhdGUoTm9kZSogY29udGV4dCwgTm9kZVMKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IG5vZGVzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gbm9kZXNbal07CiAKLSAgICAgICAgICAgIEV4cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0
KCkubm9kZSA9IG5vZGU7CisgICAgICAgICAgICBldmFsdWF0aW9uQ29udGV4dC5ub2RlID0gbm9k
ZTsKICAgICAgICAgICAgIGV2YWx1YXRpb25Db250ZXh0LnNpemUgPSBub2Rlcy5zaXplKCk7CiAg
ICAgICAgICAgICBldmFsdWF0aW9uQ29udGV4dC5wb3NpdGlvbiA9IGogKyAxOwogICAgICAgICAg
ICAgaWYgKHByZWRpY2F0ZS0+ZXZhbHVhdGUoKSkKQEAgLTkyLDcgKzE1Miw4IEBAIHN0YXRpYyBp
bmxpbmUgTm9kZTo6Tm9kZVR5cGUgcHJpbWFyeU5vZGUKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxp
bmUgYm9vbCBub2RlTWF0Y2hlcyhOb2RlKiBub2RlLCBTdGVwOjpBeGlzIGF4aXMsIGNvbnN0IFN0
ZXA6Ok5vZGVUZXN0JiBub2RlVGVzdCkKKy8vIEV2YWx1YXRlIE5vZGVUZXN0IHdpdGhvdXQgY29u
c2lkZXJpbmcgbWVyZ2VkIHByZWRpY2F0ZXMuCitzdGF0aWMgaW5saW5lIGJvb2wgbm9kZU1hdGNo
ZXNCYXNpY1Rlc3QoTm9kZSogbm9kZSwgU3RlcDo6QXhpcyBheGlzLCBjb25zdCBTdGVwOjpOb2Rl
VGVzdCYgbm9kZVRlc3QpCiB7CiAgICAgc3dpdGNoIChub2RlVGVzdC5raW5kKCkpIHsKICAgICAg
ICAgY2FzZSBTdGVwOjpOb2RlVGVzdDo6VGV4dE5vZGVUZXN0OgpAQCAtMTAzLDggKzE2NCw2IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlTWF0Y2hlcyhOb2RlKiBub2QKICAgICAgICAgICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IG5vZGVUZXN0LmRhdGEoKTsKICAgICAgICAgICAgIHJl
dHVybiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9E
RSAmJiAobmFtZS5pc0VtcHR5KCkgfHwgbm9kZS0+bm9kZU5hbWUoKSA9PSBuYW1lKTsKICAgICAg
ICAgfQotICAgICAgICBjYXNlIFN0ZXA6Ok5vZGVUZXN0OjpFbGVtZW50Tm9kZVRlc3Q6Ci0gICAg
ICAgICAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpOwogICAgICAgICBjYXNlIFN0ZXA6
Ok5vZGVUZXN0OjpBbnlOb2RlVGVzdDoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIFN0ZXA6Ok5vZGVUZXN0OjpOYW1lVGVzdDogewpAQCAtMTQ2LDYgKzIwNSwzMCBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgbm9kZU1hdGNoZXMoTm9kZSogbm9kCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgbm9kZU1hdGNoZXMoTm9kZSogbm9kZSwgU3RlcDo6
QXhpcyBheGlzLCBjb25zdCBTdGVwOjpOb2RlVGVzdCYgbm9kZVRlc3QpCit7CisgICAgaWYgKCFu
b2RlTWF0Y2hlc0Jhc2ljVGVzdChub2RlLCBheGlzLCBub2RlVGVzdCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIEV2YWx1YXRpb25Db250ZXh0JiBldmFsdWF0aW9uQ29udGV4dCA9IEV4
cHJlc3Npb246OmV2YWx1YXRpb25Db250ZXh0KCk7CisKKyAgICAvLyBPbmx5IHRoZSBmaXJzdCBt
ZXJnZWQgcHJlZGljYXRlIG1heSBkZXBlbmQgb24gcG9zaXRpb24uCisgICAgKytldmFsdWF0aW9u
Q29udGV4dC5wb3NpdGlvbjsKKworICAgIGNvbnN0IFZlY3RvcjxQcmVkaWNhdGUqPiYgbWVyZ2Vk
UHJlZGljYXRlcyA9IG5vZGVUZXN0Lm1lcmdlZFByZWRpY2F0ZXMoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbWVyZ2VkUHJlZGljYXRlcy5zaXplKCk7IGkrKykgeworICAgICAgICBQ
cmVkaWNhdGUqIHByZWRpY2F0ZSA9IG1lcmdlZFByZWRpY2F0ZXNbaV07CisKKyAgICAgICAgZXZh
bHVhdGlvbkNvbnRleHQubm9kZSA9IG5vZGU7CisgICAgICAgIC8vIE5vIG5lZWQgdG8gc2V0IGNv
bnRleHQgc2l6ZSAtIHdlIG9ubHkgZ2V0IGhlcmUgd2hlbiBldmFsdWF0aW5nIHByZWRpY2F0ZXMg
dGhhdCBkbyBub3QgZGVwZW5kIG9uIGl0LgorICAgICAgICBpZiAoIXByZWRpY2F0ZS0+ZXZhbHVh
dGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworLy8gUmVzdWx0IG5vZGVzIGFyZSBvcmRlcmVkIGluIGF4aXMgb3JkZXIuIE5vZGUg
dGVzdCAoaW5jbHVkaW5nIG1lcmdlZCBwcmVkaWNhdGVzKSBpcyBhcHBsaWVkLgogdm9pZCBTdGVw
Ojpub2Rlc0luQXhpcyhOb2RlKiBjb250ZXh0LCBOb2RlU2V0JiBub2RlcykgY29uc3QKIHsKICAg
ICBBU1NFUlQobm9kZXMuaXNFbXB0eSgpKTsKQEAgLTI0OSw4ICszMzIsMTAgQEAgdm9pZCBTdGVw
Ojpub2Rlc0luQXhpcyhOb2RlKiBjb250ZXh0LCBObwogICAgICAgICAgICAgLy8gQXZvaWQgbGF6
aWx5IGNyZWF0aW5nIGF0dHJpYnV0ZSBub2RlcyBmb3IgYXR0cmlidXRlcyB0aGF0IHdlIGRvIG5v
dCBuZWVkIGFueXdheS4KICAgICAgICAgICAgIGlmIChtX25vZGVUZXN0LmtpbmQoKSA9PSBOb2Rl
VGVzdDo6TmFtZVRlc3QgJiYgbV9ub2RlVGVzdC5kYXRhKCkgIT0gc3RhckF0b20pIHsKICAgICAg
ICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbiA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihjb250ZXh0
KS0+Z2V0QXR0cmlidXRlTm9kZU5TKG1fbm9kZVRlc3QubmFtZXNwYWNlVVJJKCksIG1fbm9kZVRl
c3QuZGF0YSgpKTsKLSAgICAgICAgICAgICAgICBpZiAobiAmJiBuLT5uYW1lc3BhY2VVUkkoKSAh
PSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8iKSAvLyBJbiBYUGF0aCBsYW5kLCBuYW1l
c3BhY2Ugbm9kZXMgYXJlIG5vdCBhY2Nlc3NpYmxlIG9uIHRoZSBhdHRyaWJ1dGUgYXhpcy4KLSAg
ICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5kKG4ucmVsZWFzZSgpKTsKKyAgICAgICAgICAg
ICAgICBpZiAobiAmJiBuLT5uYW1lc3BhY2VVUkkoKSAhPSAiaHR0cDovL3d3dy53My5vcmcvMjAw
MC94bWxucy8iKSB7IC8vIEluIFhQYXRoIGxhbmQsIG5hbWVzcGFjZSBub2RlcyBhcmUgbm90IGFj
Y2Vzc2libGUgb24gdGhlIGF0dHJpYnV0ZSBheGlzLgorICAgICAgICAgICAgICAgICAgICBpZiAo
bm9kZU1hdGNoZXMobi5nZXQoKSwgQXR0cmlidXRlQXhpcywgbV9ub2RlVGVzdCkpIC8vIFN0aWxs
IG5lZWQgdG8gY2hlY2sgbWVyZ2VkIHByZWRpY2F0ZXMuCisgICAgICAgICAgICAgICAgICAgICAg
ICBub2Rlcy5hcHBlbmQobi5yZWxlYXNlKCkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKSW5kZXg6IFdlYkNv
cmUveG1sL1hQYXRoU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hQYXRoU3RlcC5o
CShyZXZpc2lvbiA0NDI4MykKKysrIFdlYkNvcmUveG1sL1hQYXRoU3RlcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw4ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGNs
YXNzIE5vZGVUZXN0IHsKICAgICAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgICAgICBlbnVt
IEtpbmQgewotICAgICAgICAgICAgICAgICAgICBUZXh0Tm9kZVRlc3QsIENvbW1lbnROb2RlVGVz
dCwgUHJvY2Vzc2luZ0luc3RydWN0aW9uTm9kZVRlc3QsIEFueU5vZGVUZXN0LCBOYW1lVGVzdCwK
LSAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5vZGVUZXN0IC8vIFhQYXRoIDIuMAorICAgICAg
ICAgICAgICAgICAgICBUZXh0Tm9kZVRlc3QsIENvbW1lbnROb2RlVGVzdCwgUHJvY2Vzc2luZ0lu
c3RydWN0aW9uTm9kZVRlc3QsIEFueU5vZGVUZXN0LCBOYW1lVGVzdAogICAgICAgICAgICAgICAg
IH07CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZVRlc3QoS2luZCBraW5k
KSA6IG1fa2luZChraW5kKSB7fQpAQCAtNjMsMjcgKzYyLDMxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgICAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0K
ICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRhdGEoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFj
ZVVSSSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZXNwYWNlVVJJOyB9CisgICAgICAgICAgICAgICAg
VmVjdG9yPFByZWRpY2F0ZSo+JiBtZXJnZWRQcmVkaWNhdGVzKCkgeyByZXR1cm4gbV9tZXJnZWRQ
cmVkaWNhdGVzOyB9CisgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFByZWRpY2F0ZSo+JiBt
ZXJnZWRQcmVkaWNhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9tZXJnZWRQcmVkaWNhdGVzOyB9CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgICAgIEtp
bmQgbV9raW5kOwogICAgICAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX2RhdGE7CiAgICAgICAg
ICAgICAgICAgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlVVJJOworCisgICAgICAgICAgICAgICAg
Ly8gV2hlbiBwb3NzaWJsZSwgd2UgbWVyZ2Ugc29tZSBvciBhbGwgcHJlZGljYXRlcyB3aXRoIG5v
ZGUgdGVzdCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgorICAgICAgICAgICAgICAgIFZlY3RvcjxQ
cmVkaWNhdGUqPiBtX21lcmdlZFByZWRpY2F0ZXM7CiAgICAgICAgICAgICB9OwogCiAgICAgICAg
ICAgICBTdGVwKEF4aXMsIGNvbnN0IE5vZGVUZXN0JiBub2RlVGVzdCwgY29uc3QgVmVjdG9yPFBy
ZWRpY2F0ZSo+JiBwcmVkaWNhdGVzID0gVmVjdG9yPFByZWRpY2F0ZSo+KCkpOwogICAgICAgICAg
ICAgflN0ZXAoKTsKIAorICAgICAgICAgICAgdm9pZCBvcHRpbWl6ZSgpOworCiAgICAgICAgICAg
ICB2b2lkIGV2YWx1YXRlKE5vZGUqIGNvbnRleHQsIE5vZGVTZXQmKSBjb25zdDsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgQXhpcyBheGlzKCkgY29uc3QgeyByZXR1cm4gbV9heGlzOyB9Ci0g
ICAgICAgICAgICBOb2RlVGVzdCBub2RlVGVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVRlc3Q7
IH0KLSAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxQcmVkaWNhdGUqPiYgcHJlZGljYXRlcygpIGNv
bnN0IHsgcmV0dXJuIG1fcHJlZGljYXRlczsgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICB2
b2lkIHNldEF4aXMoQXhpcyBheGlzKSB7IG1fYXhpcyA9IGF4aXM7IH0KLSAgICAgICAgICAgIHZv
aWQgc2V0Tm9kZVRlc3QoTm9kZVRlc3Qgbm9kZVRlc3QpIHsgbV9ub2RlVGVzdCA9IG5vZGVUZXN0
OyB9Ci0gICAgICAgICAgICB2b2lkIHNldFByZWRpY2F0ZXMoY29uc3QgVmVjdG9yPFByZWRpY2F0
ZSo+JiBwcmVkaWNhdGVzKSB7IG1fcHJlZGljYXRlcyA9IHByZWRpY2F0ZXM7IH0KLSAgICAgICAg
ICAgIAorCisgICAgICAgICAgICBjb25zdCBOb2RlVGVzdCYgbm9kZVRlc3QoKSBjb25zdCB7IHJl
dHVybiBtX25vZGVUZXN0OyB9CisKICAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGZyaWVu
ZCB2b2lkIG9wdGltaXplU3RlcFBhaXIoU3RlcCosIFN0ZXAqLCBib29sJik7CisgICAgICAgICAg
ICBib29sIHByZWRpY2F0ZXNBcmVDb250ZXh0TGlzdEluc2Vuc2l0aXZlKCkgY29uc3Q7CisKICAg
ICAgICAgICAgIHZvaWQgcGFyc2VOb2RlVGVzdChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgICAg
IHZvaWQgbm9kZXNJbkF4aXMoTm9kZSogY29udGV4dCwgTm9kZVNldCYpIGNvbnN0OwogICAgICAg
ICAgICAgU3RyaW5nIG5hbWVzcGFjZUZyb21Ob2RldGVzdChjb25zdCBTdHJpbmcmIG5vZGVUZXN0
KSBjb25zdDsKQEAgLTkzLDEwICs5NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBWZWN0b3I8UHJlZGljYXRlKj4gbV9wcmVkaWNhdGVzOwogICAgICAgICB9OwogCisgICAg
ICAgIHZvaWQgb3B0aW1pemVTdGVwUGFpcihTdGVwKiwgU3RlcCosIGJvb2wmIGRyb3BTZWNvbmRT
dGVwKTsKICAgICB9CiAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShYUEFUSCkKIAotI2VuZGlmIC8v
IFhQYXRoX1N0ZXBfSAorI2VuZGlmIC8vIFhQYXRoU3RlcF9oCkluZGV4OiBXZWJDb3JlL3htbC9Y
UGF0aFZhcmlhYmxlUmVmZXJlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhW
YXJpYWJsZVJlZmVyZW5jZS5oCShyZXZpc2lvbiA0NDI4MykKKysrIFdlYkNvcmUveG1sL1hQYXRo
VmFyaWFibGVSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDE0IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBuYW1lc3BhY2UgWFBhdGggewotICAgIAorCisgICAg
ICAgIC8vIFZhcmlhYmxlIHJlZmVyZW5jZXMgYXJlIG5vdCB1c2VkIHdpdGggWFBhdGhFdmFsdWF0
b3IuCiAgICAgICAgIGNsYXNzIFZhcmlhYmxlUmVmZXJlbmNlIDogcHVibGljIEV4cHJlc3Npb24g
ewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBWYXJpYWJsZVJlZmVyZW5jZShjb25zdCBT
dHJpbmcmIG5hbWUpOwogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgdmlydHVhbCBWYWx1
ZSBldmFsdWF0ZSgpIGNvbnN0OworICAgICAgICAgICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1
bHRUeXBlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFZhbHVlOjpOdW1i
ZXJWYWx1ZTsgfQogICAgICAgICAgICAgU3RyaW5nIG1fbmFtZTsKICAgICAgICAgfTsKIApJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNDQyOTUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0wNS0zMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMjMzCisg
ICAgICAgIE5lZWQgdG8gaW1wbGVtZW50IGFuIG9wdGltaXppbmcgWFBhdGggZXZhbHVhdG9yCisK
KyAgICAgICAgKiBmYXN0L3hwYXRoL2F0dHJpYnV0ZS1ub2RlLXByZWRpY2F0ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QveHBhdGgvYXR0cmlidXRlLW5vZGUtcHJlZGljYXRl
Lmh0bWw6IEFkZGVkLgorICAgICAgICBUZXN0IHRoYXQgcHJlZGljYXRlcyBvbiBhdHRyaWJ1dGUg
bm9kZXMgYXJlIGFwcGxpZWQgY29ycmVjdGx5ICh3aGljaCBJIGhhZCB3cm9uZyBmb3IgYSB3aGls
ZQorICAgICAgICB3aGVuIHdvcmtpbmcgb24gdGhpcyBwYXRjaCkuCisKKyAgICAgICAgKiBmYXN0
L3hwYXRoL3Bvc2l0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3hwYXRoL3Bvc2l0
aW9uLmh0bWw6CisgICAgICAgIEFkZGVkIGFuIGV4YW1wbGUgZnJvbSBYUGF0aCBzcGVjLgorCiAy
MDA5LTA1LTI5ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9hdHRy
aWJ1dGUtbm9kZS1wcmVkaWNhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QveHBhdGgvYXR0cmlidXRlLW5vZGUtcHJlZGljYXRlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QveHBhdGgvYXR0cmlidXRlLW5vZGUtcHJlZGlj
YXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitQQVNTIC8vQGlk
W2ZhbHNlXQorUEFTUyAvL0BpZFsxXS9wYXJlbnQ6OioKK1BBU1MgLy9AaWRbMl0vcGFyZW50Ojoq
CitQQVNTIC8vQGlkW3N0cmluZygpPScyMSddL3BhcmVudDo6KgorUEFTUyAvL0BpZFtzdHJpbmco
KT0nMjInXS9wYXJlbnQ6OioKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L3hwYXRo
L2F0dHJpYnV0ZS1ub2RlLXByZWRpY2F0ZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBz
dm46bWltZS10eXBlCiAgICsgdGV4dC9wbGFpbgpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0
aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9hdHRyaWJ1dGUtbm9kZS1wcmVkaWNh
dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3hwYXRoL2F0dHJpYnV0ZS1u
b2RlLXByZWRpY2F0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC94cGF0
aC9hdHRyaWJ1dGUtbm9kZS1wcmVkaWNhdGUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ieHBhdGgtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKwordmFyIFJPT1QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKK1JPT1QuaW5uZXJIVE1MID0gJzxwPmE8L3A+PGRpdj48c3BhbiBp
ZD0iMjEiPjwvc3Bhbj48c3BhbiBpZD0iMjIiPjwvc3Bhbj48c3BhbiBpZD0iMjMiPjwvc3Bhbj48
L2Rpdj4nOwordmFyIENISUxEMSA9IFJPT1QuZmlyc3RDaGlsZDsKK3ZhciBDSElMRDFURVhUID0g
Q0hJTEQxLmZpcnN0Q2hpbGQ7Cit2YXIgQ0hJTEQyID0gUk9PVC5sYXN0Q2hpbGQ7Cit2YXIgQ0hJ
TEQyMSA9IENISUxEMi5maXJzdENoaWxkOwordmFyIENISUxEMjIgPSBDSElMRDIxLm5leHRTaWJs
aW5nOwordmFyIENISUxEMjMgPSBDSElMRDIyLm5leHRTaWJsaW5nOworCisgICAgcmVzdWx0ID0g
ZG9jdW1lbnQuZXZhbHVhdGUoIi4vL0BpZFtmYWxzZV0iLCBST09ULCBudWxsLCBYUGF0aFJlc3Vs
dC5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSwgbnVsbCk7CisgICAgY2hlY2tTbmFwc2hvdCgi
Ly9AaWRbZmFsc2VdIiwgcmVzdWx0LCBbXSk7CisKKyAgICByZXN1bHQgPSBkb2N1bWVudC5ldmFs
dWF0ZSgiLi8vQGlkWzFdL3BhcmVudDo6KiIsIFJPT1QsIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVS
RURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxsKTsKKyAgICBjaGVja1NuYXBzaG90KCIvL0BpZFsx
XS9wYXJlbnQ6OioiLCByZXN1bHQsIFtDSElMRDIxLCBDSElMRDIyLCBDSElMRDIzXSk7CisKKyAg
ICByZXN1bHQgPSBkb2N1bWVudC5ldmFsdWF0ZSgiLi8vQGlkWzJdL3BhcmVudDo6KiIsIFJPT1Qs
IG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQU0hPVF9UWVBFLCBudWxsKTsKKyAg
ICBjaGVja1NuYXBzaG90KCIvL0BpZFsyXS9wYXJlbnQ6OioiLCByZXN1bHQsIFtdKTsKKworICAg
IHJlc3VsdCA9IGRvY3VtZW50LmV2YWx1YXRlKCIuLy9AaWRbc3RyaW5nKCk9JzIxJ10vcGFyZW50
OjoqIiwgUk9PVCwgbnVsbCwgWFBhdGhSZXN1bHQuT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUs
IG51bGwpOworICAgIGNoZWNrU25hcHNob3QoIi8vQGlkW3N0cmluZygpPScyMSddL3BhcmVudDo6
KiIsIHJlc3VsdCwgW0NISUxEMjFdKTsKKworICAgIHJlc3VsdCA9IGRvY3VtZW50LmV2YWx1YXRl
KCIuLy9AaWRbc3RyaW5nKCk9JzIyJ10vcGFyZW50OjoqIiwgUk9PVCwgbnVsbCwgWFBhdGhSZXN1
bHQuT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUsIG51bGwpOworICAgIGNoZWNrU25hcHNob3Qo
Ii8vQGlkW3N0cmluZygpPScyMiddL3BhcmVudDo6KiIsIHJlc3VsdCwgW0NISUxEMjJdKTsKKwor
ICAgIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QveHBhdGgvYXR0
cmlidXRlLW5vZGUtcHJlZGljYXRlLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBl
CiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9wb3NpdGlvbi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC94cGF0aC9wb3NpdGlv
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ0MjgzKQorKysgTGF5b3V0VGVzdHMvZmFzdC94cGF0
aC9wb3NpdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0LDYgKzE0LDggQEAg
UEFTUyBwcmVjZWRpbmc6Om5vZGUoKS8qWzNdCiBQQVNTIGFuY2VzdG9yOjpub2RlKClbMl0KIFBB
U1MgYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpWzJdCiBQQVNTIGFuY2VzdG9yLW9yLXNlbGY6Om5v
ZGUoKVszXQorUEFTUyBwcmVjZWRpbmc6OnNwYW5bMV0KK1BBU1MgKHByZWNlZGluZzo6c3Bhbilb
MV0KIFBBU1MgZG9jdW1lbnQuZXZhbHVhdGUoJ3BbQHR5cGU9Indhcm5pbmciXVs1XS9AbnVtJywg
Uk9PVDIsIG51bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1ZSBp
cyAnNicKIFBBU1MgZG9jdW1lbnQuZXZhbHVhdGUoJ3BbNV1bQHR5cGU9Indhcm5pbmciXS9AbnVt
JywgUk9PVDIsIG51bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFLCBudWxsKS5zdHJpbmdWYWx1
ZSBpcyAnNScKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QveHBhdGgvcG9zaXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3hwYXRoL3Bvc2l0aW9uLmh0bWwJKHJldmlzaW9uIDQ0MjgzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC94cGF0aC9wb3NpdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw3IEBA
CiA8c2NyaXB0PgogCiB2YXIgUk9PVCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwot
Uk9PVC5pbm5lckhUTUwgPSAnPHA+YTwvcD48ZGl2PjxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+
PHNwYW4+PC9zcGFuPjwvZGl2Pic7CitST09ULmlubmVySFRNTCA9ICc8cD5hPC9wPjxkaXY+PHNw
YW4gaWQ9IjIxIj48L3NwYW4+PHNwYW4gaWQ9IjIyIj48L3NwYW4+PHNwYW4gaWQ9IjIzIj48L3Nw
YW4+PC9kaXY+JzsKIHZhciBDSElMRDEgPSBST09ULmZpcnN0Q2hpbGQ7CiB2YXIgQ0hJTEQxVEVY
VCA9IENISUxEMS5maXJzdENoaWxkOwogdmFyIENISUxEMiA9IFJPT1QubGFzdENoaWxkOwpAQCAt
NjcsNiArNjcsMTIgQEAgdmFyIENISUxEMjMgPSBDSElMRDIyLm5leHRTaWJsaW5nOwogICAgIHJl
c3VsdCA9IGRvY3VtZW50LmV2YWx1YXRlKCJhbmNlc3Rvci1vci1zZWxmOjpub2RlKClbM10iLCBD
SElMRDIxLCBudWxsLCBYUGF0aFJlc3VsdC5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSwgbnVs
bCk7CiAgICAgY2hlY2tTbmFwc2hvdCgiYW5jZXN0b3Itb3Itc2VsZjo6bm9kZSgpWzNdIiwgcmVz
dWx0LCBbUk9PVF0pOwogCisgICAgcmVzdWx0ID0gZG9jdW1lbnQuZXZhbHVhdGUoInByZWNlZGlu
Zzo6c3BhblsxXSIsIENISUxEMjMsIG51bGwsIFhQYXRoUmVzdWx0Lk9SREVSRURfTk9ERV9TTkFQ
U0hPVF9UWVBFLCBudWxsKTsKKyAgICBjaGVja1NuYXBzaG90KCJwcmVjZWRpbmc6OnNwYW5bMV0i
LCByZXN1bHQsIFtDSElMRDIyXSk7CisKKyAgICByZXN1bHQgPSBkb2N1bWVudC5ldmFsdWF0ZSgi
KHByZWNlZGluZzo6c3BhbilbMV0iLCBDSElMRDIzLCBudWxsLCBYUGF0aFJlc3VsdC5PUkRFUkVE
X05PREVfU05BUFNIT1RfVFlQRSwgbnVsbCk7CisgICAgY2hlY2tTbmFwc2hvdCgiKHByZWNlZGlu
Zzo6c3BhbilbMV0iLCByZXN1bHQsIFtDSElMRDIxXSk7CisKIHZhciBST09UMiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogUk9PVDIuaW5uZXJIVE1MID0gJzxwIG51bT0iMSI+PC9w
PjxwIG51bT0iMiIgdHlwZT0id2FybmluZyI+PC9wPjxwIG51bT0iMyIgdHlwZT0id2FybmluZyI+
PC9wPjxwIG51bT0iNCIgdHlwZT0id2FybmluZyI+PC9wPjxwIG51bT0iNSIgdHlwZT0id2Fybmlu
ZyI+PC9wPjxwIG51bT0iNiIgdHlwZT0id2FybmluZyI+PC9wPic7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30817</attachid>
            <date>2009-05-31 10:45:38 -0700</date>
            <delta_ts>2009-05-31 22:25:52 -0700</delta_ts>
            <desc>Don&apos;t needlessly sort location path results</desc>
            <filename>XPathHierarchical.txt</filename>
            <type>text/plain</type>
            <size>6550</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMDktMDUtMzEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIzMworICAgICAgICBO
ZWVkIHRvIGltcGxlbWVudCBhbiBvcHRpbWl6aW5nIFhQYXRoIGV2YWx1YXRvcgorCisgICAgICAg
IEF2b2lkIHNvcnRpbmcgcmVzdWx0cyBvZiBoaWVyYXJjaGljYWwgcGF0aHMgdGhhdCBhcmUgbmF0
dWFybGx5IHNvcnRlZC4gT24gYSBmbGF0IGRhdGEgc3RydWN0dXJlCisgICAgICAgIHdpdGggMTI4
SyBub2RlcyBhbmQgYSBzaW1wbGUgWFBhdGggZXhwcmVzc2lvbiwgdGhpcyBjaGFuZ2VzIGV2YWx1
YXRpb24gdGltZSBmcm9tIDEuNSBtaW51dGVzCisgICAgICAgIHRvIDMzIG1zLgorCisgICAgICAg
ICogeG1sL1hQYXRoTm9kZVNldC5oOiBLZWVwIHRyYWNrIG9mIHdoZXRoZXIgc3VidHJlZXMgcm9v
dGVkIGF0IG5vZGVzIGluIHNldCBhcmUgZGlzam9pbnQsCisgICAgICAgIHdoaWNoIGlzIHVzZWZ1
bCBmb3Igb3B0aW1pemF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6Ok5v
ZGVTZXQpOiBBZGRlZCBtX3N1YnRyZWVzQXJlRGlzam9pbnQuCisgICAgICAgIChXZWJDb3JlOjpY
UGF0aDo6Tm9kZVNldDo6b3BlcmF0b3I9KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpYUGF0
aDo6Tm9kZVNldDo6c3dhcCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVT
ZXQ6OmlzU29ydGVkKTogU2luZ2xlIGVsZW1lbnQgc2V0cyBhcmUgYWx3YXlzIHNvcnRlZCwgZXZl
biBpZiBzb3J0KCkKKyAgICAgICAgd2FzIG5ldmVyIGNhbGxlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlhQYXRoOjpOb2RlU2V0OjptYXJrU3VidHJlZXNEaXNqb2ludCk6IEp1c3QgbGlrZSBiZWluZyBz
b3J0ZWQsIHRoZSBuZXcgZmxhZyBpcworICAgICAgICBtYWludGFpbmVkIGJ5IGNhbGxlcnMuCisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6c3VidHJlZXNBcmVEaXNqb2ludCk6IEEg
c2luZ2xlIGVsZW1lbnQgc2V0IG9ubHkgaGFzIG9uZSBzdWJ0cmVlLgorICAgICAgICBDdXJyZW50
bHksIHRoZSBvbmx5IHdheSBmb3IgYSBzZXQgdG8gZ2FpbiB0aGlzIGZsYWcgaXMgdG8gYmUgcHJv
ZHVjZWQgZnJvbSBhIHNpbmdsZSBlbGVtZW50CisgICAgICAgIHNldCB3aXRoIGEgaGllcmFyY2hp
Y2FsIGxvY2F0aW9uIHBhdGguCisKKyAgICAgICAgKiB4bWwvWFBhdGhQYXRoLmNwcDogKFdlYkNv
cmU6OlhQYXRoOjpMb2NhdGlvblBhdGg6OmV2YWx1YXRlKTogVXNlIHRoZSBuZXcgZmxhZyB0byBh
dm9pZAorICAgICAgICBtYWludGFpbmluZyBhIHNldCBvZiB1bmlxdWUgbm9kZXMsIGFuZCB0byBh
dm9pZCBzb3J0aW5nIHRoZSByZXN1bHQuCisKIDIwMDktMDUtMzAgIEtldmluIE9sbGl2aWVyICA8
a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgQnVpbGQgZml4IGZvciBwbGF0Zm9y
bXMgd2l0aG91dCBwbHVnaW5zIHN1cHBvcnQuCkluZGV4OiBXZWJDb3JlL3htbC9YUGF0aE5vZGVT
ZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaAkocmV2aXNpb24g
NDQyODMpCisrKyBXZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsMTYgKzQwLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgTm9kZVNl
dCB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgCi0gICAgICAgICAgICBOb2RlU2V0KCkgOiBt
X2lzU29ydGVkKHRydWUpIHt9Ci0gICAgICAgICAgICBOb2RlU2V0KGNvbnN0IE5vZGVTZXQmIG90
aGVyKSA6IG1faXNTb3J0ZWQob3RoZXIubV9pc1NvcnRlZCksIG1fbm9kZXMob3RoZXIubV9ub2Rl
cykge30KLSAgICAgICAgICAgIE5vZGVTZXQmIG9wZXJhdG9yPShjb25zdCBOb2RlU2V0JiBvdGhl
cikgeyBtX2lzU29ydGVkID0gb3RoZXIubV9pc1NvcnRlZDsgbV9ub2RlcyA9IG90aGVyLm1fbm9k
ZXM7IHJldHVybiAqdGhpczsgfQorICAgICAgICAgICAgTm9kZVNldCgpIDogbV9pc1NvcnRlZCh0
cnVlKSwgbV9zdWJ0cmVlc0FyZURpc2pvaW50KGZhbHNlKSB7IH0KKyAgICAgICAgICAgIE5vZGVT
ZXQoY29uc3QgTm9kZVNldCYgb3RoZXIpIDogbV9pc1NvcnRlZChvdGhlci5tX2lzU29ydGVkKSwg
bV9zdWJ0cmVlc0FyZURpc2pvaW50KG90aGVyLm1fc3VidHJlZXNBcmVEaXNqb2ludCksIG1fbm9k
ZXMob3RoZXIubV9ub2RlcykgeyB9CisgICAgICAgICAgICBOb2RlU2V0JiBvcGVyYXRvcj0oY29u
c3QgTm9kZVNldCYgb3RoZXIpIHsgbV9pc1NvcnRlZCA9IG90aGVyLm1faXNTb3J0ZWQ7IG1fc3Vi
dHJlZXNBcmVEaXNqb2ludCA9IG90aGVyLm1fc3VidHJlZXNBcmVEaXNqb2ludDsgbV9ub2RlcyA9
IG90aGVyLm1fbm9kZXM7IHJldHVybiAqdGhpczsgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZXMuc2l6ZSgpOyB9CiAgICAgICAg
ICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9ub2Rlcy5zaXplKCk7IH0KICAg
ICAgICAgICAgIE5vZGUqIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV9u
b2Rlcy5hdChpKS5nZXQoKTsgfQogICAgICAgICAgICAgdm9pZCByZXNlcnZlQ2FwYWNpdHkoc2l6
ZV90IG5ld0NhcGFjaXR5KSB7IG1fbm9kZXMucmVzZXJ2ZUNhcGFjaXR5KG5ld0NhcGFjaXR5KTsg
fQogICAgICAgICAgICAgdm9pZCBjbGVhcigpIHsgbV9ub2Rlcy5jbGVhcigpOyB9Ci0gICAgICAg
ICAgICB2b2lkIHN3YXAoTm9kZVNldCYgb3RoZXIpIHsgc3RkOjpzd2FwKG1faXNTb3J0ZWQsIG90
aGVyLm1faXNTb3J0ZWQpOyBtX25vZGVzLnN3YXAob3RoZXIubV9ub2Rlcyk7IH0KKyAgICAgICAg
ICAgIHZvaWQgc3dhcChOb2RlU2V0JiBvdGhlcikgeyBzdGQ6OnN3YXAobV9pc1NvcnRlZCwgb3Ro
ZXIubV9pc1NvcnRlZCk7IHN0ZDo6c3dhcChtX3N1YnRyZWVzQXJlRGlzam9pbnQsIG90aGVyLm1f
c3VidHJlZXNBcmVEaXNqb2ludCk7IG1fbm9kZXMuc3dhcChvdGhlci5tX25vZGVzKTsgfQogCiAg
ICAgICAgICAgICAvLyBOb2RlU2V0IGl0c2VsZiBkb2VzIG5vdCB2ZXJpZnkgdGhhdCBub2RlcyBp
biBpdCBhcmUgdW5pcXVlLgogICAgICAgICAgICAgdm9pZCBhcHBlbmQoTm9kZSogbm9kZSkgeyBt
X25vZGVzLmFwcGVuZChub2RlKTsgfQpAQCAtNjIsMTYgKzYyLDIxIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIC8vIFJldHVybnMgMCBpZiB0aGUgc2V0IGlzIGVtcHR5LgogICAg
ICAgICAgICAgTm9kZSogYW55Tm9kZSgpIGNvbnN0OwogCi0gICAgICAgICAgICAvLyBOb2RlU2V0
IGl0c2VsZiBkb2Vzbid0IGNoZWNrIGlmIGl0IGlzIGNvbnRhaW5zIHNvcnRlZCBkYXRhIC0gdGhl
IGNhbGxlciBzaG91bGQgdGVsbCBpdCBpZiBpdCBkb2VzIG5vdC4KKyAgICAgICAgICAgIC8vIE5v
ZGVTZXQgaXRzZWxmIGRvZXNuJ3QgY2hlY2sgaWYgaXQgY29udGFpbnMgbm9kZXMgaW4gZG9jdW1l
bnQgb3JkZXIgLSB0aGUgY2FsbGVyIHNob3VsZCB0ZWxsIGl0IGlmIGl0IGRvZXMgbm90LgogICAg
ICAgICAgICAgdm9pZCBtYXJrU29ydGVkKGJvb2wgaXNTb3J0ZWQpIHsgbV9pc1NvcnRlZCA9IGlz
U29ydGVkOyB9Ci0gICAgICAgICAgICBib29sIGlzU29ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c1NvcnRlZDsgfQorICAgICAgICAgICAgYm9vbCBpc1NvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTb3J0ZWQgfHwgbV9ub2Rlcy5zaXplKCkgPCAyOyB9CiAKICAgICAgICAgICAgIHZvaWQgc29y
dCgpIGNvbnN0OwogCisgICAgICAgICAgICAvLyBObyBub2RlIGluIHRoZSBzZXQgaXMgYW5jZXN0
b3Igb2YgYW5vdGhlci4gVW5saWtlIG1faXNTb3J0ZWQsIHRoaXMgaXMgYXNzdW1lZCB0byBiZSBm
YWxzZSwgdW5sZXNzIHRoZSBjYWxsZXIgc2V0cyBpdCB0byB0cnVlLgorICAgICAgICAgICAgdm9p
ZCBtYXJrU3VidHJlZXNEaXNqb2ludChib29sIGRpc2pvaW50KSB7IG1fc3VidHJlZXNBcmVEaXNq
b2ludCA9IGRpc2pvaW50OyB9CisgICAgICAgICAgICBib29sIHN1YnRyZWVzQXJlRGlzam9pbnQo
KSBjb25zdCB7IHJldHVybiBtX3N1YnRyZWVzQXJlRGlzam9pbnQgfHwgbV9ub2Rlcy5zaXplKCkg
PCAyOyB9CisKICAgICAgICAgICAgIHZvaWQgcmV2ZXJzZSgpOwogICAgICAgICAKICAgICAgICAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJvb2wgbV9pc1NvcnRlZDsKKyAgICAgICAgICAgIGJvb2wg
bV9zdWJ0cmVlc0FyZURpc2pvaW50OwogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+
IG1fbm9kZXM7CiAgICAgICAgIH07CiAKSW5kZXg6IFdlYkNvcmUveG1sL1hQYXRoUGF0aC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAkocmV2aXNpb24gNDQyODMp
CisrKyBXZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMTgg
KzExMCwzMyBAQCBWYWx1ZSBMb2NhdGlvblBhdGg6OmV2YWx1YXRlKCkgY29uc3QKIAogdm9pZCBM
b2NhdGlvblBhdGg6OmV2YWx1YXRlKE5vZGVTZXQmIG5vZGVzKSBjb25zdAogeworICAgIGJvb2wg
cmVzdWx0SXNTb3J0ZWQgPSBub2Rlcy5pc1NvcnRlZCgpOworCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc3RlcHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgU3RlcCogc3RlcCA9IG1f
c3RlcHNbaV07CiAgICAgICAgIE5vZGVTZXQgbmV3Tm9kZXM7CiAgICAgICAgIEhhc2hTZXQ8Tm9k
ZSo+IG5ld05vZGVzU2V0OwogCisgICAgICAgIGJvb2wgbmVlZFRvQ2hlY2tGb3JEdXBsaWNhdGVO
b2RlcyA9ICFub2Rlcy5zdWJ0cmVlc0FyZURpc2pvaW50KCkgfHwgKHN0ZXAtPmF4aXMoKSAhPSBT
dGVwOjpDaGlsZEF4aXMgJiYgc3RlcC0+YXhpcygpICE9IFN0ZXA6OlNlbGZBeGlzCisgICAgICAg
ICAgICAmJiBzdGVwLT5heGlzKCkgIT0gU3RlcDo6RGVzY2VuZGFudEF4aXMgJiYgc3RlcC0+YXhp
cygpICE9IFN0ZXA6OkRlc2NlbmRhbnRPclNlbGZBeGlzICYmIHN0ZXAtPmF4aXMoKSAhPSBTdGVw
OjpBdHRyaWJ1dGVBeGlzKTsKKworICAgICAgICBpZiAobmVlZFRvQ2hlY2tGb3JEdXBsaWNhdGVO
b2RlcykKKyAgICAgICAgICAgIHJlc3VsdElzU29ydGVkID0gZmFsc2U7CisKKyAgICAgICAgLy8g
VGhpcyBpcyBhIHNpbXBsaWZpZWQgY2hlY2sgdGhhdCBjYW4gYmUgaW1wcm92ZWQgdG8gaGFuZGxl
IG1vcmUgY2FzZXMuCisgICAgICAgIGlmIChub2Rlcy5zdWJ0cmVlc0FyZURpc2pvaW50KCkgJiYg
KHN0ZXAtPmF4aXMoKSA9PSBTdGVwOjpDaGlsZEF4aXMgfHwgc3RlcC0+YXhpcygpID09IFN0ZXA6
OlNlbGZBeGlzKSkKKyAgICAgICAgICAgIG5ld05vZGVzLm1hcmtTdWJ0cmVlc0Rpc2pvaW50KHRy
dWUpOworCiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBub2Rlcy5zaXplKCk7IGor
KykgewogICAgICAgICAgICAgTm9kZVNldCBtYXRjaGVzOwogICAgICAgICAgICAgc3RlcC0+ZXZh
bHVhdGUobm9kZXNbal0sIG1hdGNoZXMpOwotICAgICAgICAgICAgCisKKyAgICAgICAgICAgIGlm
ICghbWF0Y2hlcy5pc1NvcnRlZCgpKQorICAgICAgICAgICAgICAgIHJlc3VsdElzU29ydGVkID0g
ZmFsc2U7CisKICAgICAgICAgICAgIGZvciAoc2l6ZV90IG5vZGVJbmRleCA9IDA7IG5vZGVJbmRl
eCA8IG1hdGNoZXMuc2l6ZSgpOyArK25vZGVJbmRleCkgewogICAgICAgICAgICAgICAgIE5vZGUq
IG5vZGUgPSBtYXRjaGVzW25vZGVJbmRleF07Ci0gICAgICAgICAgICAgICAgaWYgKG5ld05vZGVz
U2V0LmFkZChub2RlKS5zZWNvbmQpCisgICAgICAgICAgICAgICAgaWYgKCFuZWVkVG9DaGVja0Zv
ckR1cGxpY2F0ZU5vZGVzIHx8IG5ld05vZGVzU2V0LmFkZChub2RlKS5zZWNvbmQpCiAgICAgICAg
ICAgICAgICAgICAgIG5ld05vZGVzLmFwcGVuZChub2RlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMTI5LDcgKzE0NCw3IEBAIHZvaWQgTG9jYXRpb25QYXRoOjpldmFsdWF0ZShOb2Rl
U2V0JiBub2QKICAgICAgICAgbm9kZXMuc3dhcChuZXdOb2Rlcyk7CiAgICAgfQogCi0gICAgbm9k
ZXMubWFya1NvcnRlZChmYWxzZSk7CisgICAgbm9kZXMubWFya1NvcnRlZChyZXN1bHRJc1NvcnRl
ZCk7CiB9CiAKIHZvaWQgTG9jYXRpb25QYXRoOjphcHBlbmRTdGVwKFN0ZXAqIHN0ZXApCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>