<?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>96999</bug_id>
          
          <creation_ts>2012-09-18 04:45:46 -0700</creation_ts>
          <short_desc>Web Inspector: [Styles] For group selectors, transmit their segments with the &quot;matches&quot; flag</short_desc>
          <delta_ts>2012-09-25 01:05:04 -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>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>722664</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-18 04:45:46 -0700</bug_when>
    <thetext>Bug 96626 implemented the highlighting of matched individual selectors in grouped selectors. This can be done more effectively by modifying the protocol to transmit the grouped selectors broken down by comma-separated individual selectors, each having a flag telling whether the related node matches the selector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723461</commentid>
    <comment_count>1</comment_count>
      <attachid>164716</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-19 04:56:49 -0700</bug_when>
    <thetext>Created attachment 164716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724319</commentid>
    <comment_count>2</comment_count>
      <attachid>164870</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-20 02:46:06 -0700</bug_when>
    <thetext>Created attachment 164870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725367</commentid>
    <comment_count>3</comment_count>
      <attachid>164870</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-21 03:17:18 -0700</bug_when>
    <thetext>Comment on attachment 164870
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        * inspector/Inspector.json: Introduce SelectorSegment type and add elementMatchData field to CSSRule.

Lets add a test!

&gt; Source/WebCore/inspector/Inspector.json:2027
&gt; +                &quot;id&quot;: &quot;SelectorSegment&quot;,

SelectorList and Selector ?

&gt; Source/WebCore/inspector/Inspector.json:2031
&gt; +                    { &quot;name&quot;: &quot;matched&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Whether the related element matches this selector segment (default: false).&quot; }

matching ?

&gt; Source/WebCore/inspector/Inspector.json:2073
&gt; +                    { &quot;name&quot;: &quot;elementMatchData&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;SelectorSegment&quot; }, &quot;optional&quot;: true, &quot;description&quot;: &quot;Present for style rules&apos; grouping selectors if a context element is known and not all individual selectors are matched. Contains element matching data for each selector segment.&quot;},

I would introduce the SelectorList class and refer to it from here (it would encapsulate selectorText and selectorRange)

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:684
&gt; +    if (selectorList.hasOneSelector())

Lets provide this information at all times as a start - it would make front-end life easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726477</commentid>
    <comment_count>4</comment_count>
      <attachid>165334</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-24 02:11:53 -0700</bug_when>
    <thetext>Created attachment 165334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726742</commentid>
    <comment_count>5</comment_count>
      <attachid>165334</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-24 09:29:02 -0700</bug_when>
    <thetext>Comment on attachment 165334
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:2013
&gt; +                    { &quot;name&quot;: &quot;matches&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;$ref&quot;: &quot;RuleMatch&quot; }, &quot;description&quot;: &quot;Matches of CSS rules applicable to the pseudo style.&quot;}

Rename the group to PseudoIdMatches ?

&gt; Source/WebCore/inspector/Inspector.json:2031
&gt; +                    { &quot;name&quot;: &quot;matchingIndices&quot;, &quot;type&quot;: &quot;array&quot;, &quot;items&quot;: { &quot;type&quot;: &quot;integer&quot; }, &quot;description&quot;: &quot;Matching selector indices in the rule&apos;s selectorList selectors (0-based).&quot; }

matchingSelectors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727384</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-25 01:05:04 -0700</bug_when>
    <thetext>Committed r129470: &lt;http://trac.webkit.org/changeset/129470&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164716</attachid>
            <date>2012-09-19 04:56:49 -0700</date>
            <delta_ts>2012-09-20 02:46:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96999-20120919155614.patch</filename>
            <type>text/plain</type>
            <size>20236</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2E4OWEzYmY4MmMxMzFk
MWRhYmRlZmE0ZDk1M2MwODhjMzJlMzM1Yi4uY2ExOTQ1OWNkZjQ2OGU3M2EzMDlhNjM5NjcyYzkx
ZGZjZmMwZmE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTE5ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gRm9yIGdyb3VwIHNlbGVjdG9ycywgdHJhbnNtaXQgdGhlaXIgc2VnbWVu
dHMgd2l0aCB0aGUgIm1hdGNoZXMiIGZsYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2OTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIENTU1J1bGUgcHJvdG9jb2wgb2JqZWN0IGhhcyBiZWVuIG1v
ZGlmaWVkIHRvIGluY2x1ZGUgZ3JvdXAgc2VsZWN0b3IgbWF0Y2ggZGF0YSBpZiBhIGNvbnRleHQg
bm9kZSBpcyBhdmFpbGFibGUsCisgICAgICAgIHNvIHRoZSBhZGRpdGlvbmFsIGJhY2tlbmQgcm91
bmR0cmlwcyBmcm9tIFN0eWxlc1NpZGViYXJQYW5lIGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5Lgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOiBJbnRyb2R1Y2UgU2VsZWN0b3JT
ZWdtZW50IHR5cGUgYW5kIGFkZCBlbGVtZW50TWF0Y2hEYXRhIGZpZWxkIHRvIENTU1J1bGUuCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmF1Z21lbnRFbGVtZW50TWF0Y2hpbmdEYXRhKTogRmlsbCB0aGUgZWxlbWVudE1hdGNoRGF0
YSBmaWVsZCBpbiBDU1NSdWxlIHdoZW4gcG9zc2libGUuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1
bGVMaXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUnVsZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lubmVyUmVidWlsZFVwZGF0
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9y
ZWJ1aWxkU2VjdGlvbnNGb3JTdHlsZVJ1bGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5fbWFya1NlbGVjdG9yTWF0Y2hlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX21vdmVF
ZGl0b3JGcm9tU2VsZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGll
c1NlY3Rpb24ucHJvdG90eXBlLmVkaXRpbmdTZWxlY3RvckNhbmNlbGxlZCk6CisKIDIwMTItMDkt
MTggIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtD
aHJvbWl1bV0gU2tpYUdldEdseXBoV2lkdGhBbmRFeHRlbnRzKCkgc2hvdWxkIGludmVydCB5LWF4
aXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBmMTEzN2M3OGQw
NjY5MDM4MjhmMWVmODVhMTExMjExMWIxYzc2ZmU2Li4xNzNiYTM3M2YyNWRmZTQ3MzBmYmI1NjNj
ZDczMmNmYjc1MGI2YWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CkBAIC0yMDIzLDYgKzIwMjMsMTUgQEAKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
Q1NTIHJ1bGUgY29sbGVjdGlvbiBmb3IgYSBzaW5nbGUgcHNldWRvIHN0eWxlLiIKICAgICAgICAg
ICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIlNlbGVjdG9yU2Vn
bWVudCIsCisgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAg
ICAicHJvcGVydGllcyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0ZXh0Iiwg
InR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlNlbGVjdG9yIHNlZ21lbnQgdGV4dC4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWF0Y2hlZCIsICJ0eXBlIjogImJv
b2xlYW4iLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0aGUgcmVs
YXRlZCBlbGVtZW50IG1hdGNoZXMgdGhpcyBzZWxlY3RvciBzZWdtZW50IChkZWZhdWx0OiBmYWxz
ZSkuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiVGhpcyBvYmplY3QgcHJvdmlkZXMgc2VsZWN0b3Igc2VnbWVudCBtYXRjaGluZyBkYXRhIGZv
ciBncm91cGluZyBzZWxlY3RvcnMuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAiaWQiOiAiQ1NTU3R5bGVBdHRyaWJ1dGUiLAogICAgICAgICAgICAgICAg
ICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCkBAIC0y
MDYwLDYgKzIwNjksNyBAQAogICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJ1bGVJZCIsICIkcmVmIjogIkNTU1J1bGVJZCIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgQ1NTIHJ1bGUgaWRlbnRpZmllciAo
YWJzZW50IGZvciB1c2VyIGFnZW50IHN0eWxlc2hlZXQgYW5kIHVzZXItc3BlY2lmaWVkIHN0eWxl
c2hlZXQgcnVsZXMpLiJ9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlbGVjdG9y
VGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJSdWxlIHNlbGVjdG9yLiJ9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVsZW1lbnRNYXRjaERhdGEiLCAidHlw
ZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiU2VsZWN0b3JTZWdtZW50IiB9LCAib3B0
aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUHJlc2VudCBmb3Igc3R5bGUgcnVsZXMnIGdy
b3VwaW5nIHNlbGVjdG9ycyBpZiBhIGNvbnRleHQgZWxlbWVudCBpcyBrbm93biBhbmQgbm90IGFs
bCBpbmRpdmlkdWFsIHNlbGVjdG9ycyBhcmUgbWF0Y2hlZC4gQ29udGFpbnMgZWxlbWVudCBtYXRj
aGluZyBkYXRhIGZvciBlYWNoIHNlbGVjdG9yIHNlZ21lbnQuIn0sCiAgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAic291cmNlVVJMIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjog
dHJ1ZSwgImRlc2NyaXB0aW9uIjogIlBhcmVudCBzdHlsZXNoZWV0IHJlc291cmNlIFVSTCAoZm9y
IHJlZ3VsYXIgcnVsZXMpLiJ9LAogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJj
ZUxpbmUiLCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIkxpbmUgb3JkaW5hbCBv
ZiB0aGUgcnVsZSBzZWxlY3RvciBzdGFydCBjaGFyYWN0ZXIgaW4gdGhlIHJlc291cmNlLiJ9LAog
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9yaWdpbiIsICIkcmVmIjogIlN0eWxlU2hl
ZXRPcmlnaW4iLCAiZGVzY3JpcHRpb24iOiAiUGFyZW50IHN0eWxlc2hlZXQncyBvcmlnaW4uIn0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRl
eCA2MGViZDkzMTJiMmE1MzhhNDI2ZjE1ZjM5YzVjY2E2ZDZlNDNjZWRlLi40NmU3ZDExY2QwMDI2
NTAwMjE0YjRiMDMxOTRkNTA2ZWE5OWI4OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTY3OCw2ICs2NzgsMzEgQEAgYm9vbCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxl
Y3Rvcjo6UHNldWRvVHkKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIGF1Z21lbnRFbGVtZW50TWF0
Y2hpbmdEYXRhKFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGUqIHJ1bGVPYmplY3QsIGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KQoreworICAgIFZlY3RvcjxT
dHJpbmc+IHNlZ21lbnRzOworICAgIHNlbGVjdG9yLnNwbGl0KCcsJywgc2VnbWVudHMpOworICAg
IHNpemVfdCBzaXplID0gc2VnbWVudHMuc2l6ZSgpOworICAgIGlmIChzaXplIDwgMikKKyAgICAg
ICAgcmV0dXJuOworICAgIHNpemVfdCBtYXRjaENvdW50ID0gMDsKKyAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yU2VnbWVudD4gPiBtYXRjaERh
dGEgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JTZWdtZW50
Pjo6Y3JlYXRlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgU3RyaW5nIHRleHQgPSBzZWdtZW50cy5hdChpKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yU2VnbWVudD4gc2VnbWVudCA9
IFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yU2VnbWVudDo6Y3JlYXRlKCkKKyAgICAgICAgICAg
IC5zZXRUZXh0KHRleHQpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBib29s
IG1hdGNoZWQgPSBjb250ZXh0RWxlbWVudC0+d2Via2l0TWF0Y2hlc1NlbGVjdG9yKHRleHQsIGVj
KTsKKyAgICAgICAgaWYgKG1hdGNoZWQpIHsKKyAgICAgICAgICAgIHNlZ21lbnQtPnNldE1hdGNo
ZWQodHJ1ZSk7CisgICAgICAgICAgICArK21hdGNoQ291bnQ7CisgICAgICAgIH0KKyAgICAgICAg
bWF0Y2hEYXRhLT5hZGRJdGVtKHNlZ21lbnQpOworICAgIH0KKyAgICBpZiAobWF0Y2hDb3VudCAm
JiBtYXRjaENvdW50ICE9IHNpemUpCisgICAgICAgIHJ1bGVPYmplY3QtPnNldEVsZW1lbnRNYXRj
aERhdGEobWF0Y2hEYXRhKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hl
ZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25z
dCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4mIG1hdGNo
ZWRDU1NSdWxlcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQ
c2V1ZG9JZFJ1bGVzPiA+JiBwc2V1ZG9JZFJ1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+ID4mIGluaGVyaXRlZEVudHJp
ZXMpCiB7CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGVsZW1lbnRGb3JJZChlcnJvclN0cmluZywg
bm9kZUlkKTsKQEAgLTY4Nyw3ICs3MTIsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRN
YXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAg
IC8vIE1hdGNoZWQgcnVsZXMuCiAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGVs
ZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwogICAgIFJlZlB0cjxDU1NS
dWxlTGlzdD4gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci0+c3R5bGVSdWxlc0ZvckVsZW1l
bnQoZWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwotICAgIG1hdGNoZWRDU1NS
dWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChtYXRjaGVkUnVsZXMuZ2V0KCksIHN0eWxlUmVz
b2x2ZXIpOworICAgIG1hdGNoZWRDU1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChtYXRj
aGVkUnVsZXMuZ2V0KCksIHN0eWxlUmVzb2x2ZXIsIGVsZW1lbnQpOwogCiAgICAgLy8gUHNldWRv
IGVsZW1lbnRzLgogICAgIGlmICghaW5jbHVkZVBzZXVkbyB8fCAqaW5jbHVkZVBzZXVkbykgewpA
QCAtNjk3LDcgKzcyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgICAgICBp
ZiAobWF0Y2hlZFJ1bGVzICYmIG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlcz4gcHNldWRvU3R5bGVz
ID0gVHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlczo6Y3JlYXRlKCkKICAgICAgICAgICAg
ICAgICAgICAgLnNldFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4ocHNldWRvSWQpKQotICAgICAg
ICAgICAgICAgICAgICAuc2V0UnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxl
cy5nZXQoKSwgc3R5bGVSZXNvbHZlcikpOworICAgICAgICAgICAgICAgICAgICAuc2V0UnVsZXMo
YnVpbGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5nZXQoKSwgc3R5bGVSZXNvbHZlciwg
ZWxlbWVudCkpOwogICAgICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKHBzZXVk
b1N0eWxlcy5yZWxlYXNlKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC03MTAsMTAg
KzczNSwxMCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9k
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+ID4gaW5o
ZXJpdGVkU3R5bGVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVy
aXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKICAgICAgICAgRWxlbWVudCogcGFyZW50RWxlbWVu
dCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKICAgICAgICAgd2hpbGUgKHBhcmVudEVsZW1l
bnQpIHsKLSAgICAgICAgICAgIFN0eWxlUmVzb2x2ZXIqIHBhcmVudFN0eWxlUmVzb2x2ZXI9IHBh
cmVudEVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOworICAgICAgICAg
ICAgU3R5bGVSZXNvbHZlciogcGFyZW50U3R5bGVSZXNvbHZlciA9IHBhcmVudEVsZW1lbnQtPm93
bmVyRG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwogICAgICAgICAgICAgUmVmUHRyPENTU1J1
bGVMaXN0PiBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJlc29sdmVyLT5zdHlsZVJ1
bGVzRm9yRWxlbWVudChwYXJlbnRFbGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7
CiAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRy
eT4gcGFyZW50U3R5bGUgPSBUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Ojpj
cmVhdGUoKQotICAgICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZv
clJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcy5nZXQoKSwgc3R5bGVSZXNvbHZlcikpOworICAg
ICAgICAgICAgICAgIC5zZXRNYXRjaGVkQ1NTUnVsZXMoYnVpbGRBcnJheUZvclJ1bGVMaXN0KHBh
cmVudE1hdGNoZWRSdWxlcy5nZXQoKSwgc3R5bGVSZXNvbHZlciwgcGFyZW50RWxlbWVudCkpOwog
ICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPnN0eWxlKCkgJiYgcGFyZW50RWxlbWVudC0+
c3R5bGUoKS0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGUqIHN0eWxlU2hlZXQgPSBhc0luc3BlY3RvclN0eWxlU2hlZXQocGFyZW50
RWxlbWVudCk7CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQpCkBAIC0xMTE2LDcgKzEx
NDEsNyBAQCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVtIEluc3BlY3Rv
ckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bAogICAgIHJldHVybiBvcmlnaW47CiB9CiAK
LVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+
ID4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCog
cnVsZUxpc3QsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCitQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IEluc3BlY3RvckNTU0Fn
ZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0LCBTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gcmVz
dWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVh
dGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQpAQCAtMTEzNiw4ICsxMTYxLDEyIEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OmJ1CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGJpbmRTdHls
ZVNoZWV0KHJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSk7Ci0gICAgICAgIGlmIChpbnNwZWN0b3JT
dHlsZVNoZWV0KQotICAgICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKGluc3BlY3RvclN0eWxlU2hl
ZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShydWxlKSk7CisgICAgICAgIGlmIChpbnNwZWN0b3JTdHls
ZVNoZWV0KSB7CisgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4g
cnVsZU9iamVjdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShydWxl
KTsKKyAgICAgICAgICAgIGlmIChjb250ZXh0RWxlbWVudCkKKyAgICAgICAgICAgICAgICBhdWdt
ZW50RWxlbWVudE1hdGNoaW5nRGF0YShydWxlT2JqZWN0LmdldCgpLCBydWxlLT5zZWxlY3RvclRl
eHQoKSwgY29udGV4dEVsZW1lbnQpOworICAgICAgICAgICAgcmVzdWx0LT5hZGRJdGVtKHJ1bGVP
YmplY3QpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCBj
OWFhM2E0OGUzYmNhOTFmMDM3ZDA2ODliZGJmOWM5MzY0M2I3MDFkLi4yOTJmZTZmNWNiY2Q4YWE5
OGQ1MWY5NDJiMTM5YWRhMGY5ODQ0NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgSW5z
cGVjdG9yU3R5bGVTaGVldCogYXNzZXJ0U3R5bGVTaGVldEZvcklkKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJik7CiAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6RW51
bSBkZXRlY3RPcmlnaW4oQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQsIERvY3VtZW50KiBv
d25lckRvY3VtZW50KTsKIAotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0
KiwgU3R5bGVSZXNvbHZlciopOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVM
aXN0KiwgU3R5bGVSZXNvbHZlciosIEVsZW1lbnQqID0gMCk7CiAgICAgUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoRWxl
bWVudCopOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OlJlZ2lvbj4gPiBidWlsZEFycmF5Rm9yUmVnaW9ucyhFcnJvclN0cmluZyosIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnROb2RlSWQpOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJvclN0cmlu
ZyosIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggNmU5
OWRhYzgyMWZhMmI0MThhZDBlYmIyMjIzY2M0ODZiYWQ1YTI3ZC4uZjhlOWViNGU3NTIwZGU3OGFk
MjViMzA0MjJmYTc2YjJiMDNmNjVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtNzI5LDYgKzcyOSw4IEBAIFdlYklu
c3BlY3Rvci5DU1NSdWxlID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKICAgICB0aGlzLmlkID0gcGF5
bG9hZC5ydWxlSWQ7CiAgICAgdGhpcy5zZWxlY3RvclRleHQgPSBwYXlsb2FkLnNlbGVjdG9yVGV4
dDsKKyAgICBpZiAocGF5bG9hZC5lbGVtZW50TWF0Y2hEYXRhKQorICAgICAgICB0aGlzLmVsZW1l
bnRNYXRjaERhdGEgPSBwYXlsb2FkLmVsZW1lbnRNYXRjaERhdGE7CiAgICAgdGhpcy5zb3VyY2VM
aW5lID0gcGF5bG9hZC5zb3VyY2VMaW5lOwogICAgIHRoaXMuc291cmNlVVJMID0gcGF5bG9hZC5z
b3VyY2VVUkw7CiAgICAgaWYgKHBheWxvYWQuc291cmNlVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXgg
NmNlN2I3OTg5MzIzZTNhNWQwOGE2NzIzOTQwMzJhMzAzNzUzZmIyNy4uYTZjYmU4ZTUyMzMxZTVl
OTM2MzQ4ZTg0ZWU0ZGRhMTAxZjMwMDdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0zNTgsNyArMzU4
LDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdmFyIHVzZWRQcm9wZXJ0aWVzID0ge307CiAgICAgICAgIHRoaXMuX21hcmtVc2VkUHJvcGVy
dGllcyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcyk7CiAgICAgICAgIHRoaXMuc2VjdGlvbnNb
MF0gPSB0aGlzLl9yZWJ1aWxkU2VjdGlvbnNGb3JTdHlsZVJ1bGVzKHN0eWxlUnVsZXMsIHVzZWRQ
cm9wZXJ0aWVzLCAwLCBudWxsKTsKLSAgICAgICAgdmFyIHJlc3BvbnNlc0xlZnQgPSB0aGlzLnNl
Y3Rpb25zWzBdLmxlbmd0aDsKICAgICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSB0aGlzLnNlY3Rp
b25zWzBdLmluaGVyaXRlZFByb3BlcnRpZXNTZXBhcmF0b3JFbGVtZW50OwogCiAgICAgICAgIGlm
IChzdHlsZXMuY29tcHV0ZWRTdHlsZSkgICAgICAgIApAQCAtMzgxLDI4ICszODAsOSBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdXNl
ZFByb3BlcnRpZXMgPSB7fTsKICAgICAgICAgICAgIHRoaXMuX21hcmtVc2VkUHJvcGVydGllcyhz
dHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcyk7CiAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zW3Bz
ZXVkb0lkXSA9IHRoaXMuX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXMoc3R5bGVSdWxlcywg
dXNlZFByb3BlcnRpZXMsIHBzZXVkb0lkLCBhbmNob3JFbGVtZW50KTsKLSAgICAgICAgICAgIHJl
c3BvbnNlc0xlZnQgKz0gdGhpcy5zZWN0aW9uc1twc2V1ZG9JZF0ubGVuZ3RoOwogICAgICAgICB9
CiAKLSAgICAgICAgLy8gTWFyayBtYXRjaGluZyBzZWxlY3RvcnMgaW4gY29tbWEtZGVsaW1pdGVk
IHNlbGVjdG9yIGdyb3Vwcy4KLSAgICAgICAgdmFyIGJvdW5kTWFya0NhbGxiYWNrID0gbWFya0Nh
bGxiYWNrLmJpbmQodGhpcyk7Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuc2VjdGlvbnMp
IHsKLSAgICAgICAgICAgIHZhciBzZWN0aW9uc0ZvclBzZXVkb0lkID0gdGhpcy5zZWN0aW9uc1tp
ZF0uc2xpY2UoKTsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbnNGb3JQ
c2V1ZG9JZC5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uID0gc2Vj
dGlvbnNGb3JQc2V1ZG9JZFtqXTsKLSAgICAgICAgICAgICAgICBpZiAoIXNlY3Rpb24uc3R5bGVS
dWxlIHx8IHNlY3Rpb24uaXNCbGFuayB8fCBzZWN0aW9uLnN0eWxlUnVsZS5jb21wdXRlZFN0eWxl
IHx8IHNlY3Rpb24uc3R5bGVSdWxlLmlzQXR0cmlidXRlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGJvdW5kTWFya0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZWN0aW9uLl9tYXJrTWF0Y2hlZFNlbGVj
dG9yc0luR3JvdXAoYm91bmRNYXJrQ2FsbGJhY2spOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gbWFya0NhbGxiYWNrKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCEoLS1yZXNwb25zZXNMZWZ0KSkKLSAgICAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5
bGVzVXBkYXRlZEZvclRlc3Qobm9kZSwgdHJ1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5f
bm9kZVN0eWxlc1VwZGF0ZWRGb3JUZXN0KG5vZGUsIHRydWUpOwogICAgIH0sCiAKICAgICBfbm9k
ZVN0eWxlc1VwZGF0ZWRGb3JUZXN0OiBmdW5jdGlvbihub2RlLCByZWJ1aWxkKQpAQCAtNjA2LDgg
KzU4NiwxMCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
CiAgICAgICAgICAgICBpZiAoY29tcHV0ZWRTdHlsZSkKICAgICAgICAgICAgICAgICB2YXIgc2Vj
dGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXNTZWN0aW9uKHRo
aXMsIHN0eWxlUnVsZSwgdXNlZFByb3BlcnRpZXMpOwotICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24odGhpcywgc3R5bGVSdWxlLCBlZGl0YWJsZSwgc3R5
bGVSdWxlLmlzSW5oZXJpdGVkLCBsYXN0V2FzU2VwYXJhdG9yKTsKKyAgICAgICAgICAgICAgICBz
ZWN0aW9uLl9tYXJrU2VsZWN0b3JNYXRjaGVzKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzZWN0aW9uLmV4cGFuZGVkID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkU3R5
bGUpIHsKQEAgLTExMjQsOTEgKzExMDYsMzQgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGll
c1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9LAogCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbigpPX0gY2FsbGJhY2sKLSAgICAgKi8KLSAg
ICBfbWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBf
bWFya1NlbGVjdG9yTWF0Y2hlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIHNlbGYg
PSB0aGlzOwotICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICB2YXIgc2VsZWN0b3JUZXh0ID0gdGhpcy5fc2VsZWN0b3JFbGVtZW50LnRl
eHRDb250ZW50OwotICAgICAgICBpZiAoIXNlbGVjdG9yVGV4dCB8fCBzZWxlY3RvclRleHQuaW5k
ZXhPZigiLCIpID09PSAtMSkgewotICAgICAgICAgICAgbXljYWxsYmFjaygpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHBhbmVOb2RlID0gdGhpcy5fcGFy
ZW50UGFuZS5ub2RlOwotICAgICAgICB2YXIgcmVsYXRlZE5vZGUgPSB0aGlzLnN0eWxlUnVsZS5w
YXJlbnROb2RlIHx8IHBhbmVOb2RlOwotICAgICAgICBpZiAoIXJlbGF0ZWROb2RlKSB7Ci0gICAg
ICAgICAgICBteWNhbGxiYWNrKCk7CisgICAgICAgIHZhciBydWxlID0gdGhpcy5zdHlsZVJ1bGUu
cnVsZTsKKyAgICAgICAgaWYgKCFydWxlIHx8ICFydWxlLmVsZW1lbnRNYXRjaERhdGEpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0cmltKHRleHQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0LnRyaW0oKTsKLSAgICAgICAgfQot
ICAgICAgICB2YXIgc2VsZWN0b3JzID0gc2VsZWN0b3JUZXh0LnNwbGl0KCIsIikubWFwKHRyaW0p
OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUocmVsYXRl
ZE5vZGUsICIiLCByZXNvbHZlZENhbGxiYWNrKTsKLSAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZWRD
YWxsYmFjayhvYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghb2JqZWN0KSB7Ci0g
ICAgICAgICAgICAgICAgbXljYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIHNpemUgPSBzZWxlY3Rv
cnMubGVuZ3RoOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9y
ID0gc2VsZWN0b3JzW2ldOwotICAgICAgICAgICAgICAgIG9iamVjdC5jYWxsRnVuY3Rpb25KU09O
KG1hdGNoZXNTZWxlY3RvciwgW3sgdmFsdWU6IHNlbGVjdG9yc1tpXSB9XSwgbWF0Y2hlc0NhbGxi
YWNrLmJpbmQodGhpcywgaSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gbWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gdGhpcy53ZWJraXRNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgICB2YXIgbWF0Y2hGb3VuZDsKLSAg
ICAgICAgZnVuY3Rpb24gbWF0Y2hlc0NhbGxiYWNrKHNlbGVjdG9ySW5kZXgsIG1hdGNoZXMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhciBpc0xhc3QgPSBzZWxlY3RvckluZGV4ID09PSBzZWxl
Y3RvcnMubGVuZ3RoIC0gMTsKLSAgICAgICAgICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgICAgIHJlc3VsdFtzZWxlY3RvckluZGV4
XSA9IGZyYWdtZW50OwogCisgICAgICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURv
Y3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgdmFyIGVsZW1lbnRNYXRjaERhdGEgPSBydWxlLmVs
ZW1lbnRNYXRjaERhdGE7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBsYXN0SW5kZXggPSBlbGVt
ZW50TWF0Y2hEYXRhLmxlbmd0aCAtIDE7IGkgPD0gbGFzdEluZGV4IDsgKytpKSB7CisgICAgICAg
ICAgICB2YXIgZW50cnkgPSBlbGVtZW50TWF0Y2hEYXRhW2ldOwogICAgICAgICAgICAgdmFyIHNl
bGVjdG9yTm9kZTsKLSAgICAgICAgICAgIGlmIChtYXRjaGVzICYmIHBhbmVOb2RlID09PSBzZWxm
Ll9wYXJlbnRQYW5lLm5vZGUpIHsKKyAgICAgICAgICAgIHZhciB0ZXh0Tm9kZSA9IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKGVudHJ5LnRleHQpOworICAgICAgICAgICAgaWYgKGVudHJ5Lm1hdGNo
ZWQpIHsKICAgICAgICAgICAgICAgICBzZWxlY3Rvck5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgc2VsZWN0b3JOb2RlLmNsYXNzTmFtZSA9ICJz
ZWxlY3Rvci1tYXRjaGVzIjsKLSAgICAgICAgICAgICAgICBzZWxlY3Rvck5vZGUuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc2VsZWN0b3JzW3NlbGVjdG9ySW5kZXhdKSk7Ci0g
ICAgICAgICAgICAgICAgbWF0Y2hGb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2VsZWN0
b3JOb2RlLmFwcGVuZENoaWxkKHRleHROb2RlKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgIHNlbGVjdG9yTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlbGVjdG9y
c1tzZWxlY3RvckluZGV4XSk7CisgICAgICAgICAgICAgICAgc2VsZWN0b3JOb2RlID0gdGV4dE5v
ZGU7CiAKICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHNlbGVjdG9yTm9kZSk7Ci0g
ICAgICAgICAgICBpZiAoIWlzTGFzdCkgeworICAgICAgICAgICAgaWYgKGkgIT09IGxhc3RJbmRl
eCkKICAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiLCAiKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAvLyBUaGlzIGNoZWNrIGlzIGhlcmUgaW4gY2FzZSB0aGUgZWxlbWVudCBj
bGFzcyBoYXMgYmVlbiBjaGFuZ2VkIGZyb20gSlMgZHVyaW5nIHRoZSByb3VuZHRyaXAsCi0gICAg
ICAgICAgICAvLyBzbyB0aGUgZWxlbWVudCBtYXRjaGVzIG5vbmUgb2YgdGhlIGRpc3RpbmN0IHNl
bGVjdG9ycy4gRmFsbCBiYWNrIHRvICJhbGwgc2VsZWN0b3JzIG1hdGNoIi4KLSAgICAgICAgICAg
IGlmIChtYXRjaEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3JFbGVtZW50
LmNsYXNzTmFtZSA9ICJzZWxlY3RvciI7Ci0gICAgICAgICAgICAgICAgc2VsZi5fc2VsZWN0b3JF
bGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NlbGVj
dG9yRWxlbWVudC5hcHBlbmRDaGlsZChyZXN1bHRbaV0pOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgbXljYWxsYmFjaygpOwogICAgICAgICB9Ci0gICAgfSwKIAorICAgICAgICB0aGlzLl9z
ZWxlY3RvckVsZW1lbnQuY2xhc3NOYW1lID0gInNlbGVjdG9yIjsKKyAgICAgICAgdGhpcy5fc2Vs
ZWN0b3JFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxl
bWVudC5hcHBlbmRDaGlsZChmcmFnbWVudCk7CisgICAgfSwKICAgICBfY2hlY2tXaWxsQ2FuY2Vs
RWRpdGluZzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHdpbGxDYXVzZUNhbmNlbEVk
aXRpbmcgPSB0aGlzLl93aWxsQ2F1c2VDYW5jZWxFZGl0aW5nOwpAQCAtMTM1MCwzMiArMTI3NSwy
NyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAK
ICAgICBfbW92ZUVkaXRvckZyb21TZWxlY3RvcjogZnVuY3Rpb24obW92ZURpcmVjdGlvbikKICAg
ICB7CisgICAgICAgIHRoaXMuX21hcmtTZWxlY3Rvck1hdGNoZXMoKTsKIAotICAgICAgICBpZiAo
IW1vdmVEaXJlY3Rpb24pIHsKLSAgICAgICAgICAgIHRoaXMuX21hcmtNYXRjaGVkU2VsZWN0b3Jz
SW5Hcm91cCgpOworICAgICAgICBpZiAoIW1vdmVEaXJlY3Rpb24pCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KIAotICAgICAgICB0aGlzLl9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3Jv
dXAobWFya0NhbGxiYWNrLmJpbmQodGhpcykpOwotCi0gICAgICAgIGZ1bmN0aW9uIG1hcmtDYWxs
YmFjaygpIHsKLSAgICAgICAgICAgIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIpIHsK
LSAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwotICAgICAgICAgICAgICAgIHZhciBmaXJz
dENoaWxkID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW5bMF07Ci0gICAgICAg
ICAgICAgICAgd2hpbGUgKGZpcnN0Q2hpbGQgJiYgZmlyc3RDaGlsZC5pbmhlcml0ZWQpCi0gICAg
ICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwotICAg
ICAgICAgICAgICAgIGlmICghZmlyc3RDaGlsZCkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5h
ZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICBmaXJzdENoaWxkLnN0YXJ0RWRpdGluZyhmaXJzdENoaWxk
Lm5hbWVFbGVtZW50KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFy
IHByZXZpb3VzU2VjdGlvbiA9IHRoaXMucHJldmlvdXNFZGl0YWJsZVNpYmxpbmcoKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIXByZXZpb3VzU2VjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiKSB7CisgICAgICAg
ICAgICB0aGlzLmV4cGFuZCgpOworICAgICAgICAgICAgdmFyIGZpcnN0Q2hpbGQgPSB0aGlzLnBy
b3BlcnRpZXNUcmVlT3V0bGluZS5jaGlsZHJlblswXTsKKyAgICAgICAgICAgIHdoaWxlIChmaXJz
dENoaWxkICYmIGZpcnN0Q2hpbGQuaW5oZXJpdGVkKQorICAgICAgICAgICAgICAgIGZpcnN0Q2hp
bGQgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOworICAgICAgICAgICAgaWYgKCFmaXJzdENoaWxk
KQorICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGlu
ZygpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQuc3RhcnRF
ZGl0aW5nKGZpcnN0Q2hpbGQubmFtZUVsZW1lbnQpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgdmFyIHByZXZpb3VzU2VjdGlvbiA9IHRoaXMucHJldmlvdXNFZGl0YWJsZVNpYmxpbmco
KTsKKyAgICAgICAgICAgIGlmICghcHJldmlvdXNTZWN0aW9uKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgICAgIHByZXZpb3VzU2VjdGlvbi5leHBhbmQoKTsKLSAgICAg
ICAgICAgICAgICBwcmV2aW91c1NlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRp
dGluZygpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmV4cGFu
ZCgpOworICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5z
dGFydEVkaXRpbmcoKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTE0MTUsNyArMTMzNSw3IEBA
IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIC8vIERvIG5vdGhpbmcgYnV0IG1hcmsgdGhlIHNlbGVjdG9ycyBpbiBncm91cCBp
ZiBuZWNlc3NhcnkuCiAgICAgICAgIC8vIFRoaXMgaXMgb3ZlcnJpZGRlbiBieSBCbGFua1N0eWxl
UHJvcGVydGllc1NlY3Rpb24uCi0gICAgICAgIHRoaXMuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5H
cm91cCgpOworICAgICAgICB0aGlzLl9tYXJrU2VsZWN0b3JNYXRjaGVzKCk7CiAgICAgfQogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164870</attachid>
            <date>2012-09-20 02:46:06 -0700</date>
            <delta_ts>2012-09-24 02:11:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96999-20120920134531.patch</filename>
            <type>text/plain</type>
            <size>20330</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBmN2QyZDBkOTljNjAx
ODEzYWI2NmYyMmZhMDVkYWQ5Zjk0NTAxYy4uYWY5Y2VkNDNjMTlmNmFiZDU2YjE3ZDQ2ODBhNzhl
ZWFmMDg3NDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTE5ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gRm9yIGdyb3VwIHNlbGVjdG9ycywgdHJhbnNtaXQgdGhlaXIgc2VnbWVu
dHMgd2l0aCB0aGUgIm1hdGNoZXMiIGZsYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2OTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIENTU1J1bGUgcHJvdG9jb2wgb2JqZWN0IGhhcyBiZWVuIG1v
ZGlmaWVkIHRvIGluY2x1ZGUgZ3JvdXAgc2VsZWN0b3IgbWF0Y2ggZGF0YSBpZiBhIGNvbnRleHQg
bm9kZSBpcyBhdmFpbGFibGUsCisgICAgICAgIHNvIHRoZSBhZGRpdGlvbmFsIGJhY2tlbmQgcm91
bmR0cmlwcyBmcm9tIFN0eWxlc1NpZGViYXJQYW5lIGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5Lgor
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOiBJbnRyb2R1Y2UgU2VsZWN0b3JT
ZWdtZW50IHR5cGUgYW5kIGFkZCBlbGVtZW50TWF0Y2hEYXRhIGZpZWxkIHRvIENTU1J1bGUuCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmF1Z21lbnRFbGVtZW50TWF0Y2hpbmdEYXRhKTogRmlsbCB0aGUgZWxlbWVudE1hdGNoRGF0
YSBmaWVsZCBpbiBDU1NSdWxlIHdoZW4gcG9zc2libGUuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1
bGVMaXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1N0eWxlTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUnVsZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lubmVyUmVidWlsZFVwZGF0
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9y
ZWJ1aWxkU2VjdGlvbnNGb3JTdHlsZVJ1bGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5fbWFya1NlbGVjdG9yTWF0Y2hlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX21vdmVF
ZGl0b3JGcm9tU2VsZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGll
c1NlY3Rpb24ucHJvdG90eXBlLmVkaXRpbmdTZWxlY3RvckNhbmNlbGxlZCk6CisKIDIwMTItMDkt
MjAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAg
ICAgICAgW1RvdWNoQWRqdXN0bWVudF0gU2ltcGxpZnkgYW5kIGltcHJvdmUgaHlicmlkIGRpc3Rh
bmNlIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4
IDVjMThkYWQ5NTUxZWMyMzI4OTgzYWNmMTgyZjk2NjFmZjhlNzY2NjcuLmY3OGM3ZTI5ZjA5NDdk
MGIwMjUwMGI3MjI2MmRhZGMzN2RiODNiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KQEAgLTIwMjQsNiArMjAyNCwxNSBAQAogICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJDU1MgcnVsZSBjb2xsZWN0aW9uIGZvciBhIHNpbmdsZSBwc2V1ZG8gc3R5bGUu
IgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAi
U2VsZWN0b3JTZWdtZW50IiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAg
ICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInRleHQiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VsZWN0b3Igc2Vn
bWVudCB0ZXh0LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXRjaGVkIiwg
InR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJXaGV0
aGVyIHRoZSByZWxhdGVkIGVsZW1lbnQgbWF0Y2hlcyB0aGlzIHNlbGVjdG9yIHNlZ21lbnQgKGRl
ZmF1bHQ6IGZhbHNlKS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJUaGlzIG9iamVjdCBwcm92aWRlcyBzZWxlY3RvciBzZWdtZW50IG1hdGNo
aW5nIGRhdGEgZm9yIGdyb3VwaW5nIHNlbGVjdG9ycy4iCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICJpZCI6ICJDU1NTdHlsZUF0dHJpYnV0ZSIsCiAgICAg
ICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAicHJvcGVydGll
cyI6IFsKQEAgLTIwNjEsNiArMjA3MCw3IEBACiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMi
OiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicnVsZUlkIiwgIiRyZWYiOiAiQ1NT
UnVsZUlkIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBDU1MgcnVsZSBp
ZGVudGlmaWVyIChhYnNlbnQgZm9yIHVzZXIgYWdlbnQgc3R5bGVzaGVldCBhbmQgdXNlci1zcGVj
aWZpZWQgc3R5bGVzaGVldCBydWxlcykuIn0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAic2VsZWN0b3JUZXh0IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlJ1bGUg
c2VsZWN0b3IuIn0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZWxlbWVudE1hdGNo
RGF0YSIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJTZWxlY3RvclNlZ21l
bnQiIH0sICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJQcmVzZW50IGZvciBzdHls
ZSBydWxlcycgZ3JvdXBpbmcgc2VsZWN0b3JzIGlmIGEgY29udGV4dCBlbGVtZW50IGlzIGtub3du
IGFuZCBub3QgYWxsIGluZGl2aWR1YWwgc2VsZWN0b3JzIGFyZSBtYXRjaGVkLiBDb250YWlucyBl
bGVtZW50IG1hdGNoaW5nIGRhdGEgZm9yIGVhY2ggc2VsZWN0b3Igc2VnbWVudC4ifSwKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2VVUkwiLCAidHlwZSI6ICJzdHJpbmciLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUGFyZW50IHN0eWxlc2hlZXQgcmVzb3Vy
Y2UgVVJMIChmb3IgcmVndWxhciBydWxlcykuIn0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAic291cmNlTGluZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiTGlu
ZSBvcmRpbmFsIG9mIHRoZSBydWxlIHNlbGVjdG9yIHN0YXJ0IGNoYXJhY3RlciBpbiB0aGUgcmVz
b3VyY2UuIn0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwgIiRyZWYi
OiAiU3R5bGVTaGVldE9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJQYXJlbnQgc3R5bGVzaGVldCdz
IG9yaWdpbi4ifSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCmluZGV4IDYwZWJkOTMxMmIyYTUzOGE0MjZmMTVmMzljNWNjYTZkNmU0M2NlZGUuLmZj
NzkxMzNlNGRmMWE1MjBkYTRkODBhNjU2ZWNmNWRkN2Q3NjNmNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjc4LDYgKzY3OCwzMSBA
QCBib29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1l
bnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9UeQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgYXVnbWVu
dEVsZW1lbnRNYXRjaGluZ0RhdGEoVHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZSogcnVsZU9iamVj
dCwgQ1NTU3R5bGVSdWxlKiBydWxlLCBFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKK3sKKyAgICBj
b25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCA9IHJ1bGUtPnN0eWxlUnVsZSgpLT5z
ZWxlY3Rvckxpc3QoKTsKKyAgICBpZiAoc2VsZWN0b3JMaXN0Lmhhc09uZVNlbGVjdG9yKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBtYXRjaENvdW50ID0gMDsKKyAgICB1bnNpZ25l
ZCBzaXplID0gMDsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OlNlbGVjdG9yU2VnbWVudD4gPiBtYXRjaERhdGEgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JTZWdtZW50Pjo6Y3JlYXRlKCk7CisgICAgZm9yIChDU1NT
ZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVj
dG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgeworICAgICAgICBTdHJpbmcg
dGV4dCA9IHNlbGVjdG9yLT5zZWxlY3RvclRleHQoKTsKKyAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yU2VnbWVudD4gc2VnbWVudCA9IFR5cGVCdWlsZGVyOjpDU1M6OlNl
bGVjdG9yU2VnbWVudDo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRUZXh0KHRleHQpOworICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBib29sIG1hdGNoZWQgPSBjb250ZXh0RWxl
bWVudC0+d2Via2l0TWF0Y2hlc1NlbGVjdG9yKHRleHQsIGVjKTsKKyAgICAgICAgaWYgKG1hdGNo
ZWQpIHsKKyAgICAgICAgICAgIHNlZ21lbnQtPnNldE1hdGNoZWQodHJ1ZSk7CisgICAgICAgICAg
ICArK21hdGNoQ291bnQ7CisgICAgICAgIH0KKyAgICAgICAgKytzaXplOworICAgICAgICBtYXRj
aERhdGEtPmFkZEl0ZW0oc2VnbWVudCk7CisgICAgfQorICAgIGlmIChtYXRjaENvdW50ICYmIG1h
dGNoQ291bnQgIT0gc2l6ZSkKKyAgICAgICAgcnVsZU9iamVjdC0+c2V0RWxlbWVudE1hdGNoRGF0
YShtYXRjaERhdGEpOworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5
bGVzRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGJv
b2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiYgbWF0Y2hlZENT
U1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVk
b0lkUnVsZXM+ID4mIHBzZXVkb0lkUnVsZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gPiYgaW5oZXJpdGVkRW50cmllcykK
IHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2Rl
SWQpOwpAQCAtNjg3LDcgKzcxMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgLy8g
TWF0Y2hlZCBydWxlcy4KICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZWxlbWVu
dC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CiAgICAgUmVmUHRyPENTU1J1bGVM
aXN0PiBtYXRjaGVkUnVsZXMgPSBzdHlsZVJlc29sdmVyLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChl
bGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7Ci0gICAgbWF0Y2hlZENTU1J1bGVz
ID0gYnVpbGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5nZXQoKSwgc3R5bGVSZXNvbHZl
cik7CisgICAgbWF0Y2hlZENTU1J1bGVzID0gYnVpbGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRS
dWxlcy5nZXQoKSwgc3R5bGVSZXNvbHZlciwgZWxlbWVudCk7CiAKICAgICAvLyBQc2V1ZG8gZWxl
bWVudHMuCiAgICAgaWYgKCFpbmNsdWRlUHNldWRvIHx8ICppbmNsdWRlUHNldWRvKSB7CkBAIC02
OTcsNyArNzIyLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zv
ck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICAgICAgICAgIGlmICht
YXRjaGVkUnVsZXMgJiYgbWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZFJ1bGVzPiBwc2V1ZG9TdHlsZXMgPSBU
eXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZFJ1bGVzOjpjcmVhdGUoKQogICAgICAgICAgICAgICAg
ICAgICAuc2V0UHNldWRvSWQoc3RhdGljX2Nhc3Q8aW50Pihwc2V1ZG9JZCkpCi0gICAgICAgICAg
ICAgICAgICAgIC5zZXRSdWxlcyhidWlsZEFycmF5Rm9yUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLmdl
dCgpLCBzdHlsZVJlc29sdmVyKSk7CisgICAgICAgICAgICAgICAgICAgIC5zZXRSdWxlcyhidWls
ZEFycmF5Rm9yUnVsZUxpc3QobWF0Y2hlZFJ1bGVzLmdldCgpLCBzdHlsZVJlc29sdmVyLCBlbGVt
ZW50KSk7CiAgICAgICAgICAgICAgICAgcHNldWRvRWxlbWVudHMtPmFkZEl0ZW0ocHNldWRvU3R5
bGVzLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTcxMCwxMCArNzM1
LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vCiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gPiBpbmhlcml0
ZWRTdHlsZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVk
U3R5bGVFbnRyeT46OmNyZWF0ZSgpOwogICAgICAgICBFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpOwogICAgICAgICB3aGlsZSAocGFyZW50RWxlbWVudCkg
ewotICAgICAgICAgICAgU3R5bGVSZXNvbHZlciogcGFyZW50U3R5bGVSZXNvbHZlcj0gcGFyZW50
RWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CisgICAgICAgICAgICBT
dHlsZVJlc29sdmVyKiBwYXJlbnRTdHlsZVJlc29sdmVyID0gcGFyZW50RWxlbWVudC0+b3duZXJE
b2N1bWVudCgpLT5zdHlsZVJlc29sdmVyKCk7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxp
c3Q+IHBhcmVudE1hdGNoZWRSdWxlcyA9IHBhcmVudFN0eWxlUmVzb2x2ZXItPnN0eWxlUnVsZXNG
b3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlUmVzb2x2ZXI6OkFsbENTU1J1bGVzKTsKICAg
ICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5PiBw
YXJlbnRTdHlsZSA9IFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk6OmNyZWF0
ZSgpCi0gICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yUnVs
ZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLmdldCgpLCBzdHlsZVJlc29sdmVyKSk7CisgICAgICAg
ICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWlsZEFycmF5Rm9yUnVsZUxpc3QocGFyZW50
TWF0Y2hlZFJ1bGVzLmdldCgpLCBzdHlsZVJlc29sdmVyLCBwYXJlbnRFbGVtZW50KSk7CiAgICAg
ICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+c3R5bGUoKSAmJiBwYXJlbnRFbGVtZW50LT5zdHls
ZSgpLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZSogc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVldChwYXJlbnRFbGVt
ZW50KTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGVTaGVldCkKQEAgLTExMTYsNyArMTE0MSw3
IEBAIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gSW5zcGVjdG9yQ1NT
QWdlbnQ6OmRldGVjdE9yaWdpbihDU1NTdHlsCiAgICAgcmV0dXJuIG9yaWdpbjsKIH0KIAotUGFz
c1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxl
TGlzdCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCogcnVsZUxpc3QsIFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogewogICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiByZXN1bHQg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgp
OwogICAgIGlmICghcnVsZUxpc3QpCkBAIC0xMTM2LDggKzExNjEsMTIgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBJbnNwZWN0b3JD
U1NBZ2VudDo6YnUKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAg
ICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gYmluZFN0eWxlU2hl
ZXQocnVsZS0+cGFyZW50U3R5bGVTaGVldCgpKTsKLSAgICAgICAgaWYgKGluc3BlY3RvclN0eWxl
U2hlZXQpCi0gICAgICAgICAgICByZXN1bHQtPmFkZEl0ZW0oaW5zcGVjdG9yU3R5bGVTaGVldC0+
YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpKTsKKyAgICAgICAgaWYgKGluc3BlY3RvclN0eWxlU2hl
ZXQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBydWxl
T2JqZWN0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpOwor
ICAgICAgICAgICAgaWYgKGNvbnRleHRFbGVtZW50KQorICAgICAgICAgICAgICAgIGF1Z21lbnRF
bGVtZW50TWF0Y2hpbmdEYXRhKHJ1bGVPYmplY3QuZ2V0KCksIHJ1bGUsIGNvbnRleHRFbGVtZW50
KTsKKyAgICAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShydWxlT2JqZWN0KTsKKyAgICAgICAgfQog
ICAgIH0KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggYzlhYTNhNDhlM2JjYTkxZjAzN2Qw
Njg5YmRiZjljOTM2NDNiNzAxZC4uMjkyZmU2ZjVjYmNkOGFhOThkNTFmOTQyYjEzOWFkYTBmOTg0
NDRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
QEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGFz
c2VydFN0eWxlU2hlZXRGb3JJZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYpOwogICAgIFR5
cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OkVudW0gZGV0ZWN0T3JpZ2luKENTU1N0
eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0LCBEb2N1bWVudCogb3duZXJEb2N1bWVudCk7CiAKLSAg
ICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiA+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCosIFN0eWxlUmVzb2x2ZXIqKTsK
KyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NS
dWxlPiA+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCosIFN0eWxlUmVzb2x2ZXIq
LCBFbGVtZW50KiA9IDApOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqKTsKICAgICBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+ID4gYnVpbGRB
cnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPE5vZGVMaXN0PiwgaW50IGRv
Y3VtZW50Tm9kZUlkKTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxv
dz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcqLCBXZWJLaXROYW1lZEZsb3cq
LCBpbnQgZG9jdW1lbnROb2RlSWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDZlOTlkYWM4MjFmYTJiNDE4YWQwZWJi
MjIyM2NjNDg2YmFkNWEyN2QuLmY4ZTllYjRlNzUyMGRlNzhhZDI1YjMwNDIyZmE3NmIyYjAzZjY1
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0
eWxlTW9kZWwuanMKQEAgLTcyOSw2ICs3MjksOCBAQCBXZWJJbnNwZWN0b3IuQ1NTUnVsZSA9IGZ1
bmN0aW9uKHBheWxvYWQpCiB7CiAgICAgdGhpcy5pZCA9IHBheWxvYWQucnVsZUlkOwogICAgIHRo
aXMuc2VsZWN0b3JUZXh0ID0gcGF5bG9hZC5zZWxlY3RvclRleHQ7CisgICAgaWYgKHBheWxvYWQu
ZWxlbWVudE1hdGNoRGF0YSkKKyAgICAgICAgdGhpcy5lbGVtZW50TWF0Y2hEYXRhID0gcGF5bG9h
ZC5lbGVtZW50TWF0Y2hEYXRhOwogICAgIHRoaXMuc291cmNlTGluZSA9IHBheWxvYWQuc291cmNl
TGluZTsKICAgICB0aGlzLnNvdXJjZVVSTCA9IHBheWxvYWQuc291cmNlVVJMOwogICAgIGlmIChw
YXlsb2FkLnNvdXJjZVVSTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDZjZTdiNzk4OTMyM2UzYTVkMDhh
NjcyMzk0MDMyYTMwMzc1M2ZiMjcuLmE2Y2JlOGU1MjMzMWU1ZTkzNjM0OGU4NGVlNGRkYTEwMWYz
MDA3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5
bGVzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMzU4LDcgKzM1OCw2IEBAIFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciB1c2VkUHJvcGVydGll
cyA9IHt9OwogICAgICAgICB0aGlzLl9tYXJrVXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNl
ZFByb3BlcnRpZXMpOwogICAgICAgICB0aGlzLnNlY3Rpb25zWzBdID0gdGhpcy5fcmVidWlsZFNl
Y3Rpb25zRm9yU3R5bGVSdWxlcyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcywgMCwgbnVsbCk7
Ci0gICAgICAgIHZhciByZXNwb25zZXNMZWZ0ID0gdGhpcy5zZWN0aW9uc1swXS5sZW5ndGg7CiAg
ICAgICAgIHZhciBhbmNob3JFbGVtZW50ID0gdGhpcy5zZWN0aW9uc1swXS5pbmhlcml0ZWRQcm9w
ZXJ0aWVzU2VwYXJhdG9yRWxlbWVudDsKIAogICAgICAgICBpZiAoc3R5bGVzLmNvbXB1dGVkU3R5
bGUpICAgICAgICAKQEAgLTM4MSwyOCArMzgwLDkgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHVzZWRQcm9wZXJ0aWVzID0ge307CiAg
ICAgICAgICAgICB0aGlzLl9tYXJrVXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNlZFByb3Bl
cnRpZXMpOwogICAgICAgICAgICAgdGhpcy5zZWN0aW9uc1twc2V1ZG9JZF0gPSB0aGlzLl9yZWJ1
aWxkU2VjdGlvbnNGb3JTdHlsZVJ1bGVzKHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBwc2V1
ZG9JZCwgYW5jaG9yRWxlbWVudCk7Ci0gICAgICAgICAgICByZXNwb25zZXNMZWZ0ICs9IHRoaXMu
c2VjdGlvbnNbcHNldWRvSWRdLmxlbmd0aDsKICAgICAgICAgfQogCi0gICAgICAgIC8vIE1hcmsg
bWF0Y2hpbmcgc2VsZWN0b3JzIGluIGNvbW1hLWRlbGltaXRlZCBzZWxlY3RvciBncm91cHMuCi0g
ICAgICAgIHZhciBib3VuZE1hcmtDYWxsYmFjayA9IG1hcmtDYWxsYmFjay5iaW5kKHRoaXMpOwot
ICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLnNlY3Rpb25zKSB7Ci0gICAgICAgICAgICB2YXIg
c2VjdGlvbnNGb3JQc2V1ZG9JZCA9IHRoaXMuc2VjdGlvbnNbaWRdLnNsaWNlKCk7Ci0gICAgICAg
ICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHNlY3Rpb25zRm9yUHNldWRvSWQubGVuZ3RoOyArK2op
IHsKLSAgICAgICAgICAgICAgICB2YXIgc2VjdGlvbiA9IHNlY3Rpb25zRm9yUHNldWRvSWRbal07
Ci0gICAgICAgICAgICAgICAgaWYgKCFzZWN0aW9uLnN0eWxlUnVsZSB8fCBzZWN0aW9uLmlzQmxh
bmsgfHwgc2VjdGlvbi5zdHlsZVJ1bGUuY29tcHV0ZWRTdHlsZSB8fCBzZWN0aW9uLnN0eWxlUnVs
ZS5pc0F0dHJpYnV0ZSkgewotICAgICAgICAgICAgICAgICAgICBib3VuZE1hcmtDYWxsYmFjaygp
OwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgc2VjdGlvbi5fbWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwKGJvdW5kTWFy
a0NhbGxiYWNrKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IG1hcmtDYWxsYmFjaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghKC0tcmVzcG9uc2Vz
TGVmdCkpCi0gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVN0eWxlc1VwZGF0ZWRGb3JUZXN0KG5v
ZGUsIHRydWUpOwotICAgICAgICB9CisgICAgICAgIHRoaXMuX25vZGVTdHlsZXNVcGRhdGVkRm9y
VGVzdChub2RlLCB0cnVlKTsKICAgICB9LAogCiAgICAgX25vZGVTdHlsZXNVcGRhdGVkRm9yVGVz
dDogZnVuY3Rpb24obm9kZSwgcmVidWlsZCkKQEAgLTYwNiw4ICs1ODYsMTAgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgaWYgKGNv
bXB1dGVkU3R5bGUpCiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbih0aGlzLCBzdHlsZVJ1bGUsIHVzZWRQ
cm9wZXJ0aWVzKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIHZhciBzZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNT
ZWN0aW9uKHRoaXMsIHN0eWxlUnVsZSwgZWRpdGFibGUsIHN0eWxlUnVsZS5pc0luaGVyaXRlZCwg
bGFzdFdhc1NlcGFyYXRvcik7CisgICAgICAgICAgICAgICAgc2VjdGlvbi5fbWFya1NlbGVjdG9y
TWF0Y2hlcygpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgc2VjdGlvbi5leHBhbmRlZCA9
IHRydWU7CiAKICAgICAgICAgICAgIGlmIChjb21wdXRlZFN0eWxlKSB7CkBAIC0xMTI0LDkxICsx
MTA2LDM0IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oKT19IGNhbGxiYWNrCi0gICAgICovCi0gICAgX21hcmtNYXRjaGVkU2VsZWN0
b3JzSW5Hcm91cDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgX21hcmtTZWxlY3Rvck1hdGNoZXM6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZnVu
Y3Rpb24gbXljYWxsYmFjaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjYWxsYmFjaykK
LSAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHNl
bGVjdG9yVGV4dCA9IHRoaXMuX3NlbGVjdG9yRWxlbWVudC50ZXh0Q29udGVudDsKLSAgICAgICAg
aWYgKCFzZWxlY3RvclRleHQgfHwgc2VsZWN0b3JUZXh0LmluZGV4T2YoIiwiKSA9PT0gLTEpIHsK
LSAgICAgICAgICAgIG15Y2FsbGJhY2soKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhciBwYW5lTm9kZSA9IHRoaXMuX3BhcmVudFBhbmUubm9kZTsKLSAgICAg
ICAgdmFyIHJlbGF0ZWROb2RlID0gdGhpcy5zdHlsZVJ1bGUucGFyZW50Tm9kZSB8fCBwYW5lTm9k
ZTsKLSAgICAgICAgaWYgKCFyZWxhdGVkTm9kZSkgewotICAgICAgICAgICAgbXljYWxsYmFjaygp
OworICAgICAgICB2YXIgcnVsZSA9IHRoaXMuc3R5bGVSdWxlLnJ1bGU7CisgICAgICAgIGlmICgh
cnVsZSB8fCAhcnVsZS5lbGVtZW50TWF0Y2hEYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gdHJpbSh0ZXh0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gdGV4dC50cmltKCk7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHNlbGVjdG9y
cyA9IHNlbGVjdG9yVGV4dC5zcGxpdCgiLCIpLm1hcCh0cmltKTsKLQotICAgICAgICBXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKHJlbGF0ZWROb2RlLCAiIiwgcmVzb2x2ZWRD
YWxsYmFjayk7Ci0gICAgICAgIGZ1bmN0aW9uIHJlc29sdmVkQ2FsbGJhY2sob2JqZWN0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW9iamVjdCkgewotICAgICAgICAgICAgICAgIG15Y2Fs
bGJhY2soKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwLCBzaXplID0gc2VsZWN0b3JzLmxlbmd0aDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvciA9IHNlbGVjdG9yc1tpXTsKLSAg
ICAgICAgICAgICAgICBvYmplY3QuY2FsbEZ1bmN0aW9uSlNPTihtYXRjaGVzU2VsZWN0b3IsIFt7
IHZhbHVlOiBzZWxlY3RvcnNbaV0gfV0sIG1hdGNoZXNDYWxsYmFjay5iaW5kKHRoaXMsIGkpKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG1hdGNoZXNTZWxl
Y3RvcihzZWxlY3RvcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMud2Via2l0
TWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZXN1
bHQgPSBbXTsKLSAgICAgICAgdmFyIG1hdGNoRm91bmQ7Ci0gICAgICAgIGZ1bmN0aW9uIG1hdGNo
ZXNDYWxsYmFjayhzZWxlY3RvckluZGV4LCBtYXRjaGVzKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2YXIgaXNMYXN0ID0gc2VsZWN0b3JJbmRleCA9PT0gc2VsZWN0b3JzLmxlbmd0aCAtIDE7Ci0g
ICAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50
KCk7Ci0gICAgICAgICAgICByZXN1bHRbc2VsZWN0b3JJbmRleF0gPSBmcmFnbWVudDsKIAorICAg
ICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Cisg
ICAgICAgIHZhciBlbGVtZW50TWF0Y2hEYXRhID0gcnVsZS5lbGVtZW50TWF0Y2hEYXRhOworICAg
ICAgICBmb3IgKHZhciBpID0gMCwgbGFzdEluZGV4ID0gZWxlbWVudE1hdGNoRGF0YS5sZW5ndGgg
LSAxOyBpIDw9IGxhc3RJbmRleCA7ICsraSkgeworICAgICAgICAgICAgdmFyIGVudHJ5ID0gZWxl
bWVudE1hdGNoRGF0YVtpXTsKICAgICAgICAgICAgIHZhciBzZWxlY3Rvck5vZGU7Ci0gICAgICAg
ICAgICBpZiAobWF0Y2hlcyAmJiBwYW5lTm9kZSA9PT0gc2VsZi5fcGFyZW50UGFuZS5ub2RlKSB7
CisgICAgICAgICAgICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlbnRy
eS50ZXh0KTsKKyAgICAgICAgICAgIGlmIChlbnRyeS5tYXRjaGVkKSB7CiAgICAgICAgICAgICAg
ICAgc2VsZWN0b3JOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAg
ICAgICAgICAgIHNlbGVjdG9yTm9kZS5jbGFzc05hbWUgPSAic2VsZWN0b3ItbWF0Y2hlcyI7Ci0g
ICAgICAgICAgICAgICAgc2VsZWN0b3JOb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHNlbGVjdG9yc1tzZWxlY3RvckluZGV4XSkpOwotICAgICAgICAgICAgICAgIG1hdGNo
Rm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIHNlbGVjdG9yTm9kZS5hcHBlbmRDaGlsZCh0
ZXh0Tm9kZSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBzZWxlY3Rvck5v
ZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWxlY3RvcnNbc2VsZWN0b3JJbmRleF0pOwor
ICAgICAgICAgICAgICAgIHNlbGVjdG9yTm9kZSA9IHRleHROb2RlOwogCiAgICAgICAgICAgICBm
cmFnbWVudC5hcHBlbmRDaGlsZChzZWxlY3Rvck5vZGUpOwotICAgICAgICAgICAgaWYgKCFpc0xh
c3QpIHsKKyAgICAgICAgICAgIGlmIChpICE9PSBsYXN0SW5kZXgpCiAgICAgICAgICAgICAgICAg
ZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiwgIikpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVGhp
cyBjaGVjayBpcyBoZXJlIGluIGNhc2UgdGhlIGVsZW1lbnQgY2xhc3MgaGFzIGJlZW4gY2hhbmdl
ZCBmcm9tIEpTIGR1cmluZyB0aGUgcm91bmR0cmlwLAotICAgICAgICAgICAgLy8gc28gdGhlIGVs
ZW1lbnQgbWF0Y2hlcyBub25lIG9mIHRoZSBkaXN0aW5jdCBzZWxlY3RvcnMuIEZhbGwgYmFjayB0
byAiYWxsIHNlbGVjdG9ycyBtYXRjaCIuCi0gICAgICAgICAgICBpZiAobWF0Y2hGb3VuZCkgewot
ICAgICAgICAgICAgICAgIHNlbGYuX3NlbGVjdG9yRWxlbWVudC5jbGFzc05hbWUgPSAic2VsZWN0
b3IiOwotICAgICAgICAgICAgICAgIHNlbGYuX3NlbGVjdG9yRWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsg
KytpKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZWxlY3RvckVsZW1lbnQuYXBwZW5kQ2hp
bGQocmVzdWx0W2ldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG15Y2FsbGJhY2soKTsK
ICAgICAgICAgfQotICAgIH0sCiAKKyAgICAgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LmNsYXNz
TmFtZSA9ICJzZWxlY3RvciI7CisgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOworICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQuYXBwZW5kQ2hpbGQoZnJh
Z21lbnQpOworICAgIH0sCiAgICAgX2NoZWNrV2lsbENhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHZhciB3aWxsQ2F1c2VDYW5jZWxFZGl0aW5nID0gdGhpcy5fd2lsbENh
dXNlQ2FuY2VsRWRpdGluZzsKQEAgLTEzNTAsMzIgKzEyNzUsMjcgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgX21vdmVFZGl0b3JGcm9t
U2VsZWN0b3I6IGZ1bmN0aW9uKG1vdmVEaXJlY3Rpb24pCiAgICAgeworICAgICAgICB0aGlzLl9t
YXJrU2VsZWN0b3JNYXRjaGVzKCk7CiAKLSAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9uKSB7Ci0g
ICAgICAgICAgICB0aGlzLl9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3JvdXAoKTsKKyAgICAgICAg
aWYgKCFtb3ZlRGlyZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAg
ICAgICAgdGhpcy5fbWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwKG1hcmtDYWxsYmFjay5iaW5k
KHRoaXMpKTsKLQotICAgICAgICBmdW5jdGlvbiBtYXJrQ2FsbGJhY2soKSB7Ci0gICAgICAgICAg
ICBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiKSB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5leHBhbmQoKTsKLSAgICAgICAgICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IHRoaXMucHJvcGVy
dGllc1RyZWVPdXRsaW5lLmNoaWxkcmVuWzBdOwotICAgICAgICAgICAgICAgIHdoaWxlIChmaXJz
dENoaWxkICYmIGZpcnN0Q2hpbGQuaW5oZXJpdGVkKQotICAgICAgICAgICAgICAgICAgICBmaXJz
dENoaWxkID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICBpZiAoIWZp
cnN0Q2hpbGQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV3QmxhbmtQcm9wZXJ0eSgp
LnN0YXJ0RWRpdGluZygpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgZmlyc3RDaGlsZC5zdGFydEVkaXRpbmcoZmlyc3RDaGlsZC5uYW1lRWxlbWVudCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1NlY3Rpb24gPSB0
aGlzLnByZXZpb3VzRWRpdGFibGVTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcmV2
aW91c1NlY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1v
dmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIikgeworICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsK
KyAgICAgICAgICAgIHZhciBmaXJzdENoaWxkID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUu
Y2hpbGRyZW5bMF07CisgICAgICAgICAgICB3aGlsZSAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxk
LmluaGVyaXRlZCkKKyAgICAgICAgICAgICAgICBmaXJzdENoaWxkID0gZmlyc3RDaGlsZC5uZXh0
U2libGluZzsKKyAgICAgICAgICAgIGlmICghZmlyc3RDaGlsZCkKKyAgICAgICAgICAgICAgICB0
aGlzLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBmaXJzdENoaWxkLnN0YXJ0RWRpdGluZyhmaXJzdENoaWxkLm5h
bWVFbGVtZW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBwcmV2aW91c1Nl
Y3Rpb24gPSB0aGlzLnByZXZpb3VzRWRpdGFibGVTaWJsaW5nKCk7CisgICAgICAgICAgICBpZiAo
IXByZXZpb3VzU2VjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
ICAgICBwcmV2aW91c1NlY3Rpb24uZXhwYW5kKCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNT
ZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHByZXZpb3VzU2VjdGlvbi5leHBhbmQoKTsKKyAgICAgICAgICAgIHBy
ZXZpb3VzU2VjdGlvbi5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7CiAgICAg
ICAgIH0KICAgICB9LAogCkBAIC0xNDE1LDcgKzEzMzUsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICAvLyBEbyBub3Ro
aW5nIGJ1dCBtYXJrIHRoZSBzZWxlY3RvcnMgaW4gZ3JvdXAgaWYgbmVjZXNzYXJ5LgogICAgICAg
ICAvLyBUaGlzIGlzIG92ZXJyaWRkZW4gYnkgQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0aW9uLgot
ICAgICAgICB0aGlzLl9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3JvdXAoKTsKKyAgICAgICAgdGhp
cy5fbWFya1NlbGVjdG9yTWF0Y2hlcygpOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165334</attachid>
            <date>2012-09-24 02:11:53 -0700</date>
            <delta_ts>2012-09-24 09:29:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96999-20120924131113.patch</filename>
            <type>text/plain</type>
            <size>42802</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDYxNWMyNTRjZGJmNWQ5
NzRmNjY2NWY2Mzg1OTg1MjI3NmYyNDBlNS4uN2IyZWM3NTU1OTJjNzVkMjJkNjIwYTY3OGYzZGQ4
ZGJkNDk5YWQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA5LTI0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gRm9yIGdyb3VwIHNlbGVjdG9ycywgdHJhbnNtaXQgdGhlaXIgc2VnbWVu
dHMgd2l0aCB0aGUgIm1hdGNoZXMiIGZsYWcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2OTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIENTU1J1bGUgcHJvdG9jb2wgb2JqZWN0IGhhcyBiZWVuIG1v
ZGlmaWVkIHRvIGluY2x1ZGUgYSBTZWxlY3Rvckxpc3Qgb2JqZWN0IHRoYXQgY29udGFpbnMgc2Vs
ZWN0b3ItcmVsYXRlZCBkYXRhLgorICAgICAgICBDU1NBZ2VudCBtZXRob2RzIHRoYXQgcmV0dXJu
IENTUyBydWxlIG1hdGNoZXMgd2lsbCByZXR1cm4gUnVsZU1hdGNoIG9iamVjdHMgdGhhdCBlbmNh
cHN1bGF0ZSBtYXRjaGluZyBDU1NSdWxlcworICAgICAgICB3aXRoIGluZGljZXMgb2YgbWF0Y2hp
bmcgc2VsZWN0b3JzIG9uIHRoZSBhc3NvY2lhdGVkIHNlbGVjdG9yIGxpc3QsIHNvIHRoZSBhZGRp
dGlvbmFsIGJhY2tlbmQgcm91bmR0cmlwcworICAgICAgICBmcm9tIFN0eWxlc1NpZGViYXJQYW5l
IGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0Fn
ZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ1NTQWdlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVl
dDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5oOgorICAgICAgICAoSW5zcGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucGFyc2VSdWxlTWF0Y2hBcnJheVBheWxvYWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldE1hdGNoZWRTdHlsZXNBc3luYyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUnVsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTUnVsZS5wYXJzZVBheWxvYWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3R5
bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUucHJvdG90eXBlLl9pbm5lclJlYnVpbGRVcGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fcmVidWlsZFNlY3Rpb25zRm9yU3R5bGVSdWxl
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5
cGUuX21hcmtTZWxlY3Rvck1hdGNoZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJv
cGVydGllc1NlY3Rpb24ucHJvdG90eXBlLl9tb3ZlRWRpdG9yRnJvbVNlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5lZGl0aW5n
U2VsZWN0b3JDYW5jZWxsZWQpOgorCiAyMDEyLTA5LTIxICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNo
aUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBkYXRhbGlzdCBzdWdnZXN0aW9ucyBpbnRvIERh
dGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgppbmRleCA1YzE4ZGFkOTU1MWVjMjMyODk4M2FjZjE4MmY5NjYxZmY4ZTc2NjY3Li40ODMx
NTc4NWQ3OGU5OGI4MWZjNmMxZGYzMjBkN2I1ZTcyOWFmMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yMDEwLDcgKzIwMTAsNyBAQAogICAgICAgICAgICAg
ICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNldWRvSWQiLCAidHlwZSI6ICJpbnRlZ2Vy
IiwgImRlc2NyaXB0aW9uIjogIlBzZXVkbyBzdHlsZSBpZGVudGlmaWVyIChzZWUgPGNvZGU+ZW51
bSBQc2V1ZG9JZDwvY29kZT4gaW4gPGNvZGU+UmVuZGVyU3R5bGVDb25zdGFudHMuaDwvY29kZT4p
LiJ9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJ1bGVzIiwgInR5cGUiOiAiYXJy
YXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNTU1J1bGUiIH0sICJkZXNjcmlwdGlvbiI6ICJDU1Mg
cnVsZXMgYXBwbGljYWJsZSB0byB0aGUgcHNldWRvIHN0eWxlLiJ9CisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAibWF0Y2hlcyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJl
ZiI6ICJSdWxlTWF0Y2giIH0sICJkZXNjcmlwdGlvbiI6ICJNYXRjaGVzIG9mIENTUyBydWxlcyBh
cHBsaWNhYmxlIHRvIHRoZSBwc2V1ZG8gc3R5bGUuIn0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDU1MgcnVsZSBjb2xsZWN0aW9uIGZvciBhIHNp
bmdsZSBwc2V1ZG8gc3R5bGUuIgogICAgICAgICAgICAgfSwKQEAgLTIwMTksMTEgKzIwMTksMzAg
QEAKICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImlubGluZVN0eWxl
IiwgIiRyZWYiOiAiQ1NTU3R5bGUiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAi
VGhlIGFuY2VzdG9yIG5vZGUncyBpbmxpbmUgc3R5bGUsIGlmIGFueSwgaW4gdGhlIHN0eWxlIGlu
aGVyaXRhbmNlIGNoYWluLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXRj
aGVkQ1NTUnVsZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiQ1NTUnVs
ZSIgfSwgImRlc2NyaXB0aW9uIjogIkNTUyBydWxlcyBtYXRjaGluZyB0aGUgYW5jZXN0b3Igbm9k
ZSBpbiB0aGUgc3R5bGUgaW5oZXJpdGFuY2UgY2hhaW4uIiB9CisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibWF0Y2hlZENTU1J1bGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7
ICIkcmVmIjogIlJ1bGVNYXRjaCIgfSwgImRlc2NyaXB0aW9uIjogIk1hdGNoZXMgb2YgQ1NTIHJ1
bGVzIG1hdGNoaW5nIHRoZSBhbmNlc3RvciBub2RlIGluIHRoZSBzdHlsZSBpbmhlcml0YW5jZSBj
aGFpbi4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJDU1MgcnVsZSBjb2xsZWN0aW9uIGZvciBhIHNpbmdsZSBwc2V1ZG8gc3R5bGUuIgogICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiUnVsZU1h
dGNoIiwKKyAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAorICAgICAgICAgICAgICAg
ICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJ1bGUiLCAi
JHJlZiI6ICJDU1NSdWxlIiwgImRlc2NyaXB0aW9uIjogIkNTUyBydWxlIGluIHRoZSBtYXRjaC4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWF0Y2hpbmdJbmRpY2VzIiwgInR5
cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogImludGVnZXIiIH0sICJkZXNjcmlwdGlv
biI6ICJNYXRjaGluZyBzZWxlY3RvciBpbmRpY2VzIGluIHRoZSBydWxlJ3Mgc2VsZWN0b3JMaXN0
IHNlbGVjdG9ycyAoMC1iYXNlZCkuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiTWF0Y2ggZGF0YSBmb3IgYSBDU1MgcnVsZS4iCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJTZWxlY3Rvckxp
c3QiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAg
InByb3BlcnRpZXMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VsZWN0b3Jz
IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwgImRlc2Ny
aXB0aW9uIjogIlNlbGVjdG9ycyBpbiB0aGUgbGlzdC4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAidGV4dCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJSdWxl
IHNlbGVjdG9yIHRleHQuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJhbmdl
IiwgIiRyZWYiOiAiU291cmNlUmFuZ2UiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiUnVsZSBzZWxlY3RvciByYW5nZSBpbiB0aGUgdW5kZXJseWluZyByZXNvdXJjZSAoaWYgYXZh
aWxhYmxlKS4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJTZWxlY3RvciBsaXN0IGRhdGEuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAiaWQiOiAiQ1NTU3R5bGVBdHRyaWJ1dGUiLAogICAgICAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBb
CkBAIC0yMDYwLDEyICsyMDc5LDExIEBACiAgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0
IiwKICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJydWxlSWQiLCAiJHJlZiI6ICJDU1NSdWxlSWQiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiVGhlIENTUyBydWxlIGlkZW50aWZpZXIgKGFic2VudCBmb3IgdXNl
ciBhZ2VudCBzdHlsZXNoZWV0IGFuZCB1c2VyLXNwZWNpZmllZCBzdHlsZXNoZWV0IHJ1bGVzKS4i
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWxlY3RvclRleHQiLCAidHlwZSI6
ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiUnVsZSBzZWxlY3Rvci4ifSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJzZWxlY3Rvckxpc3QiLCAiJHJlZiI6ICJTZWxlY3Rvckxpc3Qi
LCAiZGVzY3JpcHRpb24iOiAiUnVsZSBzZWxlY3RvciBkYXRhLiIgfSwKICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzb3VyY2VVUkwiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiUGFyZW50IHN0eWxlc2hlZXQgcmVzb3VyY2UgVVJMIChm
b3IgcmVndWxhciBydWxlcykuIn0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291
cmNlTGluZSIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiTGluZSBvcmRpbmFs
IG9mIHRoZSBydWxlIHNlbGVjdG9yIHN0YXJ0IGNoYXJhY3RlciBpbiB0aGUgcmVzb3VyY2UuIn0s
CiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3JpZ2luIiwgIiRyZWYiOiAiU3R5bGVT
aGVldE9yaWdpbiIsICJkZXNjcmlwdGlvbiI6ICJQYXJlbnQgc3R5bGVzaGVldCdzIG9yaWdpbi4i
fSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdHlsZSIsICIkcmVmIjogIkNTU1N0
eWxlIiwgImRlc2NyaXB0aW9uIjogIkFzc29jaWF0ZWQgc3R5bGUgZGVjbGFyYXRpb24uIiB9LAot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlbGVjdG9yUmFuZ2UiLCAiJHJlZiI6ICJT
b3VyY2VSYW5nZSIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgcnVsZSBz
ZWxlY3RvciByYW5nZSBpbiB0aGUgdW5kZXJseWluZyByZXNvdXJjZSAoaWYgYXZhaWxhYmxlKS4i
IH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWVkaWEiLCAidHlwZSI6ICJhcnJh
eSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiQ1NTTWVkaWEiIH0sICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJNZWRpYSBsaXN0IGFycmF5IChmb3IgcnVsZXMgaW52b2x2aW5nIG1lZGlh
IHF1ZXJpZXMpLiBUaGUgYXJyYXkgZW51bWVyYXRlcyBtZWRpYSBxdWVyaWVzIHN0YXJ0aW5nIHdp
dGggdGhlIGlubmVybW9zdCBvbmUsIGdvaW5nIG91dHdhcmRzLiIgfQogICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNTUyBydWxlIHJlcHJlc2VudGF0
aW9uLiIKQEAgLTIyMDUsNyArMjIyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiaW5jbHVkZUluaGVyaXRlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiV2hldGhlciB0byBpbmNsdWRlIGluaGVyaXRlZCBzdHlsZXMgKGRl
ZmF1bHQ6IHRydWUpLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgInJl
dHVybnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWF0Y2hlZENTU1J1bGVz
IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkNTU1J1bGUiIH0sICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJDU1MgcnVsZXMgbWF0Y2hpbmcgdGhpcyBub2Rl
LCBmcm9tIGFsbCBhcHBsaWNhYmxlIHN0eWxlc2hlZXRzLiIgfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJtYXRjaGVkQ1NTUnVsZXMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6
IHsgIiRyZWYiOiAiUnVsZU1hdGNoIiB9LCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiQ1NTIHJ1bGVzIG1hdGNoaW5nIHRoaXMgbm9kZSwgZnJvbSBhbGwgYXBwbGljYWJsZSBzdHls
ZXNoZWV0cy4iIH0sCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicHNldWRvRWxlbWVu
dHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiUHNldWRvSWRSdWxlcyIg
fSwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlBzZXVkbyBzdHlsZSBydWxlcyBm
b3IgdGhpcyBub2RlLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbmhlcml0
ZWQiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiSW5oZXJpdGVkU3R5bGVF
bnRyeSIgfSwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkEgY2hhaW4gb2YgaW5o
ZXJpdGVkIHN0eWxlcyAoZnJvbSB0aGUgaW1tZWRpYXRlIG5vZGUgcGFyZW50IHVwIHRvIHRoZSBE
T00gdHJlZSByb290KS4iIH0KICAgICAgICAgICAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNjBlYmQ5MzEyYjJhNTM4YTQy
NmYxNWYzOWM1Y2NhNmQ2ZTQzY2VkZS4uZmEzZjgzNGI5MDUyMjllNGU1ZjM2ZGZmNGVhMmFjOTE5
MjEwMWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCkBAIC02NzgsNyArNjc4LDcgQEAgYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQ
c2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHkKICAgICB9
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBz
ZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+JiBtYXRjaGVkQ1NTUnVsZXMsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRSdWxlcz4gPiYg
cHNldWRvSWRSdWxlcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpJbmhlcml0ZWRTdHlsZUVudHJ5PiA+JiBpbmhlcml0ZWRFbnRyaWVzKQordm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBp
bmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OlJ1bGVNYXRjaD4gPiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkUnVsZXM+ID4mIHBzZXVkb0lkUnVsZXMsIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVF
bnRyeT4gPiYgaW5oZXJpdGVkRW50cmllcykKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gZWxl
bWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAgLTY4
Nyw3ICs2ODcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9y
Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgIC8vIE1hdGNoZWQgcnVs
ZXMuCiAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGVsZW1lbnQtPm93bmVyRG9j
dW1lbnQoKS0+c3R5bGVSZXNvbHZlcigpOwogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hl
ZFJ1bGVzID0gc3R5bGVSZXNvbHZlci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgU3R5
bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOwotICAgIG1hdGNoZWRDU1NSdWxlcyA9IGJ1aWxkQXJy
YXlGb3JSdWxlTGlzdChtYXRjaGVkUnVsZXMuZ2V0KCksIHN0eWxlUmVzb2x2ZXIpOworICAgIG1h
dGNoZWRDU1NSdWxlcyA9IGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QobWF0Y2hlZFJ1bGVz
LmdldCgpLCBzdHlsZVJlc29sdmVyLCBlbGVtZW50KTsKIAogICAgIC8vIFBzZXVkbyBlbGVtZW50
cy4KICAgICBpZiAoIWluY2x1ZGVQc2V1ZG8gfHwgKmluY2x1ZGVQc2V1ZG8pIHsKQEAgLTY5Nyw3
ICs2OTcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9k
ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgICAgICAgICAgaWYgKG1hdGNo
ZWRSdWxlcyAmJiBtYXRjaGVkUnVsZXMtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkUnVsZXM+IHBzZXVkb1N0eWxlcyA9IFR5cGVC
dWlsZGVyOjpDU1M6OlBzZXVkb0lkUnVsZXM6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgICAg
IC5zZXRQc2V1ZG9JZChzdGF0aWNfY2FzdDxpbnQ+KHBzZXVkb0lkKSkKLSAgICAgICAgICAgICAg
ICAgICAgLnNldFJ1bGVzKGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChtYXRjaGVkUnVsZXMuZ2V0KCks
IHN0eWxlUmVzb2x2ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZXMoYnVpbGRB
cnJheUZvck1hdGNoZWRSdWxlTGlzdChtYXRjaGVkUnVsZXMuZ2V0KCksIHN0eWxlUmVzb2x2ZXIs
IGVsZW1lbnQpKTsKICAgICAgICAgICAgICAgICBwc2V1ZG9FbGVtZW50cy0+YWRkSXRlbShwc2V1
ZG9TdHlsZXMucmVsZWFzZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzEwLDEw
ICs3MTAsMTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxlc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KICAgICAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5PiA+IGlu
aGVyaXRlZFN0eWxlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhl
cml0ZWRTdHlsZUVudHJ5Pjo6Y3JlYXRlKCk7CiAgICAgICAgIEVsZW1lbnQqIHBhcmVudEVsZW1l
bnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIHdoaWxlIChwYXJlbnRFbGVt
ZW50KSB7Ci0gICAgICAgICAgICBTdHlsZVJlc29sdmVyKiBwYXJlbnRTdHlsZVJlc29sdmVyPSBw
YXJlbnRFbGVtZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKTsKKyAgICAgICAg
ICAgIFN0eWxlUmVzb2x2ZXIqIHBhcmVudFN0eWxlUmVzb2x2ZXIgPSBwYXJlbnRFbGVtZW50LT5v
d25lckRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXIoKTsKICAgICAgICAgICAgIFJlZlB0cjxDU1NS
dWxlTGlzdD4gcGFyZW50TWF0Y2hlZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci0+c3R5bGVS
dWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMp
OwogICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50
cnk+IHBhcmVudFN0eWxlID0gVHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeTo6
Y3JlYXRlKCkKLSAgICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlG
b3JSdWxlTGlzdChwYXJlbnRNYXRjaGVkUnVsZXMuZ2V0KCksIHN0eWxlUmVzb2x2ZXIpKTsKKyAg
ICAgICAgICAgICAgICAuc2V0TWF0Y2hlZENTU1J1bGVzKGJ1aWxkQXJyYXlGb3JNYXRjaGVkUnVs
ZUxpc3QocGFyZW50TWF0Y2hlZFJ1bGVzLmdldCgpLCBzdHlsZVJlc29sdmVyLCBwYXJlbnRFbGVt
ZW50KSk7CiAgICAgICAgICAgICBpZiAocGFyZW50RWxlbWVudC0+c3R5bGUoKSAmJiBwYXJlbnRF
bGVtZW50LT5zdHlsZSgpLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogc3R5bGVTaGVldCA9IGFzSW5zcGVjdG9yU3R5bGVTaGVl
dChwYXJlbnRFbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGVTaGVldCkKQEAgLTEx
MTYsNiArMTExNiwyMyBAQCBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpFbnVt
IEluc3BlY3RvckNTU0FnZW50OjpkZXRlY3RPcmlnaW4oQ1NTU3R5bAogICAgIHJldHVybiBvcmln
aW47CiB9CiAKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUsIFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCit7CisgICAgaWYgKCFydWxlKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIENTU1J1bGVzIHJldHVybmVkIGJ5IFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVs
ZXNGb3JFbGVtZW50IGxhY2sgcGFyZW50IHBvaW50ZXJzIHNpbmNlIHRoYXQgaW5mb21hdGlvbiBp
cyBub3QgY2hlYXBseSBhdmFpbGFibGUuCisgICAgLy8gU2luY2UgdGhlIGluc3BlY3RvciB3YW50
cyB0byB3YWxrIHRoZSBwYXJlbnQgY2hhaW4sIHdlIGNvbnN0cnVjdCB0aGUgZnVsbCB3cmFwcGVy
cyBoZXJlLgorICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGZhY3RvcmVkIGJldHRlci4gU3R5
bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQgc2hvdWxkIHJldHVybiBhIFN0eWxlUnVs
ZSB2ZWN0b3IsIG5vdCBhIENTU1J1bGVMaXN0LgorICAgIGlmICghcnVsZS0+cGFyZW50U3R5bGVT
aGVldCgpKSB7CisgICAgICAgIHJ1bGUgPSBzdHlsZVJlc29sdmVyLT5lbnN1cmVGdWxsQ1NTT01X
cmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUtPnN0eWxlUnVsZSgpKTsKKyAgICAgICAgaWYgKCFydWxl
KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIEluc3BlY3RvclN0eWxlU2hlZXQq
IGluc3BlY3RvclN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChydWxlLT5wYXJlbnRTdHlsZVNo
ZWV0KCkpOworICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0ID8gaW5zcGVjdG9yU3R5bGVT
aGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpIDogMDsKK30KKwogUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBJbnNwZWN0b3JDU1NB
Z2VudDo6YnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCwgU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlcikKIHsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKQEAgLTExMjQsMjIgKzExNDEs
NDIgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnUKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDAs
IHNpemUgPSBydWxlTGlzdC0+bGVuZ3RoKCk7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgQ1NT
U3R5bGVSdWxlKiBydWxlID0gYXNDU1NTdHlsZVJ1bGUocnVsZUxpc3QtPml0ZW0oaSkpOwotICAg
ICAgICBpZiAoIXJ1bGUpCisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxl
PiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUsIHN0eWxlUmVzb2x2ZXIpOwor
ICAgICAgICBpZiAoIXJ1bGVPYmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
cmVzdWx0LT5hZGRJdGVtKHJ1bGVPYmplY3QpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2UoKTsKK30KKworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6UnVsZU1hdGNoPiA+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hl
ZFJ1bGVMaXN0KENTU1J1bGVMaXN0KiBydWxlTGlzdCwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNv
bHZlciwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4gPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPjo6Y3JlYXRlKCk7CisgICAgaWYgKCFydWxl
TGlzdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAKLSAgICAgICAgLy8gQ1NT
UnVsZXMgcmV0dXJuZWQgYnkgU3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQgbGFj
ayBwYXJlbnQgcG9pbnRlcnMgc2luY2UgdGhhdCBpbmZvbWF0aW9uIGlzIG5vdCBjaGVhcGx5IGF2
YWlsYWJsZS4KLSAgICAgICAgLy8gU2luY2UgdGhlIGluc3BlY3RvciB3YW50cyB0byB3YWxrIHRo
ZSBwYXJlbnQgY2hhaW4sIHdlIGNvbnN0cnVjdCB0aGUgZnVsbCB3cmFwcGVycyBoZXJlLgotICAg
ICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBmYWN0b3JlZCBiZXR0ZXIuIFN0eWxlUmVzb2x2
ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50IHNob3VsZCByZXR1cm4gYSBTdHlsZVJ1bGUgdmVjdG9y
LCBub3QgYSBDU1NSdWxlTGlzdC4KLSAgICAgICAgaWYgKCFydWxlLT5wYXJlbnRTdHlsZVNoZWV0
KCkpIHsKLSAgICAgICAgICAgIHJ1bGUgPSBzdHlsZVJlc29sdmVyLT5lbnN1cmVGdWxsQ1NTT01X
cmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUtPnN0eWxlUnVsZSgpKTsKLSAgICAgICAgICAgIGlmICgh
cnVsZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBzaXplID0gcnVsZUxpc3QtPmxlbmd0aCgpOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIENT
U1N0eWxlUnVsZSogcnVsZSA9IGFzQ1NTU3R5bGVSdWxlKHJ1bGVMaXN0LT5pdGVtKGkpKTsKKyAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IHJ1bGVPYmplY3QgPSBidWls
ZE9iamVjdEZvclJ1bGUocnVsZSwgc3R5bGVSZXNvbHZlcik7CisgICAgICAgIGlmICghcnVsZU9i
amVjdCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PGludD4gPiBtYXRjaGluZ0luZGljZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6
Y3JlYXRlKCk7CisgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0g
cnVsZS0+c3R5bGVSdWxlKCktPnNlbGVjdG9yTGlzdCgpOworICAgICAgICBsb25nIGluZGV4ID0g
MDsKKyAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxpc3QuZmly
c3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9y
KSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgICAgIGJvb2wgbWF0
Y2hlZCA9IGVsZW1lbnQtPndlYmtpdE1hdGNoZXNTZWxlY3RvcihzZWxlY3Rvci0+c2VsZWN0b3JU
ZXh0KCksIGVjKTsKKyAgICAgICAgICAgIGlmIChtYXRjaGVkKQorICAgICAgICAgICAgICAgIG1h
dGNoaW5nSW5kaWNlcy0+YWRkSXRlbShpbmRleCk7CisgICAgICAgICAgICArK2luZGV4OwogICAg
ICAgICB9Ci0gICAgICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQg
PSBiaW5kU3R5bGVTaGVldChydWxlLT5wYXJlbnRTdHlsZVNoZWV0KCkpOwotICAgICAgICBpZiAo
aW5zcGVjdG9yU3R5bGVTaGVldCkKLSAgICAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShpbnNwZWN0
b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkpOworICAgICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPiBtYXRjaCA9IFR5cGVCdWlsZGVyOjpDU1M6OlJ1
bGVNYXRjaDo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRSdWxlKHJ1bGVPYmplY3QpCisgICAg
ICAgICAgICAuc2V0TWF0Y2hpbmdJbmRpY2VzKG1hdGNoaW5nSW5kaWNlcyk7CisgICAgICAgIHJl
c3VsdC0+YWRkSXRlbShtYXRjaCk7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgp
OworCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0
eWxlKEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oCmluZGV4IGM5YWEzYTQ4ZTNiY2E5MWYwMzdkMDY4OWJkYmY5YzkzNjQzYjcw
MWQuLjg4ZDRhNTE3MThjM2Q5MGQyYzI5NWNhMzMxYTU1ZjMwNjJhNTE0YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xMDcsNyArMTA3LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+ID4mKTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBib29s
KiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4mIG1hdGNoZWRDU1NS
dWxlcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9J
ZFJ1bGVzPiA+JiBwc2V1ZG9SdWxlcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5PiA+JiBpbmhlcml0ZWRFbnRyaWVzKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5o
ZXJpdGVkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVN
YXRjaD4gPiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OlBzZXVkb0lkUnVsZXM+ID4mIHBzZXVkb1J1bGVzLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+ID4mIGlu
aGVyaXRlZEVudHJpZXMpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0cyhFcnJv
clN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGVTaGVldEhlYWRlcj4gPiYgc3R5bGVTaGVldEluZm9zKTsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCk7CkBAIC0xNTYsNyArMTU2LDkgQEAgcHJp
dmF0ZToKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmKTsKICAgICBUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNo
ZWV0T3JpZ2luOjpFbnVtIGRldGVjdE9yaWdpbihDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVl
dCwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpOwogCisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NSdWxlPiBidWlsZE9iamVjdEZvclJ1bGUoQ1NTU3R5bGVSdWxlKiwgU3R5bGVS
ZXNvbHZlciopOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1J1bGU+ID4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0KiwgU3R5
bGVSZXNvbHZlciopOworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OlJ1bGVNYXRjaD4gPiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KENTU1J1
bGVMaXN0KiwgU3R5bGVSZXNvbHZlciosIEVsZW1lbnQqKTsKICAgICBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShFbGVt
ZW50Kik7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6UmVnaW9uPiA+IGJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0
cjxOb2RlTGlzdD4sIGludCBkb2N1bWVudE5vZGVJZCk7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5n
KiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAyZGU4ZDljYmEz
OTY3MGEyM2JjNTFmNjdkYjAyOGM4YzI2YTFjOTcxLi41Yjk0ZGU2YzE5N2M4MmYxYzdjODEzMzgw
Y2I4NjZhMzhhNWU4YzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCkBAIC05MTEsNiArOTExLDI1IEBAIFBhc3NSZWZQdHI8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVp
bGRPYmplCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9i
amVjdEZvclNlbGVjdG9yTGlzdChDU1NTdHlsZVJ1bGUqIHJ1bGUpCit7CisgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gc2VsZWN0b3JzID0gVHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz46OmNyZWF0ZSgpOworICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JM
aXN0ID0gcnVsZS0+c3R5bGVSdWxlKCktPnNlbGVjdG9yTGlzdCgpOworICAgIGZvciAoQ1NTU2Vs
ZWN0b3IqIHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3Rv
ciA9IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzZWxlY3RvcikpCisgICAgICAgIHNlbGVjdG9ycy0+
YWRkSXRlbShzZWxlY3Rvci0+c2VsZWN0b3JUZXh0KCkpOworCisgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yTGlzdD4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0
b3JMaXN0OjpjcmVhdGUoKQorICAgICAgICAuc2V0U2VsZWN0b3JzKHNlbGVjdG9ycykKKyAgICAg
ICAgLnNldFRleHQocnVsZS0+c2VsZWN0b3JUZXh0KCkpOworCisgICAgUmVmUHRyPENTU1J1bGVT
b3VyY2VEYXRhPiBzb3VyY2VEYXRhOworICAgIGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSkK
KyAgICAgICAgc291cmNlRGF0YSA9IHJ1bGVTb3VyY2VEYXRhRm9yKHJ1bGUtPnN0eWxlKCkpOwor
ICAgIGlmIChzb3VyY2VEYXRhKQorICAgICAgICByZXN1bHQtPnNldFJhbmdlKGJ1aWxkU291cmNl
UmFuZ2VPYmplY3Qoc291cmNlRGF0YS0+cnVsZUhlYWRlclJhbmdlKSk7CisgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7Cit9CisKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVs
ZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1N0eWxlUnVsZSog
cnVsZSkKIHsKICAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcGFnZVN0eWxlU2hlZXQo
KTsKQEAgLTkxOCw3ICs5MzcsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1
bGU+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDUwogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiByZXN1bHQg
PSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlOjpjcmVhdGUoKQotICAgICAgICAuc2V0U2VsZWN0
b3JUZXh0KHJ1bGUtPnNlbGVjdG9yVGV4dCgpKQorICAgICAgICAuc2V0U2VsZWN0b3JMaXN0KGJ1
aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KHJ1bGUpKQogICAgICAgICAuc2V0U291cmNlTGluZShy
dWxlLT5zdHlsZVJ1bGUoKS0+c291cmNlTGluZSgpKQogICAgICAgICAuc2V0T3JpZ2luKG1fb3Jp
Z2luKQogICAgICAgICAuc2V0U3R5bGUoYnVpbGRPYmplY3RGb3JTdHlsZShydWxlLT5zdHlsZSgp
KSk7CkBAIC05MzMsMTIgKzk1Miw2IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JSdWxlKENTCiAgICAgICAg
ICAgICByZXN1bHQtPnNldFJ1bGVJZChpZC5hc1Byb3RvY29sVmFsdWU8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZUlkPigpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
IHNvdXJjZURhdGE7Ci0gICAgaWYgKGVuc3VyZVBhcnNlZERhdGFSZWFkeSgpKQotICAgICAgICBz
b3VyY2VEYXRhID0gcnVsZVNvdXJjZURhdGFGb3IocnVsZS0+c3R5bGUoKSk7Ci0gICAgaWYgKHNv
dXJjZURhdGEpCi0gICAgICAgIHJlc3VsdC0+c2V0U2VsZWN0b3JSYW5nZShidWlsZFNvdXJjZVJh
bmdlT2JqZWN0KHNvdXJjZURhdGEtPnJ1bGVIZWFkZXJSYW5nZSkpOwotCiAgICAgUmVmUHRyPEFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPiA+IG1lZGlhQXJyYXkgPSBBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOwogCiAgICAgZmlsbE1lZGlhTGlzdENo
YWluKHJ1bGUsIG1lZGlhQXJyYXkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggZDQyNmQ1NzlmZGFiMjQ4NDA3ODQ1YTgyNzUx
ZDFjZDUzYzE0MTRjYi4uZDhkNGU0ODFkYTIxNDY4OGUzNjIxOWZhNmM1Y2E2NjYxZDkxN2Q5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBA
IC0yMzQsNiArMjM0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlc291cmNlU3R5bGVTaGVldFRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgaW5saW5lU3R5bGVTaGVldFRleHQo
U3RyaW5nKiByZXN1bHQpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+ID4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1
bGVMaXN0Kik7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rvckxpc3Q+
IGJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JMaXN0KENTU1N0eWxlUnVsZSopOwogCiAgICAgSW5zcGVj
dG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBTdHJpbmcgbV9pZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCA2
ZTk5ZGFjODIxZmEyYjQxOGFkMGViYjIyMjNjYzQ4NmJhZDVhMjdkLi5hOTM1M2YxNjVmYjEwZDhh
NGI5OWQ1OTQ1ZTkxOGU1MTgxYjY4ZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC01Niw2ICs1NiwxNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wYXJzZVJ1bGVBcnJheVBheWxvYWQgPSBmdW5jdGlvbihy
dWxlQXJyYXkpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoqCisgKiBAcGFyYW0ge0FycmF5
LjxDU1NBZ2VudC5SdWxlTWF0Y2g+fSBtYXRjaEFycmF5CisgKi8KK1dlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLnBhcnNlUnVsZU1hdGNoQXJyYXlQYXlsb2FkID0gZnVuY3Rpb24obWF0Y2hBcnJh
eSkKK3sKKyAgICB2YXIgcmVzdWx0ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRj
aEFycmF5Lmxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHQucHVzaChXZWJJbnNwZWN0b3IuQ1NT
UnVsZS5wYXJzZVBheWxvYWQobWF0Y2hBcnJheVtpXS5ydWxlLCBtYXRjaEFycmF5W2ldLm1hdGNo
aW5nSW5kaWNlcykpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cyA9IHsKICAgICBTdHlsZVNoZWV0Q2hhbmdlZDogIlN0eWxlU2hlZXRD
aGFuZ2VkIiwKICAgICBNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZDogIk1lZGlhUXVlcnlSZXN1bHRD
aGFuZ2VkIiwKQEAgLTkwLDEzICsxMDEsMTMgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwu
cHJvdG90eXBlID0gewogCiAgICAgICAgICAgICB2YXIgcmVzdWx0ID0ge307CiAgICAgICAgICAg
ICBpZiAobWF0Y2hlZFBheWxvYWQpCi0gICAgICAgICAgICAgICAgcmVzdWx0Lm1hdGNoZWRDU1NS
dWxlcyA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5bG9hZCht
YXRjaGVkUGF5bG9hZCk7CisgICAgICAgICAgICAgICAgcmVzdWx0Lm1hdGNoZWRDU1NSdWxlcyA9
IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBhcnNlUnVsZU1hdGNoQXJyYXlQYXlsb2FkKG1h
dGNoZWRQYXlsb2FkKTsKIAogICAgICAgICAgICAgaWYgKHBzZXVkb1BheWxvYWQpIHsKICAgICAg
ICAgICAgICAgICByZXN1bHQucHNldWRvRWxlbWVudHMgPSBbXTsKICAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHBzZXVkb1BheWxvYWQubGVuZ3RoOyArK2kpIHsKICAgICAgICAg
ICAgICAgICAgICAgdmFyIGVudHJ5UGF5bG9hZCA9IHBzZXVkb1BheWxvYWRbaV07Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5wc2V1ZG9FbGVtZW50cy5wdXNoKHsgcHNldWRvSWQ6IGVudHJ5
UGF5bG9hZC5wc2V1ZG9JZCwgcnVsZXM6IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBhcnNl
UnVsZUFycmF5UGF5bG9hZChlbnRyeVBheWxvYWQucnVsZXMpIH0pOworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQucHNldWRvRWxlbWVudHMucHVzaCh7IHBzZXVkb0lkOiBlbnRyeVBheWxvYWQu
cHNldWRvSWQsIHJ1bGVzOiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wYXJzZVJ1bGVNYXRj
aEFycmF5UGF5bG9hZChlbnRyeVBheWxvYWQubWF0Y2hlcykgfSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogCkBAIC0xMDgsNyArMTE5LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnlQYXls
b2FkLmlubGluZVN0eWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuaW5saW5lU3R5
bGUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wYXJzZVBheWxvYWQoZW50cnlQ
YXlsb2FkLmlubGluZVN0eWxlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5UGF5bG9h
ZC5tYXRjaGVkQ1NTUnVsZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5tYXRjaGVk
Q1NTUnVsZXMgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wYXJzZVJ1bGVBcnJheVBheWxv
YWQoZW50cnlQYXlsb2FkLm1hdGNoZWRDU1NSdWxlcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbnRyeS5tYXRjaGVkQ1NTUnVsZXMgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wYXJz
ZVJ1bGVNYXRjaEFycmF5UGF5bG9hZChlbnRyeVBheWxvYWQubWF0Y2hlZENTU1J1bGVzKTsKICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmluaGVyaXRlZC5wdXNoKGVudHJ5KTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC03MjQsMTEgKzczNSwxNiBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3Rv
cgogICogQHBhcmFtIHtDU1NBZ2VudC5DU1NSdWxlfSBwYXlsb2FkCisgKiBAcGFyYW0ge0FycmF5
LjxudW1iZXI+PX0gbWF0Y2hpbmdJbmRpY2VzCiAgKi8KLVdlYkluc3BlY3Rvci5DU1NSdWxlID0g
ZnVuY3Rpb24ocGF5bG9hZCkKK1dlYkluc3BlY3Rvci5DU1NSdWxlID0gZnVuY3Rpb24ocGF5bG9h
ZCwgbWF0Y2hpbmdJbmRpY2VzKQogewogICAgIHRoaXMuaWQgPSBwYXlsb2FkLnJ1bGVJZDsKLSAg
ICB0aGlzLnNlbGVjdG9yVGV4dCA9IHBheWxvYWQuc2VsZWN0b3JUZXh0OworICAgIGlmIChtYXRj
aGluZ0luZGljZXMpCisgICAgICAgIHRoaXMubWF0Y2hpbmdJbmRpY2VzID0gbWF0Y2hpbmdJbmRp
Y2VzOworICAgIHRoaXMuc2VsZWN0b3JzID0gcGF5bG9hZC5zZWxlY3Rvckxpc3Quc2VsZWN0b3Jz
OworICAgIHRoaXMuc2VsZWN0b3JUZXh0ID0gcGF5bG9hZC5zZWxlY3Rvckxpc3QudGV4dDsKKyAg
ICB0aGlzLnNlbGVjdG9yUmFuZ2UgPSBwYXlsb2FkLnNlbGVjdG9yTGlzdC5yYW5nZTsKICAgICB0
aGlzLnNvdXJjZUxpbmUgPSBwYXlsb2FkLnNvdXJjZUxpbmU7CiAgICAgdGhpcy5zb3VyY2VVUkwg
PSBwYXlsb2FkLnNvdXJjZVVSTDsKICAgICBpZiAocGF5bG9hZC5zb3VyY2VVUkwpCkBAIC03MzYs
MTggKzc1MiwxOCBAQCBXZWJJbnNwZWN0b3IuQ1NTUnVsZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiAg
ICAgdGhpcy5vcmlnaW4gPSBwYXlsb2FkLm9yaWdpbjsKICAgICB0aGlzLnN0eWxlID0gV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VQYXlsb2FkKHBheWxvYWQuc3R5bGUpOwog
ICAgIHRoaXMuc3R5bGUucGFyZW50UnVsZSA9IHRoaXM7Ci0gICAgdGhpcy5zZWxlY3RvclJhbmdl
ID0gcGF5bG9hZC5zZWxlY3RvclJhbmdlOwogICAgIGlmIChwYXlsb2FkLm1lZGlhKQogICAgICAg
ICB0aGlzLm1lZGlhID0gV2ViSW5zcGVjdG9yLkNTU01lZGlhLnBhcnNlTWVkaWFBcnJheVBheWxv
YWQocGF5bG9hZC5tZWRpYSk7CiB9CiAKIC8qKgogICogQHBhcmFtIHtDU1NBZ2VudC5DU1NSdWxl
fSBwYXlsb2FkCisgKiBAcGFyYW0ge0FycmF5LjxudW1iZXI+PX0gbWF0Y2hpbmdJbmRpY2VzCiAg
KiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuQ1NTUnVsZX0KICAqLwotV2ViSW5zcGVjdG9yLkNTU1J1
bGUucGFyc2VQYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKK1dlYkluc3BlY3Rvci5DU1NSdWxl
LnBhcnNlUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQsIG1hdGNoaW5nSW5kaWNlcykKIHsKLSAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NSdWxlKHBheWxvYWQpOworICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLkNTU1J1bGUocGF5bG9hZCwgbWF0Y2hpbmdJbmRpY2VzKTsKIH0KIAog
V2ViSW5zcGVjdG9yLkNTU1J1bGUucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXggNmNl
N2I3OTg5MzIzZTNhNWQwOGE2NzIzOTQwMzJhMzAzNzUzZmIyNy4uODBiNDU0MTIxMDQxNzQ4YzRj
ZmFhNjRlY2YzODNkODcwMDczMjgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0zNTgsNyArMzU4LDYg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dmFyIHVzZWRQcm9wZXJ0aWVzID0ge307CiAgICAgICAgIHRoaXMuX21hcmtVc2VkUHJvcGVydGll
cyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcyk7CiAgICAgICAgIHRoaXMuc2VjdGlvbnNbMF0g
PSB0aGlzLl9yZWJ1aWxkU2VjdGlvbnNGb3JTdHlsZVJ1bGVzKHN0eWxlUnVsZXMsIHVzZWRQcm9w
ZXJ0aWVzLCAwLCBudWxsKTsKLSAgICAgICAgdmFyIHJlc3BvbnNlc0xlZnQgPSB0aGlzLnNlY3Rp
b25zWzBdLmxlbmd0aDsKICAgICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSB0aGlzLnNlY3Rpb25z
WzBdLmluaGVyaXRlZFByb3BlcnRpZXNTZXBhcmF0b3JFbGVtZW50OwogCiAgICAgICAgIGlmIChz
dHlsZXMuY29tcHV0ZWRTdHlsZSkgICAgICAgIApAQCAtMzgxLDI4ICszODAsOSBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdXNlZFBy
b3BlcnRpZXMgPSB7fTsKICAgICAgICAgICAgIHRoaXMuX21hcmtVc2VkUHJvcGVydGllcyhzdHls
ZVJ1bGVzLCB1c2VkUHJvcGVydGllcyk7CiAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zW3BzZXVk
b0lkXSA9IHRoaXMuX3JlYnVpbGRTZWN0aW9uc0ZvclN0eWxlUnVsZXMoc3R5bGVSdWxlcywgdXNl
ZFByb3BlcnRpZXMsIHBzZXVkb0lkLCBhbmNob3JFbGVtZW50KTsKLSAgICAgICAgICAgIHJlc3Bv
bnNlc0xlZnQgKz0gdGhpcy5zZWN0aW9uc1twc2V1ZG9JZF0ubGVuZ3RoOwogICAgICAgICB9CiAK
LSAgICAgICAgLy8gTWFyayBtYXRjaGluZyBzZWxlY3RvcnMgaW4gY29tbWEtZGVsaW1pdGVkIHNl
bGVjdG9yIGdyb3Vwcy4KLSAgICAgICAgdmFyIGJvdW5kTWFya0NhbGxiYWNrID0gbWFya0NhbGxi
YWNrLmJpbmQodGhpcyk7Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuc2VjdGlvbnMpIHsK
LSAgICAgICAgICAgIHZhciBzZWN0aW9uc0ZvclBzZXVkb0lkID0gdGhpcy5zZWN0aW9uc1tpZF0u
c2xpY2UoKTsKLSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbnNGb3JQc2V1
ZG9JZC5sZW5ndGg7ICsraikgewotICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uID0gc2VjdGlv
bnNGb3JQc2V1ZG9JZFtqXTsKLSAgICAgICAgICAgICAgICBpZiAoIXNlY3Rpb24uc3R5bGVSdWxl
IHx8IHNlY3Rpb24uaXNCbGFuayB8fCBzZWN0aW9uLnN0eWxlUnVsZS5jb21wdXRlZFN0eWxlIHx8
IHNlY3Rpb24uc3R5bGVSdWxlLmlzQXR0cmlidXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJv
dW5kTWFya0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZWN0aW9uLl9tYXJrTWF0Y2hlZFNlbGVjdG9y
c0luR3JvdXAoYm91bmRNYXJrQ2FsbGJhY2spOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgZnVuY3Rpb24gbWFya0NhbGxiYWNrKCkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCEoLS1yZXNwb25zZXNMZWZ0KSkKLSAgICAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVz
VXBkYXRlZEZvclRlc3Qobm9kZSwgdHJ1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5fbm9k
ZVN0eWxlc1VwZGF0ZWRGb3JUZXN0KG5vZGUsIHRydWUpOwogICAgIH0sCiAKICAgICBfbm9kZVN0
eWxlc1VwZGF0ZWRGb3JUZXN0OiBmdW5jdGlvbihub2RlLCByZWJ1aWxkKQpAQCAtNjA2LDggKzU4
NiwxMCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogCiAg
ICAgICAgICAgICBpZiAoY29tcHV0ZWRTdHlsZSkKICAgICAgICAgICAgICAgICB2YXIgc2VjdGlv
biA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXNTZWN0aW9uKHRoaXMs
IHN0eWxlUnVsZSwgdXNlZFByb3BlcnRpZXMpOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydGllc1NlY3Rpb24odGhpcywgc3R5bGVSdWxlLCBlZGl0YWJsZSwgc3R5bGVS
dWxlLmlzSW5oZXJpdGVkLCBsYXN0V2FzU2VwYXJhdG9yKTsKKyAgICAgICAgICAgICAgICBzZWN0
aW9uLl9tYXJrU2VsZWN0b3JNYXRjaGVzKCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBz
ZWN0aW9uLmV4cGFuZGVkID0gdHJ1ZTsKIAogICAgICAgICAgICAgaWYgKGNvbXB1dGVkU3R5bGUp
IHsKQEAgLTExMjQsODkgKzExMDYsMzggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1Nl
Y3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9LAogCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbigpPX0gY2FsbGJhY2sKLSAgICAgKi8KLSAgICBf
bWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBfbWFy
a1NlbGVjdG9yTWF0Y2hlczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOwotICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgc2VsZWN0b3JUZXh0ID0gdGhpcy5fc2VsZWN0b3JFbGVtZW50LnRleHRD
b250ZW50OwotICAgICAgICBpZiAoIXNlbGVjdG9yVGV4dCB8fCBzZWxlY3RvclRleHQuaW5kZXhP
ZigiLCIpID09PSAtMSkgewotICAgICAgICAgICAgbXljYWxsYmFjaygpOworICAgICAgICB2YXIg
cnVsZSA9IHRoaXMuc3R5bGVSdWxlLnJ1bGU7CisgICAgICAgIGlmICghcnVsZSkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQogCi0gICAgICAgIHZhciBwYW5lTm9kZSA9IHRoaXMuX3Bh
cmVudFBhbmUubm9kZTsKLSAgICAgICAgdmFyIHJlbGF0ZWROb2RlID0gdGhpcy5zdHlsZVJ1bGUu
cGFyZW50Tm9kZSB8fCBwYW5lTm9kZTsKLSAgICAgICAgaWYgKCFyZWxhdGVkTm9kZSkgewotICAg
ICAgICAgICAgbXljYWxsYmFjaygpOworICAgICAgICB2YXIgc2VsZWN0b3JzID0gcnVsZS5zZWxl
Y3RvcnM7CisgICAgICAgIHZhciBtYXRjaGluZ0luZGljZXMgPSBydWxlLm1hdGNoaW5nSW5kaWNl
czsKKyAgICAgICAgaWYgKCFtYXRjaGluZ0luZGljZXMgfHwgc2VsZWN0b3JzLmxlbmd0aCA8IDIp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiB0cmlt
KHRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0LnRyaW0oKTsKLSAgICAg
ICAgfQotICAgICAgICB2YXIgc2VsZWN0b3JzID0gc2VsZWN0b3JUZXh0LnNwbGl0KCIsIikubWFw
KHRyaW0pOwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUo
cmVsYXRlZE5vZGUsICIiLCByZXNvbHZlZENhbGxiYWNrKTsKLSAgICAgICAgZnVuY3Rpb24gcmVz
b2x2ZWRDYWxsYmFjayhvYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghb2JqZWN0
KSB7Ci0gICAgICAgICAgICAgICAgbXljYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIHNpemUgPSBz
ZWxlY3RvcnMubGVuZ3RoOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNl
bGVjdG9yID0gc2VsZWN0b3JzW2ldOwotICAgICAgICAgICAgICAgIG9iamVjdC5jYWxsRnVuY3Rp
b25KU09OKG1hdGNoZXNTZWxlY3RvciwgW3sgdmFsdWU6IHNlbGVjdG9yc1tpXSB9XSwgbWF0Y2hl
c0NhbGxiYWNrLmJpbmQodGhpcywgaSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gbWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gdGhpcy53ZWJraXRNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgICB2YXIgbWF0Y2hGb3Vu
ZDsKLSAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc0NhbGxiYWNrKHNlbGVjdG9ySW5kZXgsIG1hdGNo
ZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBpc0xhc3QgPSBzZWxlY3RvckluZGV4ID09
PSBzZWxlY3RvcnMubGVuZ3RoIC0gMTsKLSAgICAgICAgICAgIHZhciBmcmFnbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgICAgIHJlc3VsdFtzZWxlY3Rv
ckluZGV4XSA9IGZyYWdtZW50OwogCisgICAgICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgdmFyIGN1cnJlbnRNYXRjaCA9IDA7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwLCBsYXN0U2VsZWN0b3JJbmRleCA9IHNlbGVjdG9ycy5sZW5n
dGggLSAxOyBpIDw9IGxhc3RTZWxlY3RvckluZGV4IDsgKytpKSB7CiAgICAgICAgICAgICB2YXIg
c2VsZWN0b3JOb2RlOwotICAgICAgICAgICAgaWYgKG1hdGNoZXMgJiYgcGFuZU5vZGUgPT09IHNl
bGYuX3BhcmVudFBhbmUubm9kZSkgeworICAgICAgICAgICAgdmFyIHRleHROb2RlID0gZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoc2VsZWN0b3JzW2ldKTsKKyAgICAgICAgICAgIGlmIChtYXRjaGlu
Z0luZGljZXNbY3VycmVudE1hdGNoXSA9PT0gaSkgeworICAgICAgICAgICAgICAgICsrY3VycmVu
dE1hdGNoOwogICAgICAgICAgICAgICAgIHNlbGVjdG9yTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgICAgICBzZWxlY3Rvck5vZGUuY2xhc3NOYW1lID0g
InNlbGVjdG9yLW1hdGNoZXMiOwotICAgICAgICAgICAgICAgIHNlbGVjdG9yTm9kZS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWxlY3RvcnNbc2VsZWN0b3JJbmRleF0pKTsK
LSAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBzZWxl
Y3Rvck5vZGUuYXBwZW5kQ2hpbGQodGV4dE5vZGUpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgc2VsZWN0b3JOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc2VsZWN0
b3JzW3NlbGVjdG9ySW5kZXhdKTsKKyAgICAgICAgICAgICAgICBzZWxlY3Rvck5vZGUgPSB0ZXh0
Tm9kZTsKIAogICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoc2VsZWN0b3JOb2RlKTsK
LSAgICAgICAgICAgIGlmICghaXNMYXN0KSB7CisgICAgICAgICAgICBpZiAoaSAhPT0gbGFzdFNl
bGVjdG9ySW5kZXgpCiAgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIiwgIikpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgLy8gVGhpcyBjaGVjayBpcyBoZXJlIGluIGNhc2UgdGhl
IGVsZW1lbnQgY2xhc3MgaGFzIGJlZW4gY2hhbmdlZCBmcm9tIEpTIGR1cmluZyB0aGUgcm91bmR0
cmlwLAotICAgICAgICAgICAgLy8gc28gdGhlIGVsZW1lbnQgbWF0Y2hlcyBub25lIG9mIHRoZSBk
aXN0aW5jdCBzZWxlY3RvcnMuIEZhbGwgYmFjayB0byAiYWxsIHNlbGVjdG9ycyBtYXRjaCIuCi0g
ICAgICAgICAgICBpZiAobWF0Y2hGb3VuZCkgewotICAgICAgICAgICAgICAgIHNlbGYuX3NlbGVj
dG9yRWxlbWVudC5jbGFzc05hbWUgPSAic2VsZWN0b3IiOwotICAgICAgICAgICAgICAgIHNlbGYu
X3NlbGVjdG9yRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9zZWxlY3RvckVsZW1lbnQuYXBwZW5kQ2hpbGQocmVzdWx0W2ldKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG15Y2FsbGJhY2soKTsKICAgICAgICAgfQorCisgICAgICAgIHRoaXMu
X3NlbGVjdG9yRWxlbWVudC5jbGFzc05hbWUgPSAic2VsZWN0b3IiOworICAgICAgICB0aGlzLl9z
ZWxlY3RvckVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0b3JF
bGVtZW50LmFwcGVuZENoaWxkKGZyYWdtZW50KTsKICAgICB9LAogCiAgICAgX2NoZWNrV2lsbENh
bmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKQEAgLTEzNTAsMzIgKzEyODEsMjcgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgX21vdmVFZGl0
b3JGcm9tU2VsZWN0b3I6IGZ1bmN0aW9uKG1vdmVEaXJlY3Rpb24pCiAgICAgeworICAgICAgICB0
aGlzLl9tYXJrU2VsZWN0b3JNYXRjaGVzKCk7CiAKLSAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9u
KSB7Ci0gICAgICAgICAgICB0aGlzLl9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3JvdXAoKTsKKyAg
ICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5fbWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwKG1hcmtDYWxsYmFj
ay5iaW5kKHRoaXMpKTsKIAotICAgICAgICBmdW5jdGlvbiBtYXJrQ2FsbGJhY2soKSB7Ci0gICAg
ICAgICAgICBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5leHBhbmQoKTsKLSAgICAgICAgICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IHRoaXMu
cHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVuWzBdOwotICAgICAgICAgICAgICAgIHdoaWxl
IChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQuaW5oZXJpdGVkKQotICAgICAgICAgICAgICAgICAg
ICBmaXJzdENoaWxkID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsKLSAgICAgICAgICAgICAgICBp
ZiAoIWZpcnN0Q2hpbGQpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV3QmxhbmtQcm9w
ZXJ0eSgpLnN0YXJ0RWRpdGluZygpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgZmlyc3RDaGlsZC5zdGFydEVkaXRpbmcoZmlyc3RDaGlsZC5uYW1lRWxlbWVudCk7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1NlY3Rp
b24gPSB0aGlzLnByZXZpb3VzRWRpdGFibGVTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFwcmV2aW91c1NlY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIikgeworICAgICAgICAgICAgdGhpcy5leHBh
bmQoKTsKKyAgICAgICAgICAgIHZhciBmaXJzdENoaWxkID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91
dGxpbmUuY2hpbGRyZW5bMF07CisgICAgICAgICAgICB3aGlsZSAoZmlyc3RDaGlsZCAmJiBmaXJz
dENoaWxkLmluaGVyaXRlZCkKKyAgICAgICAgICAgICAgICBmaXJzdENoaWxkID0gZmlyc3RDaGls
ZC5uZXh0U2libGluZzsKKyAgICAgICAgICAgIGlmICghZmlyc3RDaGlsZCkKKyAgICAgICAgICAg
ICAgICB0aGlzLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaXJzdENoaWxkLnN0YXJ0RWRpdGluZyhmaXJzdENo
aWxkLm5hbWVFbGVtZW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBwcmV2
aW91c1NlY3Rpb24gPSB0aGlzLnByZXZpb3VzRWRpdGFibGVTaWJsaW5nKCk7CisgICAgICAgICAg
ICBpZiAoIXByZXZpb3VzU2VjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgICAgICBwcmV2aW91c1NlY3Rpb24uZXhwYW5kKCk7Ci0gICAgICAgICAgICAgICAgcHJl
dmlvdXNTZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzU2VjdGlvbi5leHBhbmQoKTsKKyAgICAgICAg
ICAgIHByZXZpb3VzU2VjdGlvbi5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7
CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0xNDE1LDcgKzEzNDEsNyBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICAvLyBE
byBub3RoaW5nIGJ1dCBtYXJrIHRoZSBzZWxlY3RvcnMgaW4gZ3JvdXAgaWYgbmVjZXNzYXJ5Lgog
ICAgICAgICAvLyBUaGlzIGlzIG92ZXJyaWRkZW4gYnkgQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0
aW9uLgotICAgICAgICB0aGlzLl9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3JvdXAoKTsKKyAgICAg
ICAgdGhpcy5fbWFya1NlbGVjdG9yTWF0Y2hlcygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMzOTE1
NzNiZDYzZTgzNWY2NWMyMjM2YTNlYThlZmE5NWJkZTMwNjguLjdhNzJlNDc2YmVlNzFhZTczMTYx
ODBkZjQ4ZjgzMTUzN2IyNTcyMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yNCAg
QWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFtTdHlsZXNdIEZvciBncm91cCBzZWxlY3RvcnMsIHRyYW5zbWl0IHRoZWlyIHNl
Z21lbnRzIHdpdGggdGhlICJtYXRjaGVzIiBmbGFnCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Njk5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9nZXQtc2V0LXN0eWxlc2hl
ZXQtdGV4dC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEku
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5o
dG1sOgorCiAyMDEyLTA5LTIxICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIENoYW5nZWQgZmFzdC90ZXh0L2ludGVybmF0aW9uYWwv
aGVicmV3LXNlbGVjdGlvbi5odG1sIGV4cGVjdGF0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzL2dldC1zZXQtc3R5bGVzaGVldC10ZXh0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL2dldC1zZXQtc3R5bGVzaGVldC10ZXh0Lmh0bWwKaW5kZXgg
NTlhZmYwZTQ3ZmRhODRjYmFjOTMyY2FkMmEzOTEyOTk0OGY4MDNlMS4uMTVhMzUwMTllYTNiYTZl
NmVhMzk1MDc5YWYyMWY0MzMyZmFlMDgxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9nZXQtc2V0LXN0eWxlc2hlZXQtdGV4dC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvZ2V0LXNldC1zdHlsZXNoZWV0LXRleHQuaHRtbApAQCAtNjQsNyAr
NjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBNYXRjaGVkIHJ1bGVzIGZvciBoMSBhZnRlciBzZXRU
ZXh0KCkgPT09Iik7Ci0gICAgICAgICAgICBkdW1wUnVsZXNBcnJheShtYXRjaGVkQ1NTUnVsZXMp
OworICAgICAgICAgICAgZHVtcE1hdGNoZXNBcnJheShtYXRjaGVkQ1NTUnVsZXMpOwogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICAgICAgfQogCkBAIC03OSwx
MiArNzksMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAvLyBEYXRhIGR1bXBpbmcKIAotICAg
IGZ1bmN0aW9uIGR1bXBSdWxlc0FycmF5KHJ1bGVzKQorICAgIGZ1bmN0aW9uIGR1bXBNYXRjaGVz
QXJyYXkocnVsZXMpCiAgICAgewogICAgICAgICBpZiAoIXJ1bGVzKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgKytpKQotICAg
ICAgICAgICAgZHVtcFJ1bGVPclN0eWxlKHJ1bGVzW2ldKTsKKyAgICAgICAgICAgIGR1bXBSdWxl
T3JTdHlsZShydWxlc1tpXS5ydWxlKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkdW1wUnVsZU9y
U3R5bGUocnVsZU9yU3R5bGUpCkBAIC05NSw3ICs5NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICB2YXIgc3R5bGUgPSBpc1J1bGUgPyBydWxlT3JTdHlsZS5zdHlsZSA6IHJ1bGVPclN0eWxl
OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KGlzUnVsZSA/ICJydWxlIiA6ICJzdHlsZSIpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgoaXNSdWxlID8gKHJ1bGVPclN0eWxlLnNlbGVjdG9yVGV4dCAr
ICI6IFsiICsgcnVsZU9yU3R5bGUub3JpZ2luICsgIl0iKSA6ICJyYXcgc3R5bGUiKSk7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KChpc1J1bGUgPyAocnVsZU9yU3R5bGUuc2VsZWN0
b3JMaXN0LnRleHQgKyAiOiBbIiArIHJ1bGVPclN0eWxlLm9yaWdpbiArICJdIikgOiAicmF3IHN0
eWxlIikpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlLmNzc1Byb3BlcnRpZXMu
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHN0eWxlLmNzc1Byb3Bl
cnRpZXNbaV07CiAgICAgICAgICAgICBpZiAocHJvcGVydHkuc3RhdHVzICE9PSAiZGlzYWJsZWQi
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQ
SS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1s
CmluZGV4IDVlNmYzOTNkYjgyN2RkMjU1ZmQzNzZiYjhkZjA5M2NjZTQ3ZmQ2YTYuLjkwYTU3OTE2
YjMwYjljNTlhNDgwYjlkNzk2ZTUzYzk3ZjU5NTI4Y2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKQEAgLTI1LDEzICsyNSwxMyBAQCBm
dW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBNYXRjaGVkIHJ1bGVz
IGZvciBib2R5ID09PSIpOwotICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVzLm1hdGNo
ZWRDU1NSdWxlcyk7CisgICAgICAgICAgICBkdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMubWF0
Y2hlZENTU1J1bGVzKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBQc2V1ZG8gcnVsZXMg
Zm9yIGJvZHkgPT09Iik7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5w
c2V1ZG9FbGVtZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJQc2V1ZG9JZD0iICsgc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnBzZXVk
b0lkKTsKLSAgICAgICAgICAgICAgICBkdW1wUnVsZXNBcnJheShzdHlsZXMucHNldWRvRWxlbWVu
dHNbaV0ucnVsZXMpOworICAgICAgICAgICAgICAgIGR1bXBSdWxlTWF0Y2hlc0FycmF5KHN0eWxl
cy5wc2V1ZG9FbGVtZW50c1tpXS5tYXRjaGVzKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwpAQCAtMzksNyArMzksNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmluaGVyaXRl
ZC5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJMZXZlbD0iICsgKGkgKyAxKSk7CiAgICAgICAgICAgICAgICAgZHVtcFN0eWxlKHN0eWxlcy5p
bmhlcml0ZWRbaV0uaW5saW5lU3R5bGUpOwotICAgICAgICAgICAgICAgIGR1bXBSdWxlc0FycmF5
KHN0eWxlcy5pbmhlcml0ZWRbaV0ubWF0Y2hlZENTU1J1bGVzKTsKKyAgICAgICAgICAgICAgICBk
dW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxlcyk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIi
KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24g
bWF0Y2hlZENhbGxiYWNrKGVycm9yLCBtYXRjaGVkUnVsZXMpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQk9EWSB3aXRoIGZvcmNlZCA6aG92ZXIg
PT09Iik7Ci0gICAgICAgICAgICBkdW1wUnVsZXNBcnJheShtYXRjaGVkUnVsZXMpOworICAgICAg
ICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlZFJ1bGVzKTsKICAgICAgICAgICAgIENT
U0FnZW50LmZvcmNlUHNldWRvU3RhdGUoYm9keUlkLCBbImhvdmVyIl0sIHRlc3RfdGFibGVTdHls
ZXMpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjA4LDcgKzIwOCw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBNYXRjaGVkIHJ1bGVz
IGFmdGVyIHJ1bGUgYWRkZWQgPT09Iik7Ci0gICAgICAgICAgICBkdW1wUnVsZXNBcnJheShtYXRj
aGVkQ1NTUnVsZXMpOworICAgICAgICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlZENT
U1J1bGVzKTsKICAgICAgICAgICAgIHRlc3RfZGlzYWJsZVByb3BlcnR5KCk7CiAgICAgICAgIH0K
IApAQCAtMjYyLDcgKzI2Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgLy8gLW1v
ei1nb29nOiAxKioqOwogICAgICAgICAgICAgLy8gYm9yZGVyLXdpZHRoOiAwcHg7CiAKLSAgICAg
ICAgICAgIHZhciBzdHlsZUlkID0gbWF0Y2hlZENTU1J1bGVzWzFdLnN0eWxlLnN0eWxlSWQ7Cisg
ICAgICAgICAgICB2YXIgc3R5bGVJZCA9IG1hdGNoZWRDU1NSdWxlc1sxXS5ydWxlLnN0eWxlLnN0
eWxlSWQ7CiAgICAgICAgICAgICBDU1NBZ2VudC50b2dnbGVQcm9wZXJ0eShzdHlsZUlkLCAwLCB0
cnVlKTsgLy8gaGVpZ2h0OiAxMDAlCiAgICAgICAgICAgICBDU1NBZ2VudC50b2dnbGVQcm9wZXJ0
eShzdHlsZUlkLCA3LCB0cnVlKTsgLy8gYm9yZGVyLXdpZHRoOiAwcHgKICAgICAgICAgICAgIENT
U0FnZW50LnNldFByb3BlcnR5VGV4dChzdHlsZUlkLCA3LCAiZm9udC1zaXplOiAxMnB4OyIsIGZh
bHNlKTsKQEAgLTMxNSwxOSArMzE1LDI4IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rp
b24gZHVtcFJ1bGVzQXJyYXkocnVsZXMsIGN1cnJlbnRJbmRlbnQpCiAgICAgewotICAgICAgICBj
dXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsKICAgICAgICAgaWYgKCFydWxlcykK
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRl
bnQgfHwgIiI7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyArK2kp
CiAgICAgICAgICAgICBkdW1wUnVsZShydWxlc1tpXSwgY3VycmVudEluZGVudCk7CiAgICAgfQog
CisgICAgZnVuY3Rpb24gZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlcywgY3VycmVudEluZGVu
dCkKKyAgICB7CisgICAgICAgIGlmICghbWF0Y2hlcykKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbWF0Y2hlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGR1bXBSdWxl
KG1hdGNoZXNbaV0ucnVsZSwgY3VycmVudEluZGVudCk7CisgICAgfQorCiAgICAgZnVuY3Rpb24g
ZHVtcFJ1bGUocnVsZSwgY3VycmVudEluZGVudCkKICAgICB7CiAgICAgICAgIGN1cnJlbnRJbmRl
bnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOwogCiAgICAgICAgIGlmICghcnVsZS50eXBlIHx8IHJ1
bGUudHlwZSA9PT0gInN0eWxlIikgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoY3VycmVudEluZGVudCArIHJ1bGUuc2VsZWN0b3JUZXh0ICsgIjogWyIgKyBydWxlLm9yaWdp
biArICJdIHsiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJ
bmRlbnQgKyBydWxlLnNlbGVjdG9yTGlzdC50ZXh0ICsgIjogWyIgKyBydWxlLm9yaWdpbiArICJd
IHsiKTsKICAgICAgICAgICAgIGR1bXBTdHlsZShydWxlLnN0eWxlLCBjdXJyZW50SW5kZW50ICsg
aW5kZW50KTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRl
bnQgKyAifSIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ3LDkgKzM1Niw5IEBAIGZ1bmN0
aW9uIHRlc3QoKQogCiAgICAgICAgIGlmIChydWxlLnR5cGUgPT09ICJwYWdlIiB8fCBydWxlLnR5
cGUgPT09ICJmb250LWZhY2UiKSB7CiAgICAgICAgICAgICBpZiAocnVsZS50eXBlID09PSAicGFn
ZSIpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVu
dCArIHJ1bGUuc2VsZWN0b3JUZXh0ICsgIiB7Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArIHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgKyAi
IHsiKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIkAiICsgcnVsZS50eXBlICsgIiAiICsgKHJ1bGUuc2Vs
ZWN0b3JUZXh0ID8gcnVsZS5zZWxlY3RvclRleHQgKyAiICIgOiAiIikgICsgInsiKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIkAiICsg
cnVsZS50eXBlICsgIiAiICsgKHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgPyBydWxlLnNlbGVjdG9y
TGlzdC50ZXh0ICsgIiAiIDogIiIpICArICJ7Iik7CiAgICAgICAgICAgICBkdW1wU3R5bGUocnVs
ZS5zdHlsZSwgY3VycmVudEluZGVudCArIGluZGVudCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIn0iKTsKICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLXNvdXJjZS1v
ZmZzZXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1zb3VyY2Ut
b2Zmc2V0cy5odG1sCmluZGV4IDJkMjE0YzQzMjcwOWUwZjBmMzUyZjQ4NDEzMjgwMzE1OWQzMGUy
MGQuLmVjMGI0M2U4NTlhY2U2OGRhYjNlN2NkNmNkNjdkN2NmMTBmODQxOTIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLXNvdXJjZS1vZmZzZXRzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtc291cmNlLW9mZnNldHMu
aHRtbApAQCAtMTgsNyArMTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGlmIChy
dWxlT3JTdHlsZS5vcmlnaW4gIT09ICJyZWd1bGFyIikKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBzdHlsZSA9IHJ1bGVPclN0eWxlLnN0eWxlOwotICAgICAgICAgICAgaGVh
ZGVyID0gcnVsZU9yU3R5bGUuc2VsZWN0b3JUZXh0ICsgIjogWyIgKyAocnVsZU9yU3R5bGUuc2Vs
ZWN0b3JSYW5nZSA/IHJ1bGVPclN0eWxlLnNlbGVjdG9yUmFuZ2Uuc3RhcnQgKyAiLSIgKyBydWxl
T3JTdHlsZS5zZWxlY3RvclJhbmdlLmVuZCA6ICIiKSAgKyAiXSI7CisgICAgICAgICAgICBoZWFk
ZXIgPSBydWxlT3JTdHlsZS5zZWxlY3Rvckxpc3QudGV4dCArICI6IFsiICsgKHJ1bGVPclN0eWxl
LnNlbGVjdG9yTGlzdC5yYW5nZSA/IHJ1bGVPclN0eWxlLnNlbGVjdG9yTGlzdC5yYW5nZS5zdGFy
dCArICItIiArIHJ1bGVPclN0eWxlLnNlbGVjdG9yTGlzdC5yYW5nZS5lbmQgOiAiIikgICsgIl0i
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3R5bGUgPSBydWxlT3JTdHlsZTsKICAg
ICAgICAgICAgIGhlYWRlciA9ICJlbGVtZW50LnN0eWxlOiI7CkBAIC02OSw3ICs2OSw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgdmFyIG1hdGNoZWRDU1NSdWxlcyA9IHJlc3Vs
dFN0eWxlcy5tYXRjaGVkQ1NTUnVsZXM7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0
Y2hlZENTU1J1bGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZHVtcFN0eWxlRGF0YShtYXRj
aGVkQ1NTUnVsZXNbaV0pOworICAgICAgICAgICAgZHVtcFN0eWxlRGF0YShtYXRjaGVkQ1NTUnVs
ZXNbaV0ucnVsZSk7CiAgICAgICAgIGR1bXBTdHlsZURhdGEocmVzdWx0U3R5bGVzLmlubGluZVN0
eWxlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="177352"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>