<?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>25135</bug_id>
          
          <creation_ts>2009-04-10 15:20:52 -0700</creation_ts>
          <short_desc>text-overflow:ellipsis doesn&apos;t correctly handle cases where a text run and inline box have different directionality</short_desc>
          <delta_ts>2018-02-02 23:07:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=164999</see_also>
          <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="Jeremy Moskovich">playmobil</reporter>
          <assigned_to name="Jeremy Moskovich">playmobil</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>117189</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-04-10 15:20:52 -0700</bug_when>
    <thetext>.e.g.The case of an RTL div where the ellipsis is placed on to of an LTR text run,.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117654</commentid>
    <comment_count>1</comment_count>
      <attachid>29513</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-04-15 12:47:17 -0700</bug_when>
    <thetext>Created attachment 29513
Proposed fix

Added code to handle this case and ammended Layout Test appropriately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117656</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-04-15 12:52:36 -0700</bug_when>
    <thetext>Here&apos;s a slightly clearer description of the problem:

.test {
    width: 180px;
    height: 20px;
    border: 1px solid black;
    white-space: nowrap;
    overflow: hidden;
    margin: 0 0 20px 0;
}

.ellipsis {
    text-overflow:ellipsis;
}

&lt;div class=&quot;test ellipsis&quot; dir=RTL&gt;
Hello
&lt;/div&gt;

The directionality of the div dictates the side that the ellipsis will be drawn on, in this case the left side of the text.

This case differs from what&apos;s currently handled in the code since the difference in directionality means we need to truncate from the START of the text run.

Therefore the correct truncation should look something like:
...lo

This is also true for the opposite case (ltr aligned div containg an RTL text run).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117658</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-04-15 13:18:45 -0700</bug_when>
    <thetext>&gt; Therefore the correct truncation should look something like:
&gt; ...lo

It does not seem right for truncation to remove text from the middle and leave out the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117661</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-04-15 13:29:32 -0700</bug_when>
    <thetext>This is how IE behaves. If you look at the Layout test after this patch is applied you&apos;ll see WebKit behaves identically to IE.

Another reference (although, I&apos;m not sure how authoratative), is this post:
http://markmail.org/message/r45kbqerj3sgisc2#query:text-overflow%3Aellipsis%20rtl+page:1+mid:oxndx7i3fnmjumrl+state:results

&quot;Not sure that is what you are saying, but I think there should never be 
anything between the ellipsis and the boundary of the box: You lay out 
the lines using the bidi-algorithm, and then remove characters from the 
end of the *visual* lines:&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117666</commentid>
    <comment_count>5</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-04-15 14:24:03 -0700</bug_when>
    <thetext>Perhaps this makes more sense to me in the context of multiple directional runs, so for example, let&apos;s look at two cases:

The simple case - the directionality of the div and the inline element are identical:
&lt;div class=&quot;test ellipsis&quot; dir=LTR&gt;
Hello World
&lt;/div&gt;

This truncates to |Hello Wo...|

Now, let&apos;s add some RTL text on the end:
&lt;div class=&quot;test ellipsis&quot; dir=LTR&gt;
Hello World OLLEH
&lt;/div&gt;

There are basically 2 options for truncating this:

1. |Hello World OL...|
This is what the patch I&apos;ve uploaded and IE do and seems like the right behavior to me.

2. |Hello World ...EH|
Placing the ellipsis in the middle of the run rather than close to the box edge seems wrong to me.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117745</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-04-16 09:58:59 -0700</bug_when>
    <thetext>mitz: Could you confirm my interpretation of your comment so I can be sure we&apos;re on the same page before uploading a new patch?

Do you mean that instead of truncating:
Hello World OLLEH -&gt; |Hello World OL...|

We should truncate this as:
Hello World OLLEH -&gt; |Hello World EH...|

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117973</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2009-04-17 14:47:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; mitz: Could you confirm my interpretation of your comment so I can be sure
&gt; we&apos;re on the same page before uploading a new patch?
&gt; 
&gt; Do you mean that instead of truncating:
&gt; Hello World OLLEH -&gt; |Hello World OL...|
&gt; 
&gt; We should truncate this as:
&gt; Hello World OLLEH -&gt; |Hello World EH...|

Yes, that preserves the beginning of the text rather than removing parts from the middle. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118424</commentid>
    <comment_count>8</comment_count>
      <attachid>29513</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-04-22 15:10:22 -0700</bug_when>
    <thetext>Comment on attachment 29513
Proposed fix

clear review bit, pending update patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119642</commentid>
    <comment_count>9</comment_count>
      <attachid>29951</attachid>
    <who name="Jeremy Moskovich">playmobil</who>
    <bug_when>2009-05-01 15:51:47 -0700</bug_when>
    <thetext>Created attachment 29951
second try

Fix for the issues Mitz raised (thanks!).

I&apos;ve now bundled this together with the patches for another couple of bugs, since it doesn&apos;t really make sense to land them separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121091</commentid>
    <comment_count>10</comment_count>
      <attachid>29951</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2009-05-13 13:59:18 -0700</bug_when>
    <thetext>Comment on attachment 29951
second try

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121119</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-05-13 15:33:20 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/43664.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29513</attachid>
            <date>2009-04-15 12:47:17 -0700</date>
            <delta_ts>2009-05-01 15:51:47 -0700</delta_ts>
            <desc>Proposed fix</desc>
            <filename>reverse_truncation.patch</filename>
            <type>text/plain</type>
            <size>20753</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ4MDk3NGU4MDI3ZjNhNzgxNjI2MjQ3N2Y2MGY2ZmE3ZGQwMzM0MTcKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxwbGF5bW9iaWxAZGhjcC0xNzItMjItNzEtMTk2Lm10di5jb3JwLmdv
b2dsZS5jb20+CkRhdGU6ICAgV2VkIEFwciAxNSAxMjo0NDozNyAyMDA5IC0wNzAwCgogICAgRml4
IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXMgaW4gY2FzZXMgd2hlcmUgdGhlIGVsbGlwc2lzIGZhbGxz
IGluc2lkZSBhbiBlbGVtZW50IHdobydzIGRpcmVjdGlvbmFsaXR5IGlzIGRpZmZlcmVudCBmcm9t
IHRoZSBjb250ZW50LgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjODg5Zjk5Li4zMzE1MDQ5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMDktMDQtMTUgIEplcmVteSBNb3Nrb3ZpY2ggIDxqZXJlbXlAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCB0
ZXh0LW92ZXJmbG93OmVsbGlwc2lzIGluIGNhc2VzIHdoZXJlIHRoZSBlbGxpcHNpcyBmYWxscwor
ICAgICAgICBpbnNpZGUgYW4gZWxlbWVudCB3aG8ncyBkaXJlY3Rpb25hbGl0eSBpcyBkaWZmZXJl
bnQgZnJvbSB0aGUgY29udGVudC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjUxMzUKKworICAgICAgICAqIGZhc3QvY3NzL3RleHQtb3ZlcmZsb3ct
ZWxsaXBzaXMuaHRtbDogQWRkZWQgdGVzdCBjYXNlcyBmb3IgbWl4ZWQKKyAgICAgICAgZGlyZWN0
aW9uYWxpdHkuIFNlcGFyYXRlZCBkaXI9bHRyL3J0bCB0ZXN0IGNhc2VzIHRvIG1ha2UgaXQgZWFz
aWVyCisgICAgICAgIHRvIHNlZSBmYWlsdXJlcy4KKwogMjAwOS0wNC0xNSAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LW92ZXJmbG93LWVsbGlwc2lzLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LW92ZXJmbG93LWVsbGlwc2lzLmh0bWwKaW5k
ZXggMjEzY2FjNS4uMmRlMmQyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4
dC1vdmVyZmxvdy1lbGxpcHNpcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQt
b3ZlcmZsb3ctZWxsaXBzaXMuaHRtbApAQCAtMTAsMTAgKzEwLDYgQEAKICAgICBtYXJnaW46IDAg
MCAyMHB4IDA7CiB9CiAKLS5ydGwgewotICAgIGRpcmVjdGlvbjogcnRsOwotfQotCiAuZm9yY2Vy
dGwgewogICAgIGRpcmVjdGlvbjogcnRsOwogICAgIHVuaWNvZGUtYmlkaTogYmlkaS1vdmVycmlk
ZTsKQEAgLTMzLDI4ICsyOSw1NiBAQCBQYXNzIGlmIHRoZSBlbGxpcHNlcyBkbyBub3Qgb3Zlcmxh
cCB0aGUgdGV4dCBhbmQgdGhlIHVuZGVybGluZXMgZm9yIHRoZSBsaW5rcyBhcgogcGxhY2VkIHVu
ZGVyIHRoZSB0ZXh0IGFuZCBub3QgdGhlIGVsbGlwc2VzLgogPGJyPjxicj4KIAotTFRSOgotPGRp
diBjbGFzcz0idGVzdERpdiBlbGxpcHNlcyI+Ci1Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwg
Y29uc2VjdGV0dXIgYWRpcGlzY2luZwotPC9kaXY+Ci0KIFJUTDoKLTxkaXYgY2xhc3M9InRlc3RE
aXYgcnRsIGVsbGlwc2VzIj4KKzxkaXYgY2xhc3M9InRlc3REaXYgZWxsaXBzZXMiIGRpcj1ydGw+
CiDXm9ep15TXmNen16HXmCDXoteo15XXmiDXnteT15kg16DXqNem15Qg15zXlNeV16HXmdejINeQ
15zXmdek16HXldeqINeR16HXldejINep15XXqNeUCiA8L2Rpdj4KIAogUlRMIE92ZXJyaWRlOgot
PGRpdiBjbGFzcz0idGVzdERpdiBmb3JjZXJ0bCBlbGxpcHNlcyI+Cis8ZGl2IGNsYXNzPSJ0ZXN0
RGl2IGVsbGlwc2VzIiBkaXI9cnRsPgogTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNl
Y3RldHVyIGFkaXBpc2NpbmcKIDwvZGl2PgogCitSVEwgbGluazoKKzxkaXYgY2xhc3M9InRlc3RE
aXYgZm9yY2VydGwgZWxsaXBzZXMiIGRpcj1ydGw+Cis8YSBocmVmPSM+TG9yZW0gaXBzdW0gZG9s
b3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Npbmc8L2E+Cis8L2Rpdj4KIAotTFRSIGxp
bms6Ci08ZGl2IGNsYXNzPSJ0ZXN0RGl2IGVsbGlwc2VzIj4KK1JUTCB3aXRoIGx0ciBjb250ZW50
OgorPGRpdiBjbGFzcz0idGVzdERpdiBlbGxpcHNlcyIgZGlyPXJ0bD4KK0xvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nCis8L2Rpdj4KKworUlRMIGxpbmsg
d2l0aCBsdHIgY29udGVudDoKKzxkaXYgY2xhc3M9InRlc3REaXYgZWxsaXBzZXMiIGRpcj1ydGw+
CiA8YSBocmVmPSM+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBp
c2Npbmc8L2E+CiA8L2Rpdj4KIAotUlRMIGxpbms6Ci08ZGl2IGNsYXNzPSJ0ZXN0RGl2IGZvcmNl
cnRsIGVsbGlwc2VzIj4KK0xUUiBsaW5rOgorPGRpdiBjbGFzcz0idGVzdERpdiBlbGxpcHNlcyIg
ZGlyPWx0cj4KIDxhIGhyZWY9Iz5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0
dXIgYWRpcGlzY2luZzwvYT4KIDwvZGl2PgorCitMVFI6Cis8ZGl2IGNsYXNzPSJ0ZXN0RGl2IGVs
bGlwc2VzIiBkaXI9bHRyPgorTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVy
IGFkaXBpc2NpbmcKKzwvZGl2PgorCitMVFIgd2l0aCBydGwgY29udGVudDoKKzxkaXYgY2xhc3M9
InRlc3REaXYgZWxsaXBzZXMiIGRpcj1sdHI+CivXm9ep15TXmNen16HXmCDXoteo15XXmiDXnteT
15kg16DXqNem15Qg15zXlNeV16HXmdejINeQ15zXmdek16HXldeqINeR16HXldejINep15XXqNeU
Cis8L2Rpdj4KKworTFRSIGxpbmsgd2l0aCBydGwgY29udGVudDoKKzxkaXYgY2xhc3M9InRlc3RE
aXYgZWxsaXBzZXMiIGRpcj1sdHI+Cis8YSBocmVmPSM+CivXm9ep15TXmNen16HXmCDXoteo15XX
miDXnteT15kg16DXqNem15Qg15zXlNeV16HXmdejINeQ15zXmdek16HXldeqINeR16HXldejINep
15XXqNeUCis8L2E+Cis8L2Rpdj4KKworTFRSIGxpbmsgd2l0aCBmb3JjZWQgcnRsIGNvbnRlbnQ6
Cis8ZGl2IGNsYXNzPSJ0ZXN0RGl2IGVsbGlwc2VzIiBkaXI9bHRyPgorPHNwYW4gY2xhc3M9Zm9y
Y2VydGwgZGlyPXJ0bD4KK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBh
ZGlwaXNjaW5nCis8L3NwYW4+Cis8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFm
NWYzOWMuLmQzOWQxN2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMDktMDQtMTUgIEplcmVteSBNb3Nrb3Zp
Y2ggIDxqZXJlbXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZpeCB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzIGluIGNhc2VzIHdo
ZXJlIHRoZSBlbGxpcHNpcyBmYWxscworICAgICAgICBpbnNpZGUgYW4gZWxlbWVudCB3aG8ncyBk
aXJlY3Rpb25hbGl0eSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29udGVudC4KKworICAgICAgICBB
bHNvLCBjbGVhbiB3aGl0ZXNwYWNlcyBhdCBFT0wgaW4gSW5saW5lVGV4dEJveC5jcHAuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTM1CisKKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0KTogV2hpdGVzcGFjZSBoeWdlbmUuCisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjphdHRhY2hMaW5lKTogV2hpdGVzcGFjZSBoeWdlbmUu
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlwc2lzQm94KTogQ29y
cmVjdGx5IHRydW5jYXRlIHRleHRib3hlcy4KKyAgICAgICAgd2hvc2UgZGlyZWN0aW9uYWxpdHkg
aXMgZGlmZmVyZW50IHRoYW4gdGhlIHN1cnJvdW5kaW5nIGZsb3cuCisgICAgICAgIChXZWJDb3Jl
Ojpjb3JyZWN0ZWRUZXh0Q29sb3IpOiBXaGl0ZXNwYWNlIGh5Z2VuZS4KKyAgICAgICAgKFdlYkNv
cmU6OnVwZGF0ZUdyYXBoaWNzQ29udGV4dCk6IFdoaXRlc3BhY2UgaHlnZW5lLgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOiBGaXh1cCBkcmF3aW5nIG9mIHRydW5jYXRl
ZCB0ZXh0IHJ1bnMuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpnZXRUcnVuY2F0
aW9uU3RhcnRFbmQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBh
aW50U2VsZWN0aW9uKTogV2hpdGVzcGFjZSBoeWdlbmUuCisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uQmFja2dyb3VuZCk6IFdoaXRlc3BhY2UgaHlnZW5l
LgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKTogRml4
dXAgZHJhd2luZyBvZiB0cnVuY2F0ZWQgdGV4dCBydW5zLgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lVGV4dEJveDo6cGFpbnRTcGVsbGluZ09yR3JhbW1hck1hcmtlcik6IFdoaXRlc3BhY2UgaHln
ZW5lLgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJr
ZXIpOiBXaGl0ZXNwYWNlIGh5Z2VuZS4KKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6
OnBhaW50RG9jdW1lbnRNYXJrZXJzKTogV2hpdGVzcGFjZSBoeWdlbmUuCisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5lKTogV2hpdGVzcGFj
ZSBoeWdlbmUuCisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojp0ZXh0UG9zKTogV2hp
dGVzcGFjZSBoeWdlbmUuCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDogQWRk
ZWQgV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6Z2V0VHJ1bmNhdGlvblN0YXJ0RW5kCisKIDIwMDkt
MDQtMTUgIEFkYW0gTGFuZ2xleSAgPGFnbEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggMDgy
MmQ3ZS4uYWM0YzczOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTkzLDcg
KzkzLDcgQEAgSW50UmVjdCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25SZWN0KGludCB0eCwgaW50
IHR5LCBpbnQgc3RhcnRQb3MsIGludCBlbmRQb3MpCiB7CiAgICAgaW50IHNQb3MgPSBtYXgoc3Rh
cnRQb3MgLSBtX3N0YXJ0LCAwKTsKICAgICBpbnQgZVBvcyA9IG1pbihlbmRQb3MgLSBtX3N0YXJ0
LCAoaW50KW1fbGVuKTsKLSAgICAKKwogICAgIGlmIChzUG9zID49IGVQb3MpCiAgICAgICAgIHJl
dHVybiBJbnRSZWN0KCk7CiAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OmF0dGFjaExpbmUoKQogewogICAgIGlmICghbV9leHRyYWN0ZWQpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+YXR0YWNoVGV4dEJveCh0aGlz
KTsKIH0KIApAQCAtMTQxLDcgKzE0MSw3IEBAIGludCBJbmxpbmVUZXh0Qm94OjpwbGFjZUVsbGlw
c2lzQm94KGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCwKICAgICB9
CiAKICAgICBpbnQgZWxsaXBzaXNYID0gbHRyID8gYmxvY2tFZGdlIC0gZWxsaXBzaXNXaWR0aCA6
IGJsb2NrRWRnZSArIGVsbGlwc2lzV2lkdGg7Ci0gICAgCisKICAgICAvLyBDcml0ZXJpYSBmb3Ig
ZnVsbCB0cnVuY2F0aW9uOgogICAgIC8vIExUUjogdGhlIGxlZnQgZWRnZSBvZiB0aGUgZWxsaXBz
aXMgaXMgdG8gdGhlIGxlZnQgb2Ygb3VyIHRleHQgcnVuLgogICAgIC8vIFJUTDogdGhlIHJpZ2h0
IGVkZ2Ugb2YgdGhlIGVsbGlwc2lzIGlzIHRvIHRoZSByaWdodCBvZiBvdXIgdGV4dCBydW4uCkBA
IC0xNTcsOSArMTU3LDYgQEAgaW50IElubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9v
bCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoLAogICAgIGJvb2wgbHRyRWxs
aXBzaXNXaXRoaW5Cb3ggPSBsdHIgJiYgKGVsbGlwc2lzWCA8IG1feCArIG1fd2lkdGgpOwogICAg
IGJvb2wgcnRsRWxsaXBzaXNXaXRoaW5Cb3ggPSAhbHRyICYmIChlbGxpcHNpc1ggPiBtX3gpOwog
ICAgIGlmIChsdHJFbGxpcHNpc1dpdGhpbkJveCB8fCBydGxFbGxpcHNpc1dpdGhpbkJveCkgewot
ICAgICAgICBpZiAoKGx0ciAmJiBkaXJlY3Rpb24oKSA9PSBSVEwpIHx8ICghbHRyICYmIGRpcmVj
dGlvbigpID09IExUUikpCi0gICAgICAgICAgICByZXR1cm4gLTE7IC8vIEZJWE1FOiBTdXBwb3J0
IGNhc2VzIGluIHdoaWNoIHRoZSBsYXN0IHJ1bidzIGRpcmVjdGlvbmFsaXR5IGRpZmZlcnMgZnJv
bSB0aGUgY29udGV4dC4KLQogICAgICAgICBmb3VuZEJveCA9IHRydWU7CiAKICAgICAgICAgaW50
IG9mZnNldCA9IG9mZnNldEZvclBvc2l0aW9uKGVsbGlwc2lzWCwgZmFsc2UpOwpAQCAtMTcyLDMy
ICsxNjksNDQgQEAgaW50IElubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIs
IGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoLAogCiAgICAgICAgIC8vIFNldCB0aGUg
dHJ1bmNhdGlvbiBpbmRleCBvbiB0aGUgdGV4dCBydW4uICBUaGUgZWxsaXBzaXMgbmVlZHMgdG8g
YmUgcGxhY2VkIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgdmlzaWJsZSBjaGFyYWN0ZXIuCiAgICAgICAg
IG1fdHJ1bmNhdGlvbiA9IG9mZnNldDsKLSAgICAgICAgaWYgKGx0cikKLSAgICAgICAgICAgIHJl
dHVybiBtX3ggKyB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPndpZHRoKG1fc3RhcnQsIG9mZnNl
dCwgdGV4dFBvcygpLCBtX2ZpcnN0TGluZSk7CisgICAgICAgIGludCBlbGxpcHNpc0NoYXJPZmZz
ZXQgPSBvZmZzZXQ7CisgICAgICAgIGJvb2wgZWxsaXBzaXNPblJpZ2h0T2ZCb3ggPSBsdHI7CisK
KyAgICAgICAgLy8gSWYgdGhlIGRpcmVjdGlvbiBvZiB0aGUgdGV4dCBydW4gaXMgZGlmZmVyZW50
IGZyb20gdGhlIGNvbnRleHQncyBkaXJlY3Rpb25hbGl0eSwgdGhlbiBmbGlwIHRoZSBzaWRlIG9m
IHRoZQorICAgICAgICAvLyBib3ggdGhhdCB0aGUgZWxsaXBzaXMgaXMgb24uCisgICAgICAgIGJv
b2wgdHJ1bmNhdGlvbkluT3Bwb3NpdGVEaXJlY3Rpb24gPSAobHRyICYmIGRpcmVjdGlvbigpID09
IFJUTCkgfHwgKCFsdHIgJiYgZGlyZWN0aW9uKCkgPT0gTFRSKTsKKyAgICAgICAgaWYgKHRydW5j
YXRpb25Jbk9wcG9zaXRlRGlyZWN0aW9uKSB7CisgICAgICAgICAgICBlbGxpcHNpc09uUmlnaHRP
ZkJveCA9ICFlbGxpcHNpc09uUmlnaHRPZkJveDsKKyAgICAgICAgICAgIGVsbGlwc2lzQ2hhck9m
ZnNldCA9IG1fdHJ1bmNhdGlvbiAtIDE7CisgICAgICAgICAgICBtX3RydW5jYXRpb24gKz0gMTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmIChlbGxpcHNpc09uUmlnaHRPZkJveCkKKyAgICAgICAg
ICAgIHJldHVybiBtX3ggKyB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPndpZHRoKG1fc3RhcnQs
IGVsbGlwc2lzQ2hhck9mZnNldCwgdGV4dFBvcygpLCBtX2ZpcnN0TGluZSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJldHVybiBtX3ggKyAobV93aWR0aCAtIHRvUmVuZGVyVGV4dChyZW5k
ZXJlcigpKS0+d2lkdGgobV9zdGFydCwgb2Zmc2V0LCB0ZXh0UG9zKCksIG1fZmlyc3RMaW5lKSkg
LSBlbGxpcHNpc1dpZHRoOworICAgICAgICAgICAgcmV0dXJuIG1feCArIChtX3dpZHRoIC0gdG9S
ZW5kZXJUZXh0KHJlbmRlcmVyKCkpLT53aWR0aChtX3N0YXJ0LCBlbGxpcHNpc0NoYXJPZmZzZXQs
IHRleHRQb3MoKSwgbV9maXJzdExpbmUpKSAtIGVsbGlwc2lzV2lkdGg7CiAgICAgfQogICAgIHJl
dHVybiAtMTsKIH0KIAotQ29sb3IgY29ycmVjdGVkVGV4dENvbG9yKENvbG9yIHRleHRDb2xvciwg
Q29sb3IgYmFja2dyb3VuZENvbG9yKSAKK0NvbG9yIGNvcnJlY3RlZFRleHRDb2xvcihDb2xvciB0
ZXh0Q29sb3IsIENvbG9yIGJhY2tncm91bmRDb2xvcikKIHsKICAgICAvLyBBZGp1c3QgdGhlIHRl
eHQgY29sb3IgaWYgaXQgaXMgdG9vIGNsb3NlIHRvIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLAogICAg
IC8vIGJ5IGRhcmtlbmluZyBvciBsaWdodGVuaW5nIGl0IHRvIG1vdmUgaXQgZnVydGhlciBhd2F5
LgotICAgIAorCiAgICAgaW50IGQgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3IsIGJhY2tn
cm91bmRDb2xvcik7Ci0gICAgLy8gc2VtaS1hcmJpdHJhcmlseSBjaG9zZSA2NTAyNSAoMjU1XjIp
IHZhbHVlIGhlcmUgYWZ0ZXIgYSBmZXcgdGVzdHM7IAorICAgIC8vIHNlbWktYXJiaXRyYXJpbHkg
Y2hvc2UgNjUwMjUgKDI1NV4yKSB2YWx1ZSBoZXJlIGFmdGVyIGEgZmV3IHRlc3RzOwogICAgIGlm
IChkID4gNjUwMjUpIHsKICAgICAgICAgcmV0dXJuIHRleHRDb2xvcjsKICAgICB9Ci0gICAgCisK
ICAgICBpbnQgZGlzdGFuY2VGcm9tV2hpdGUgPSBkaWZmZXJlbmNlU3F1YXJlZCh0ZXh0Q29sb3Is
IENvbG9yOjp3aGl0ZSk7CiAgICAgaW50IGRpc3RhbmNlRnJvbUJsYWNrID0gZGlmZmVyZW5jZVNx
dWFyZWQodGV4dENvbG9yLCBDb2xvcjo6YmxhY2spOwogCiAgICAgaWYgKGRpc3RhbmNlRnJvbVdo
aXRlIDwgZGlzdGFuY2VGcm9tQmxhY2spIHsKICAgICAgICAgcmV0dXJuIHRleHRDb2xvci5kYXJr
KCk7CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJuIHRleHRDb2xvci5saWdodCgpOwogfQogCkBA
IC0yMTEsNyArMjIwLDcgQEAgdm9pZCB1cGRhdGVHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBDb2xvciYgZmlsbENvbG9yLCBjb24KICAgICAgICAgICAgIG1v
ZGUgPSBuZXdNb2RlOwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKG1vZGUgJiBj
VGV4dEZpbGwgJiYgZmlsbENvbG9yICE9IGNvbnRleHQtPmZpbGxDb2xvcigpKQogICAgICAgICBj
b250ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yKTsKIApAQCAtMjkwLDcgKzI5OSw3IEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5m
bywgaW50IHR4LCBpbnQgdHkpCiAgICAgaWYgKGlzTGluZUJyZWFrKCkgfHwgIXJlbmRlcmVyKCkt
PnNob3VsZFBhaW50V2l0aGluUm9vdChwYWludEluZm8pIHx8IHJlbmRlcmVyKCktPnN0eWxlKCkt
PnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8CiAgICAgICAgIG1fdHJ1bmNhdGlvbiA9PSBjRnVs
bFRydW5jYXRpb24gfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lKQogICAg
ICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQocGFpbnRJbmZvLnBoYXNlICE9IFBhaW50
UGhhc2VTZWxmT3V0bGluZSAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUNoaWxkT3V0
bGluZXMpOwogCiAgICAgaW50IHhQb3MgPSB0eCArIG1feCAtIHBhcmVudCgpLT5tYXhIb3Jpem9u
dGFsVmlzdWFsT3ZlcmZsb3coKTsKQEAgLTI5OSw3ICszMDgsNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50
IHR5KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIGlzUHJpbnRpbmcgPSB0ZXh0UmVuZGVy
ZXIoKS0+ZG9jdW1lbnQoKS0+cHJpbnRpbmcoKTsKLSAgICAKKwogICAgIC8vIERldGVybWluZSB3
aGV0aGVyIG9yIG5vdCB3ZSdyZSBzZWxlY3RlZC4KICAgICBib29sIGhhdmVTZWxlY3Rpb24gPSAh
aXNQcmludGluZyAmJiBwYWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZVRleHRDbGlwICYmIHNl
bGVjdGlvblN0YXRlKCkgIT0gUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25Ob25lOwogICAgIGlmICgh
aGF2ZVNlbGVjdGlvbiAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikK
QEAgLTQyNiw4ICs0MzUsOSBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFJlbmRlck9iamVj
dDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogCiAgICAgICAgIHVwZGF0
ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCB0ZXh0RmlsbENvbG9yLCB0ZXh0U3Ryb2tlQ29sb3Is
IHRleHRTdHJva2VXaWR0aCk7CiAgICAgICAgIGlmICghcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0
ZWx5IHx8IGVQb3MgPD0gc1BvcykgewotICAgICAgICAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJp
Z2h0LXRvLWxlZnQgdGV4dCBjb3JyZWN0bHkuCi0gICAgICAgICAgICBwYWludFRleHRXaXRoU2hh
ZG93cyhjb250ZXh0LCBmb250LCB0ZXh0UnVuLCAwLCBtX3RydW5jYXRpb24gPT0gY05vVHJ1bmNh
dGlvbiA/IG1fbGVuIDogbV90cnVuY2F0aW9uLCB0ZXh0T3JpZ2luLCBtX3ggKyB0eCwgbV95ICsg
dHksIHdpZHRoKCksIGhlaWdodCgpLCB0ZXh0U2hhZG93LCB0ZXh0U3Ryb2tlV2lkdGggPiAwKTsK
KyAgICAgICAgICAgIGludCB0cnVuY2F0aW9uU1BvcywgdHJ1bmNhdGlvbkVQb3M7CisgICAgICAg
ICAgICBnZXRUcnVuY2F0aW9uU3RhcnRFbmQodHJ1bmNhdGlvblNQb3MsIHRydW5jYXRpb25FUG9z
KTsKKyAgICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIGZvbnQsIHRleHRS
dW4sIHRydW5jYXRpb25TUG9zLCB0cnVuY2F0aW9uRVBvcywgdGV4dE9yaWdpbiwgbV94ICsgdHgs
IG1feSArIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSwgdGV4dFNoYWRvdywgdGV4dFN0cm9rZVdpZHRo
ID4gMCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
Y29udGV4dCwgZm9udCwgdGV4dFJ1biwgZVBvcywgc1BvcywgdGV4dE9yaWdpbiwgbV94ICsgdHgs
IG1feSArIHR5LCB3aWR0aCgpLCBoZWlnaHQoKSwgdGV4dFNoYWRvdywgdGV4dFN0cm9rZVdpZHRo
ID4gMCk7CiAKQEAgLTQ2NSwxMCArNDc1LDEwIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQo
UmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAKICAg
ICAgICAgICAgICAgICBpZiAodW5kZXJsaW5lLmVuZE9mZnNldCA8PSBzdGFydCgpKQogICAgICAg
ICAgICAgICAgICAgICAvLyB1bmRlcmxpbmUgaXMgY29tcGxldGVseSBiZWZvcmUgdGhpcyBydW4u
ICBUaGlzIG1pZ2h0IGJlIGFuIHVuZGVybGluZSB0aGF0IHNpdHMKLSAgICAgICAgICAgICAgICAg
ICAgLy8gYmVmb3JlIHRoZSBmaXJzdCBydW4gd2UgZHJhdywgb3IgdW5kZXJsaW5lcyB0aGF0IHdl
cmUgd2l0aGluIHJ1bnMgd2Ugc2tpcHBlZCAKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVmb3Jl
IHRoZSBmaXJzdCBydW4gd2UgZHJhdywgb3IgdW5kZXJsaW5lcyB0aGF0IHdlcmUgd2l0aGluIHJ1
bnMgd2Ugc2tpcHBlZAogICAgICAgICAgICAgICAgICAgICAvLyBkdWUgdG8gdHJ1bmNhdGlvbi4K
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAg
ICAgICAgICAgICBpZiAodW5kZXJsaW5lLnN0YXJ0T2Zmc2V0IDw9IGVuZCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIHVuZGVybGluZSBpbnRlcnNlY3RzIHRoaXMgcnVuLiAgUGFpbnQgaXQu
CiAgICAgICAgICAgICAgICAgICAgIHBhaW50Q29tcG9zaXRpb25VbmRlcmxpbmUoY29udGV4dCwg
dHgsIHR5LCB1bmRlcmxpbmUpOwpAQCAtNDgzLDYgKzQ5MywyMiBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50
IHR5KQogICAgIH0KIH0KIAordm9pZCBJbmxpbmVUZXh0Qm94OjpnZXRUcnVuY2F0aW9uU3RhcnRF
bmQoaW50JiB0cnVuY2F0aW9uU1BvcywgaW50JiB0cnVuY2F0aW9uRVBvcykKK3sKKyAgdHJ1bmNh
dGlvblNQb3MgPSAwOworICB0cnVuY2F0aW9uRVBvcyA9IG1fbGVuOworCisgIC8vIE5vIHRydW5j
YXRpb24gLT4gbm90aGluZyB0byBkby4KKyAgaWYgKG1fdHJ1bmNhdGlvbiA9PSBjTm9UcnVuY2F0
aW9uIHx8IG1fdHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24pCisgICAgICByZXR1cm47CisK
KyAgaWYgKHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLT5kaXJlY3Rpb24o
KSAhPSBkaXJlY3Rpb24oKSkKKyAgICAgIC8vIGUuZy4gRW5nbGlzaCB0ZXh0IHRydW5jYXRlZCBp
biBhbiBSVEwgY29udGV4dDogSGVsbG8gLT4gLi4ubG8KKyAgICAgIHRydW5jYXRpb25TUG9zID0g
bV90cnVuY2F0aW9uOworICBlbHNlCisgICAgICB0cnVuY2F0aW9uRVBvcyA9IG1fdHJ1bmNhdGlv
bjsKK30KKwogdm9pZCBJbmxpbmVUZXh0Qm94OjpzZWxlY3Rpb25TdGFydEVuZChpbnQmIHNQb3Ms
IGludCYgZVBvcykKIHsKICAgICBpbnQgc3RhcnRQb3MsIGVuZFBvczsKQEAgLTUyNCw3ICs1NTAs
NyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50U2VsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgaW50IHR4LCBpbnQgdHksIFJlbgogICAgIGludCB5ID0gc2VsZWN0aW9uVG9wKCk7
CiAgICAgaW50IGggPSBzZWxlY3Rpb25IZWlnaHQoKTsKICAgICBjb250ZXh0LT5jbGlwKEludFJl
Y3QobV94ICsgdHgsIHkgKyB0eSwgbV93aWR0aCwgaCkpOwotICAgIGNvbnRleHQtPmRyYXdIaWdo
bGlnaHRGb3JUZXh0KGZvbnQsIFRleHRSdW4odGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hhcmFj
dGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwgdGV4
dFBvcygpLCBtX3RvQWRkLCAKKyAgICBjb250ZXh0LT5kcmF3SGlnaGxpZ2h0Rm9yVGV4dChmb250
LCBUZXh0UnVuKHRleHRSZW5kZXJlcigpLT50ZXh0KCktPmNoYXJhY3RlcnMoKSArIG1fc3RhcnQs
IG1fbGVuLCB0ZXh0UmVuZGVyZXIoKS0+YWxsb3dUYWJzKCksIHRleHRQb3MoKSwgbV90b0FkZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24oKSA9PSBSVEwsIG1f
ZGlyT3ZlcnJpZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChtX3ggKyB0eCwgeSArIHR5KSwgaCwgYywgc1Bv
cywgZVBvcyk7CiAgICAgY29udGV4dC0+cmVzdG9yZSgpOwpAQCAtNTQyLDcgKzU2OCw3IEBAIHZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnRDb21wb3NpdGlvbkJhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBpbnQgdHgsCiAgICAgY29udGV4dC0+c2F2ZSgpOwogCiAgICAgQ29sb3Ig
YyA9IENvbG9yKDIyNSwgMjIxLCA4NSk7Ci0gICAgCisKICAgICB1cGRhdGVHcmFwaGljc0NvbnRl
eHQoY29udGV4dCwgYywgYywgMCk7IC8vIERvbid0IGRyYXcgdGV4dCBhdCBhbGwhCiAKICAgICBp
bnQgeSA9IHNlbGVjdGlvblRvcCgpOwpAQCAtNTgzLDE1ICs2MDksMjQgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBpbnQgdHgs
IGludCB0eSwgaW4KIAogICAgIGludCB3aWR0aCA9IG1fd2lkdGg7CiAgICAgaWYgKG1fdHJ1bmNh
dGlvbiAhPSBjTm9UcnVuY2F0aW9uKSB7Ci0gICAgICAgIHdpZHRoID0gdG9SZW5kZXJUZXh0KHJl
bmRlcmVyKCkpLT53aWR0aChtX3N0YXJ0LCBtX3RydW5jYXRpb24sIHRleHRQb3MoKSwgbV9maXJz
dExpbmUpOwotICAgICAgICBpZiAoZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgICAgICBpbnQgdHJ1
bmNhdGlvblNQb3MsIHRydW5jYXRpb25FUG9zOworICAgICAgICBnZXRUcnVuY2F0aW9uU3RhcnRF
bmQodHJ1bmNhdGlvblNQb3MsIHRydW5jYXRpb25FUG9zKTsKKworICAgICAgICBUZXh0RGlyZWN0
aW9uIGNvbnRleHRfZGlyZWN0aW9uID0gcmVuZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCktPnN0
eWxlKCktPmRpcmVjdGlvbigpOworCisgICAgICAgIGlmIChjb250ZXh0X2RpcmVjdGlvbiAhPSBk
aXJlY3Rpb24oKSAmJiBjb250ZXh0X2RpcmVjdGlvbiA9PSBMVFIpCisgICAgICAgICAgICB0cnVu
Y2F0aW9uU1BvcyA9IG1pbih0cnVuY2F0aW9uU1BvcyArIDEsIHRydW5jYXRpb25FUG9zKTsKKwor
ICAgICAgICB3aWR0aCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+d2lkdGgobV9zdGFydCAr
IHRydW5jYXRpb25TUG9zLCB0cnVuY2F0aW9uRVBvcywgdGV4dFBvcygpLCBtX2ZpcnN0TGluZSk7
CisKKyAgICAgICAgaWYgKGNvbnRleHRfZGlyZWN0aW9uID09IFJUTCkKICAgICAgICAgICAgIHR4
ICs9IChtX3dpZHRoIC0gd2lkdGgpOwogICAgIH0KLSAgICAKKwogICAgIC8vIEdldCB0aGUgdGV4
dCBkZWNvcmF0aW9uIGNvbG9ycy4KICAgICBDb2xvciB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5l
dGhyb3VnaDsKICAgICByZW5kZXJlcigpLT5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhkZWNvLCB1
bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCwgdHJ1ZSk7Ci0gICAgCisKICAgICAvLyBV
c2UgYSBzcGVjaWFsIGZ1bmN0aW9uIGZvciB1bmRlcmxpbmVzIHRvIGdldCB0aGUgcG9zaXRpb25p
bmcgZXhhY3RseSByaWdodC4KICAgICBib29sIGlzUHJpbnRpbmcgPSB0ZXh0UmVuZGVyZXIoKS0+
ZG9jdW1lbnQoKS0+cHJpbnRpbmcoKTsKICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Mo
MS4wZik7IC8vIEZJWE1FOiBXZSBzaG91bGQgaW1wcm92ZSB0aGlzIHJ1bGUgYW5kIG5vdCBhbHdh
eXMganVzdCBhc3N1bWUgMS4KQEAgLTYyMCw3ICs2NTUsNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGludCB0eCwgaW50IHR5
LCBpbgogICAgIH0KIAogICAgIGJvb2wgc2V0U2hhZG93ID0gZmFsc2U7Ci0gICAgCisKICAgICBk
byB7CiAgICAgICAgIGlmIChzaGFkb3cpIHsKICAgICAgICAgICAgIGlmICghc2hhZG93LT5uZXh0
KSB7CkBAIC02ODEsNyArNzE2LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludFNwZWxsaW5n
T3JHcmFtbWFyTWFya2VyKEdyYXBoaWNzQ29udGV4dCogcHQsIGludCB0eCwgaW4KICAgICBpZiAo
IW1hcmtlclNwYW5zV2hvbGVCb3ggfHwgZ3JhbW1hcikgewogICAgICAgICBpbnQgc3RhcnRQb3Np
dGlvbiA9IG1heDxpbnQ+KG1hcmtlci5zdGFydE9mZnNldCAtIG1fc3RhcnQsIDApOwogICAgICAg
ICBpbnQgZW5kUG9zaXRpb24gPSBtaW48aW50PihtYXJrZXIuZW5kT2Zmc2V0IC0gbV9zdGFydCwg
bV9sZW4pOwotICAgICAgICAKKwogICAgICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5j
YXRpb24pCiAgICAgICAgICAgICBlbmRQb3NpdGlvbiA9IG1pbjxpbnQ+KGVuZFBvc2l0aW9uLCBt
X3RydW5jYXRpb24pOwogCkBAIC02ODksMTcgKzcyNCwxNyBAQCB2b2lkIElubGluZVRleHRCb3g6
OnBhaW50U3BlbGxpbmdPckdyYW1tYXJNYXJrZXIoR3JhcGhpY3NDb250ZXh0KiBwdCwgaW50IHR4
LCBpbgogICAgICAgICBJbnRQb2ludCBzdGFydFBvaW50KHR4ICsgbV94LCB0eSArIHNlbGVjdGlv
blRvcCgpKTsKICAgICAgICAgVGV4dFJ1biBydW4odGV4dFJlbmRlcmVyKCktPnRleHQoKS0+Y2hh
cmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxvd1RhYnMoKSwg
dGV4dFBvcygpLCBtX3RvQWRkLCBkaXJlY3Rpb24oKSA9PSBSVEwsIG1fZGlyT3ZlcnJpZGUgfHwg
c3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsKICAgICAgICAgaW50IGggPSBzZWxlY3Rpb25IZWln
aHQoKTsKLSAgICAgICAgCisKICAgICAgICAgSW50UmVjdCBtYXJrZXJSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChmb250LnNlbGVjdGlvblJlY3RGb3JUZXh0KHJ1biwgc3RhcnRQb2ludCwgaCwgc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pKTsKICAgICAgICAgc3RhcnQgPSBtYXJrZXJSZWN0Lngo
KSAtIHN0YXJ0UG9pbnQueCgpOwogICAgICAgICB3aWR0aCA9IG1hcmtlclJlY3Qud2lkdGgoKTsK
LSAgICAgICAgCisKICAgICAgICAgLy8gU3RvcmUgcmVuZGVyZWQgcmVjdHMgZm9yIGJhZCBncmFt
bWFyIG1hcmtlcnMsIHNvIHdlIGNhbiBoaXQtdGVzdCBhZ2FpbnN0IGl0IGVsc2V3aGVyZSBpbiBv
cmRlciB0bwogICAgICAgICAvLyBkaXNwbGF5IGEgdG9vbFRpcC4gV2UgZG9uJ3QgZG8gdGhpcyBm
b3IgbWlzc3BlbGxpbmcgbWFya2Vycy4KICAgICAgICAgaWYgKGdyYW1tYXIpCiAgICAgICAgICAg
ICByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5zZXRSZW5kZXJlZFJlY3RGb3JNYXJrZXIocmVuZGVy
ZXIoKS0+bm9kZSgpLCBtYXJrZXIsIG1hcmtlclJlY3QpOwogICAgIH0KLSAgICAKKwogICAgIC8v
IElNUE9SVEFOVDogVGhlIG1pc3NwZWxsaW5nIHVuZGVybGluZSBpcyBub3QgY29uc2lkZXJlZCB3
aGVuIGNhbGN1bGF0aW5nIHRoZSB0ZXh0IGJvdW5kcywgc28gd2UgaGF2ZSB0bwogICAgIC8vIG1h
a2Ugc3VyZSB0byBmaXQgd2l0aGluIHRob3NlIGJvdW5kcy4gIFRoaXMgbWVhbnMgdGhlIHRvcCBw
aXhlbChzKSBvZiB0aGUgdW5kZXJsaW5lIHdpbGwgb3ZlcmxhcCB0aGUKICAgICAvLyBib3R0b20g
cGl4ZWwocykgb2YgdGhlIGdseXBocyBpbiBzbWFsbGVyIGZvbnQgc2l6ZXMuICBUaGUgYWx0ZXJu
YXRpdmVzIGFyZSB0byBpbmNyZWFzZSB0aGUgbGluZSBzcGFjaW5nIChiYWQhISkKQEAgLTcyNiwx
NiArNzYxLDE2IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0TWF0Y2hNYXJrZXIoR3Jh
cGhpY3NDb250ZXh0KiBwdCwgaW50IHR4LCBpbnQgdHksIERvCiAgICAvLyB0aGUgc2FtZSB3b3Jk
IHRoZXJlIGFyZSBubyBwaWVjZXMgc3RpY2tpbmcgb3V0LgogICAgIGludCB5ID0gc2VsZWN0aW9u
VG9wKCk7CiAgICAgaW50IGggPSBzZWxlY3Rpb25IZWlnaHQoKTsKLSAgICAKKwogICAgIGludCBz
UG9zID0gbWF4KG1hcmtlci5zdGFydE9mZnNldCAtIG1fc3RhcnQsICh1bnNpZ25lZCkwKTsKLSAg
ICBpbnQgZVBvcyA9IG1pbihtYXJrZXIuZW5kT2Zmc2V0IC0gbV9zdGFydCwgKHVuc2lnbmVkKW1f
bGVuKTsgICAgCisgICAgaW50IGVQb3MgPSBtaW4obWFya2VyLmVuZE9mZnNldCAtIG1fc3RhcnQs
ICh1bnNpZ25lZCltX2xlbik7CiAgICAgVGV4dFJ1biBydW4odGV4dFJlbmRlcmVyKCktPnRleHQo
KS0+Y2hhcmFjdGVycygpICsgbV9zdGFydCwgbV9sZW4sIHRleHRSZW5kZXJlcigpLT5hbGxvd1Rh
YnMoKSwgdGV4dFBvcygpLCBtX3RvQWRkLCBkaXJlY3Rpb24oKSA9PSBSVEwsIG1fZGlyT3ZlcnJp
ZGUgfHwgc3R5bGUtPnZpc3VhbGx5T3JkZXJlZCgpKTsKICAgICBJbnRQb2ludCBzdGFydFBvaW50
ID0gSW50UG9pbnQobV94ICsgdHgsIHkgKyB0eSk7Ci0gICAgCisKICAgICAvLyBBbHdheXMgY29t
cHV0ZSBhbmQgc3RvcmUgdGhlIHJlY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWFya2VyCiAgICAg
SW50UmVjdCBtYXJrZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmb250LnNlbGVjdGlvblJlY3RG
b3JUZXh0KHJ1biwgc3RhcnRQb2ludCwgaCwgc1BvcywgZVBvcykpOwogICAgIHJlbmRlcmVyKCkt
PmRvY3VtZW50KCktPnNldFJlbmRlcmVkUmVjdEZvck1hcmtlcihyZW5kZXJlcigpLT5ub2RlKCks
IG1hcmtlciwgbWFya2VyUmVjdCk7Ci0gICAgIAorCiAgICAgLy8gT3B0aW9uYWxseSBoaWdobGln
aHQgdGhlIHRleHQKICAgICBpZiAocmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bWFy
a2VkVGV4dE1hdGNoZXNBcmVIaWdobGlnaHRlZCgpKSB7CiAgICAgICAgIENvbG9yIGNvbG9yID0g
bWFya2VyLmFjdGl2ZU1hdGNoID8KQEAgLTc2MSw3ICs3OTYsNyBAQCB2b2lkIElubGluZVRleHRC
b3g6OnBhaW50RG9jdW1lbnRNYXJrZXJzKEdyYXBoaWNzQ29udGV4dCogcHQsIGludCB0eCwgaW50
IHR5LCBSZQogICAgIC8vIE5vdGUgZW5kKCkgcG9pbnRzIGF0IHRoZSBsYXN0IGNoYXIsIG5vdCBv
bmUgcGFzdCBpdCBsaWtlIGVuZE9mZnNldCBhbmQgcmFuZ2VzIGRvLgogICAgIGZvciAoIDsgbWFy
a2VySXQgIT0gbWFya2Vycy5lbmQoKTsgbWFya2VySXQrKykgewogICAgICAgICBEb2N1bWVudE1h
cmtlciBtYXJrZXIgPSAqbWFya2VySXQ7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFBhaW50IGVp
dGhlciB0aGUgYmFja2dyb3VuZCBtYXJrZXJzIG9yIHRoZSBmb3JlZ3JvdW5kIG1hcmtlcnMsIGJ1
dCBub3QgYm90aAogICAgICAgICBzd2l0Y2ggKG1hcmtlci50eXBlKSB7CiAgICAgICAgICAgICBj
YXNlIERvY3VtZW50TWFya2VyOjpHcmFtbWFyOgpAQCAtNzY5LDEyICs4MDQsMTIgQEAgdm9pZCBJ
bmxpbmVUZXh0Qm94OjpwYWludERvY3VtZW50TWFya2VycyhHcmFwaGljc0NvbnRleHQqIHB0LCBp
bnQgdHgsIGludCB0eSwgUmUKICAgICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZCkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgCisKICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaDoK
ICAgICAgICAgICAgICAgICBpZiAoIWJhY2tncm91bmQpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KQEAgLTc4MywxMSArODE4LDExIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREb2N1
bWVudE1hcmtlcnMoR3JhcGhpY3NDb250ZXh0KiBwdCwgaW50IHR4LCBpbnQgdHksIFJlCiAgICAg
ICAgICAgICAvLyBtYXJrZXIgaXMgY29tcGxldGVseSBiZWZvcmUgdGhpcyBydW4uICBUaGlzIG1p
Z2h0IGJlIGEgbWFya2VyIHRoYXQgc2l0cyBiZWZvcmUgdGhlCiAgICAgICAgICAgICAvLyBmaXJz
dCBydW4gd2UgZHJhdywgb3IgbWFya2VycyB0aGF0IHdlcmUgd2l0aGluIHJ1bnMgd2Ugc2tpcHBl
ZCBkdWUgdG8gdHJ1bmNhdGlvbi4KICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKKwog
ICAgICAgICBpZiAobWFya2VyLnN0YXJ0T2Zmc2V0ID4gZW5kKCkpCiAgICAgICAgICAgICAvLyBt
YXJrZXIgaXMgY29tcGxldGVseSBhZnRlciB0aGlzIHJ1biwgYmFpbC4gIEEgbGF0ZXIgcnVuIHdp
bGwgcGFpbnQgaXQuCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgCisKICAgICAgICAgLy8g
bWFya2VyIGludGVyc2VjdHMgdGhpcyBydW4uICBQYWludCBpdC4KICAgICAgICAgc3dpdGNoICht
YXJrZXIudHlwZSkgewogICAgICAgICAgICAgY2FzZSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc6
CkBAIC04MTQsNyArODQ5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9u
VW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCogY3R4LCBpbnQgdHgsIGludAogCiAgICAgaWYgKG1f
dHJ1bmNhdGlvbiA9PSBjRnVsbFRydW5jYXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAKKwog
ICAgIGludCBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAvLyBzdGFydCBvZiBsaW5lIHRvIGRy
YXcsIHJlbGF0aXZlIHRvIHR4CiAgICAgaW50IHdpZHRoID0gbV93aWR0aDsgICAgICAgICAgIC8v
IGhvdyBtdWNoIGxpbmUgdG8gZHJhdwogICAgIGJvb2wgdXNlV2hvbGVXaWR0aCA9IHRydWU7CkBA
IC04NzQsNyArOTA5LDcgQEAgaW50IElubGluZVRleHRCb3g6OnRleHRQb3MoKSBjb25zdAogewog
ICAgIGlmICh4KCkgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIAorCiAgICAgUmVu
ZGVyQmxvY2sgKmJsb2NrRWxlbWVudCA9IHJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpOwog
ICAgIHJldHVybiBkaXJlY3Rpb24oKSA9PSBSVEwgPyB4KCkgLSBibG9ja0VsZW1lbnQtPmJvcmRl
clJpZ2h0KCkgLSBibG9ja0VsZW1lbnQtPnBhZGRpbmdSaWdodCgpCiAgICAgICAgICAgICAgICAg
ICAgICAgOiB4KCkgLSBibG9ja0VsZW1lbnQtPmJvcmRlckxlZnQoKSAtIGJsb2NrRWxlbWVudC0+
cGFkZGluZ0xlZnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRC
b3guaCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCA2Njg5ZmNkLi4w
MzFjYTgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCkBAIC03Miw2ICs3Miw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEludFJlY3Qgc2VsZWN0aW9uUmVjdChpbnQgYWJzeCwgaW50IGFi
c3ksIGludCBzdGFydFBvcywgaW50IGVuZFBvcyk7CiAgICAgYm9vbCBpc1NlbGVjdGVkKGludCBz
dGFydFBvcywgaW50IGVuZFBvcykgY29uc3Q7CiAgICAgdm9pZCBzZWxlY3Rpb25TdGFydEVuZChp
bnQmIHNQb3MsIGludCYgZVBvcyk7CisgICAgdm9pZCBnZXRUcnVuY2F0aW9uU3RhcnRFbmQoaW50
JiB0cnVuY2F0aW9uU1BvcywgaW50JiB0cnVuY2F0aW9uRVBvcyk7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiwgaW50IHR4LCBpbnQg
dHkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29951</attachid>
            <date>2009-05-01 15:51:47 -0700</date>
            <delta_ts>2009-05-13 13:59:18 -0700</delta_ts>
            <desc>second try</desc>
            <filename>place_ellipsis.patch</filename>
            <type>text/plain</type>
            <size>31217</size>
            <attacher name="Jeremy Moskovich">playmobil</attacher>
            
              <data encoding="base64">Y29tbWl0IDc5NmE0NzJmMzE1OWUwMjZlZjAwOTFlMDU5NGQ1ZDU5OGVhOWVmNWUKQXV0aG9yOiBK
ZXJlbXkgTW9za292aWNoIDxqZXJlbXlAY2hyb21pdW0ub3JnPgpEYXRlOiAgIEZyaSBNYXkgMSAx
NToyMTozOCAyMDA5IC0wNzAwCgogICAgLSBJbXBsZW1lbnQgdGV4dC1vdmVyZmxvdzplbGxpcHNp
cyBmb3IgY2FzZXMgd2hlcmUgdGhlIGRpcmVjdGlvbiBvZiB0aGUgbGFzdCBydW4KICAgIAogICAg
aXMgZGlmZmVyZW50IGZyb20gdGhlIG92ZXJhbGwgZmxvdyBkaXJlY3Rpb24gLSBidWcgMjUxMzUu
CiAgICAtIE1ha2UgZGVjb3JhdGlvbiBkcmF3aW5nIGluIElubGluZUZsb3dib3ggUlRMLWF3YXJl
IC0gYnVnIDI0MjA2LgogICAgLSBTZXQgZnVsbCB0cmFuY2F0aW9uIG9uIElubGluZUJveGVzIGNv
cnJlY3RseSBpbiB0aGUgY2FzZSBvZiBSVEwgZmxvdyAtIGJ1ZyAyNDE4NgogICAgLSBBZGQgdGVz
dHMgZm9yIHRoZSBhYm92ZSArIHJlb3JkZXIvY2xlYW51cCB0ZXN0cyBmb3IgZWFzaWVyIGludGVy
cHJldGF0aW9uIG9mIG91dGNvbWUuCiAgICAtIEFkZCBzb21lIEZJWE1FIGNvbW1lbnRzIGluIHBs
YWNlcyB3aGVyZSBpdCBsb29rcyBsaWtlIHdlIG1pZ2h0IG5lZWQgc3BlY2lhbCBoYW5kaW5nIGZv
ciBSVEwuCiAgICAKICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
NDE4NgogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTM1CiAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQyMDYKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YmE4MTBkZi4uNjkwYzg5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDA5LTA1LTAxICBKZXJl
bXkgTW9za292aWNoICA8amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgYnVncyByZWxhdGlu
ZyB0byBSVEwgYW5kIHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXMuCisgICAgICAgIEFsc28gcmVmYWN0
b3IgdGhlIHJlbGV2YW50IGNvZGUgdG8gbWFrZSBpdCBhIGxpdHRsZSBjbGVhcmVyLgorCisgICAg
ICAgIFRoaXMgQ0wgZml4ZXMgMyBmdW5kYW1lbnRhbCBpc3N1ZXM6CisgICAgICAgIC0gQ29ycmVj
dHMgYmVoYXZpb3IgaWYgdGhlIHRydW5jYXRlZCBJbmxpbmVUZXh0Qm94J3MgZGlyZWN0aW9uYWxp
dHkgaXMKKyAgICAgICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgb3ZlcmFsbCBmbG93IGRpcmVjdGlv
biAtIGJ1ZyAyNTEzNS4KKyAgICAgICAgLSBNYWtlIGRlY29yYXRpb24gZHJhd2luZyBpbiBJbmxp
bmVGbG93Ym94IFJUTC1hd2FyZSAtIGJ1ZyAyNDIwNi4KKyAgICAgICAgLSBGdWxsIHRydW5jYXRp
b24gb24gSW5saW5lQm94ZXMgaW4gUlRMIGZsb3cgLSBidWcgMjQxODYKKyAgICAgICAgLSBBZGQg
dGVzdHMgZm9yIHRoZSBhYm92ZSArIHJlb3JkZXIvY2xlYW51cCB0ZXN0cyBmb3IgZWFzaWVyCisg
ICAgICAgICAgaW50ZXJwcmV0YXRpb24gb2Ygb3V0Y29tZS4KKworICAgICAgICBUaGUgY29kZSBm
b3IgcGxhY2luZyBlbGxpcHNpcyBoYXMgYmVlbiByZWZhY3RvcmVkIHRvIHVzZQorICAgICAgICBs
ZWZ0L3JpZ2h0IG5vdGF0aW9uIHJhdGhlciB0aGFuIGEgc2luZ2xlIHZhcmlhYmxlIHdob3NlIG1l
YW5pbmcKKyAgICAgICAgY291bGQgZGlmZmVyIGJhc2VkIG9uIGZsb3cgZGlyZWN0aW9uYWxpdHku
CisKKyAgICAgICAgVG8gc3VwcG9ydCBkaWZmZXJpbmcgaW5saW5lIGRpcmVjdGlvbmFsaXR5IHZz
IGZsb3cgZGlyZWN0aW9uYWxpdHksCisgICAgICAgIGRpZmZlcmVudCB2YXJpYWJsZXMgYXJlIG5v
dyB1c2VkIGluIElubGluZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3ggdG8KKyAgICAgICAgdHJh
Y2sgdGhlIHR3by4KKworICAgICAgICBUaGUgZHJhd2luZyBtb2RlIGZvciB1bmRlcmxpbmVzIGlu
IHN0YW5kYXJkcyBtb2RlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcworICAgICAgICBSVEwgdHJ1bmNh
dGlvbiBhbmQgcmVsZXZhbnQgdGVzdCB3aGVyZSBhZGRlZC4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxODYKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTM1CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDIwNgorCisgICAgICAgICogZmFzdC9jc3MvdGV4
dC1vdmVyZmxvdy1lbGxpcHNpcy1iaWRpLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Nz
L3RleHQtb3ZlcmZsb3ctZWxsaXBzaXMtc3RyaWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL3RleHQtb3ZlcmZsb3ctZWxsaXBzaXMuaHRtbDoKKwogMjAwOS0wNC0zMCAgS2V2aW4g
TWNDdWxsb3VnaCAgPGttY2N1bGxvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGVsZSBQZXRlcnNvbiBhbmQgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy90ZXh0LW92ZXJmbG93LWVsbGlwc2lzLWJpZGkuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3RleHQtb3ZlcmZsb3ctZWxsaXBzaXMtYmlkaS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMjNiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy90ZXh0LW92ZXJmbG93LWVsbGlwc2lzLWJpZGkuaHRtbApAQCAtMCwwICsx
LDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1
dGYtOCI+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorLnRlc3RCbG9jayB7CisgIGRpc3BsYXk6
YmxvY2s7CisgIG92ZXJmbG93OiBoaWRkZW47CisgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgIHdp
ZHRoOiAyMDdweDsKK30KKworLmVsbGlwc2lzIHsKKyAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CitFYWNoIGNvbnNlY3V0aXZlIHBhaXIgb2Yg
bGluZXMgc2hvdWxkIGxvb2sgZXhhY3RseSB0aGUgc2FtZSBhcGFydCBmcm9tIHRoZSB0cmFpbGlu
ZyBlbGxpcHNpcy48YnI+CitUaGUgZWxsaXBzaXMgc2hvdWxkIGFwcGVhciBvbiB0aGUgbGVmdCBm
b3IgdGhlIFJUTCBjYXNlIGFuZCBvbiB0aGUgcmlnaHQgZm9yIExUUiBjYXNlLgorCis8YnI+PGJy
PgorCitSVEwgdGV4dDoKKzxkaXYgY2xhc3M9InRlc3RCbG9jayJkaXI9cnRsPgorJiN4MjAyQjsK
K0VuZ2xpc2ggVGV4dCDXmNen16HXmCDXoteR16jXmSDXnNeT15XXktee15Ag15jXp9eh15gg16LX
kdeo15kg15zXk9eV15LXnteQCismI3gyMDJjOworPC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0Qmxv
Y2sgZWxsaXBzaXMiZGlyPXJ0bD4KKyYjeDIwMkI7CitFbmdsaXNoIFRleHQg15jXp9eh15gg16LX
kdeo15kg15zXk9eV15LXnteQINeY16fXodeYINei15HXqNeZINec15PXldeS157XkAorJiN4MjAy
YzsKKzwvZGl2PgorPGJyPgorTFRSIFRleHQKKzxkaXYgY2xhc3M9InRlc3RCbG9jayJkaXI9bHRy
Pgor157Xmdec15Qgd29yZCDXkNeX16jXqiBhbm90aGVyINeV16LXldeTIHlldCDXkNeX16oKKzwv
ZGl2PgorCis8ZGl2IGNsYXNzPSJ0ZXN0QmxvY2sgZWxsaXBzaXMiZGlyPWx0cj4KK9ee15nXnNeU
IHdvcmQg15DXl9eo16ogYW5vdGhlciDXldei15XXkyB5ZXQg15DXl9eqCis8L2Rpdj4KKworCis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LW92
ZXJmbG93LWVsbGlwc2lzLXN0cmljdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1v
dmVyZmxvdy1lbGxpcHNpcy1zdHJpY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41MTZhZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
dGV4dC1vdmVyZmxvdy1lbGxpcHNpcy1zdHJpY3QuaHRtbApAQCAtMCwwICsxLDk0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHN0eWxlPgorLnRl
c3REaXYgeworICAgIHdpZHRoOiAxODBweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgYm9yZGVy
OiAxcHggc29saWQgYmxhY2s7CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICBvdmVyZmxv
dzogaGlkZGVuOworICAgIG1hcmdpbjogMCAwIDIwcHggMDsKK30KKworLmZvcmNlcnRsIHsKKyAg
ICBkaXJlY3Rpb246IHJ0bDsKKyAgICB1bmljb2RlLWJpZGk6IGJpZGktb3ZlcnJpZGU7Cit9CisK
Ky5lbGxpcHNpcyB7CisgICAgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKworVGhpcyB0ZXN0cyBjaGVja3MgdGhhdCB0aGUgdGV4dC1vdmVyZmxv
dzplbGxpcHNpcyBwcm9wZXJ0eSBpcyBoYW5kbGVkIGNvcnJlY3RseQorZm9yIGJpZGkgdGV4dC48
YnI+PGJyPgorCitQYXNzIGlmIHRoZSBlbGxpcHNpcyBkbyBub3Qgb3ZlcmxhcCB0aGUgdGV4dCBh
bmQgdGhlIHVuZGVybGluZXMgZm9yIHRoZSBsaW5rcyBhcmUKK3BsYWNlZCB1bmRlciB0aGUgdGV4
dCBhbmQgbm90IHRoZSBlbGxpcHNpcy4KKzxicj48YnI+CisKK1JUTDoKKzxkaXYgY2xhc3M9InRl
c3REaXYgZWxsaXBzaXMiIGRpcj1ydGw+CivXm9ep15TXmNen16HXmCDXoteo15XXmiDXnteT15kg
16DXqNem15Qg15zXlNeV16HXmdejINeQ15zXmdek16HXldeqINeR16HXldejINep15XXqNeUCis8
L2Rpdj4KKworUlRMIE92ZXJyaWRlOgorPGRpdiBjbGFzcz0idGVzdERpdiBmb3JjZXJ0bCBlbGxp
cHNpcyIgZGlyPXJ0bD4KK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBh
ZGlwaXNjaW5nCis8L2Rpdj4KKworUlRMIGxpbms6Cis8ZGl2IGNsYXNzPSJ0ZXN0RGl2IGZvcmNl
cnRsIGVsbGlwc2lzIiBkaXI9cnRsPgorPGEgaHJlZj0jPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBh
bWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nPC9hPgorPC9kaXY+CisKK1JUTCB3aXRoIGx0ciBj
b250ZW50OgorPGRpdiBjbGFzcz0idGVzdERpdiBlbGxpcHNpcyIgZGlyPXJ0bD4KK0xvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nCis8L2Rpdj4KKworUlRM
IGxpbmsgd2l0aCBsdHIgY29udGVudDoKKzxkaXYgY2xhc3M9InRlc3REaXYgZWxsaXBzaXMiIGRp
cj1ydGw+Cis8YSBocmVmPSM+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVy
IGFkaXBpc2Npbmc8L2E+Cis8L2Rpdj4KKworTFRSIGxpbms6Cis8ZGl2IGNsYXNzPSJ0ZXN0RGl2
IGVsbGlwc2lzIiBkaXI9bHRyPgorPGEgaHJlZj0jPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nPC9hPgorPC9kaXY+CisKK0xUUjoKKzxkaXYgY2xhc3M9
InRlc3REaXYgZWxsaXBzaXMiIGRpcj1sdHI+CitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwg
Y29uc2VjdGV0dXIgYWRpcGlzY2luZworPC9kaXY+CisKK0xUUiB3aXRoIHJ0bCBjb250ZW50Ogor
PGRpdiBjbGFzcz0idGVzdERpdiBlbGxpcHNpcyIgZGlyPWx0cj4KK9eb16nXlNeY16fXodeYINei
16jXldeaINee15PXmSDXoNeo16bXlCDXnNeU15XXodeZ16Mg15DXnNeZ16TXodeV16og15HXodeV
16Mg16nXldeo15QKKzwvZGl2PgorCitMVFIgd2l0aCBmb3JjZWQgcnRsIGNvbnRlbnQ6Cis8ZGl2
IGNsYXNzPSJ0ZXN0RGl2IGVsbGlwc2lzIiBkaXI9bHRyPgorPHNwYW4gY2xhc3M9Zm9yY2VydGwg
ZGlyPXJ0bD4KK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNj
aW5nCis8L3NwYW4+Cis8L2Rpdj4KKworTFRSIGxpbmsgd2l0aCBydGwgY29udGVudDoKKzxkaXYg
Y2xhc3M9InRlc3REaXYgZWxsaXBzaXMiIGRpcj1sdHI+Cis8YSBocmVmPSM+CivXm9ep15TXmNen
16HXmCDXoteo15XXmiDXnteT15kg16DXqNem15Qg15zXlNeV16HXmdejINeQ15zXmdek16HXldeq
INeR16HXldejINep15XXqNeUCis8L2E+Cis8L2Rpdj4KKworTFRSIGxpbmsgd2l0aCBmb3JjZWQg
cnRsIGNvbnRlbnQ6Cis8ZGl2IGNsYXNzPSJ0ZXN0RGl2IGVsbGlwc2lzIiBkaXI9bHRyPgorPGEg
aHJlZj0jPgorPHNwYW4gY2xhc3M9Zm9yY2VydGwgZGlyPXJ0bD4KK0xvcmVtIGlwc3VtIGRvbG9y
IHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nCis8L3NwYW4+Cis8L2E+Cis8L2Rpdj4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy90ZXh0LW92ZXJmbG93LWVsbGlwc2lzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90
ZXh0LW92ZXJmbG93LWVsbGlwc2lzLmh0bWwKaW5kZXggMjEzY2FjNS4uNTc3MGVkNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1vdmVyZmxvdy1lbGxpcHNpcy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQtb3ZlcmZsb3ctZWxsaXBzaXMuaHRtbApAQCAt
MTAsNTEgKzEwLDg1IEBACiAgICAgbWFyZ2luOiAwIDAgMjBweCAwOwogfQogCi0ucnRsIHsKLSAg
ICBkaXJlY3Rpb246IHJ0bDsKLX0KLQogLmZvcmNlcnRsIHsKICAgICBkaXJlY3Rpb246IHJ0bDsK
ICAgICB1bmljb2RlLWJpZGk6IGJpZGktb3ZlcnJpZGU7CiB9CiAKLS5lbGxpcHNlcyB7CisuZWxs
aXBzaXMgewogICAgIHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7CiB9CiA8L3N0eWxlPgogPC9oZWFk
PgogPGJvZHk+CiAKLVRoaXMgdGVzdHMgY2hlY2tzIHRoYXQgdGhlIHRleHQtb3ZlcmZsb3c6ZWxs
aXBzZXMgcHJvcGVydHkgaXMgaGFuZGxlZCBjb3JyZWN0bHkKK1RoaXMgdGVzdHMgY2hlY2tzIHRo
YXQgdGhlIHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXMgcHJvcGVydHkgaXMgaGFuZGxlZCBjb3JyZWN0
bHkKIGZvciBiaWRpIHRleHQuPGJyPjxicj4KIAotUGFzcyBpZiB0aGUgZWxsaXBzZXMgZG8gbm90
IG92ZXJsYXAgdGhlIHRleHQgYW5kIHRoZSB1bmRlcmxpbmVzIGZvciB0aGUgbGlua3MgYXJlCi1w
bGFjZWQgdW5kZXIgdGhlIHRleHQgYW5kIG5vdCB0aGUgZWxsaXBzZXMuCitQYXNzIGlmIHRoZSBl
bGxpcHNpcyBkbyBub3Qgb3ZlcmxhcCB0aGUgdGV4dCBhbmQgdGhlIHVuZGVybGluZXMgZm9yIHRo
ZSBsaW5rcyBhcmUKK3BsYWNlZCB1bmRlciB0aGUgdGV4dCBhbmQgbm90IHRoZSBlbGxpcHNpcy4K
IDxicj48YnI+CiAKLUxUUjoKLTxkaXYgY2xhc3M9InRlc3REaXYgZWxsaXBzZXMiPgotTG9yZW0g
aXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcKLTwvZGl2PgotCiBS
VEw6Ci08ZGl2IGNsYXNzPSJ0ZXN0RGl2IHJ0bCBlbGxpcHNlcyI+Cis8ZGl2IGNsYXNzPSJ0ZXN0
RGl2IGVsbGlwc2lzIiBkaXI9cnRsPgog15vXqdeU15jXp9eh15gg16LXqNeV15og157Xk9eZINeg
16jXpteUINec15TXldeh15nXoyDXkNec15nXpNeh15XXqiDXkdeh15XXoyDXqdeV16jXlAogPC9k
aXY+CiAKIFJUTCBPdmVycmlkZToKLTxkaXYgY2xhc3M9InRlc3REaXYgZm9yY2VydGwgZWxsaXBz
ZXMiPgorPGRpdiBjbGFzcz0idGVzdERpdiBmb3JjZXJ0bCBlbGxpcHNpcyIgZGlyPXJ0bD4KIExv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nCiA8L2Rpdj4K
IAorUlRMIGxpbms6Cis8ZGl2IGNsYXNzPSJ0ZXN0RGl2IGZvcmNlcnRsIGVsbGlwc2lzIiBkaXI9
cnRsPgorPGEgaHJlZj0jPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBh
ZGlwaXNjaW5nPC9hPgorPC9kaXY+CisKK1JUTCB3aXRoIGx0ciBjb250ZW50OgorPGRpdiBjbGFz
cz0idGVzdERpdiBlbGxpcHNpcyIgZGlyPXJ0bD4KK0xvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0
LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nCis8L2Rpdj4KIAotTFRSIGxpbms6Ci08ZGl2IGNsYXNz
PSJ0ZXN0RGl2IGVsbGlwc2VzIj4KK1JUTCBsaW5rIHdpdGggbHRyIGNvbnRlbnQ6Cis8ZGl2IGNs
YXNzPSJ0ZXN0RGl2IGVsbGlwc2lzIiBkaXI9cnRsPgogPGEgaHJlZj0jPkxvcmVtIGlwc3VtIGRv
bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nPC9hPgogPC9kaXY+CiAKLVJUTCBs
aW5rOgotPGRpdiBjbGFzcz0idGVzdERpdiBmb3JjZXJ0bCBlbGxpcHNlcyI+CitMVFIgbGluazoK
KzxkaXYgY2xhc3M9InRlc3REaXYgZWxsaXBzaXMiIGRpcj1sdHI+CiA8YSBocmVmPSM+TG9yZW0g
aXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Npbmc8L2E+CiA8L2Rpdj4K
KworTFRSOgorPGRpdiBjbGFzcz0idGVzdERpdiBlbGxpcHNpcyIgZGlyPWx0cj4KK0xvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nCis8L2Rpdj4KKworTFRS
IHdpdGggcnRsIGNvbnRlbnQ6Cis8ZGl2IGNsYXNzPSJ0ZXN0RGl2IGVsbGlwc2lzIiBkaXI9bHRy
Pgor15vXqdeU15jXp9eh15gg16LXqNeV15og157Xk9eZINeg16jXpteUINec15TXldeh15nXoyDX
kNec15nXpNeh15XXqiDXkdeh15XXoyDXqdeV16jXlAorPC9kaXY+CisKKworTFRSIHdpdGggZm9y
Y2VkIHJ0bCBjb250ZW50OgorPGRpdiBjbGFzcz0idGVzdERpdiBlbGxpcHNpcyIgZGlyPWx0cj4K
KzxzcGFuIGNsYXNzPWZvcmNlcnRsIGRpcj1ydGw+CitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZworPC9zcGFuPgorPC9kaXY+CisKK0xUUiBsaW5rIHdp
dGggcnRsIGNvbnRlbnQ6Cis8ZGl2IGNsYXNzPSJ0ZXN0RGl2IGVsbGlwc2lzIiBkaXI9bHRyPgor
PGEgaHJlZj0jPgor15vXqdeU15jXp9eh15gg16LXqNeV15og157Xk9eZINeg16jXpteUINec15TX
ldeh15nXoyDXkNec15nXpNeh15XXqiDXkdeh15XXoyDXqdeV16jXlAorPC9hPgorPC9kaXY+CisK
K0xUUiBsaW5rIHdpdGggZm9yY2VkIHJ0bCBjb250ZW50OgorPGRpdiBjbGFzcz0idGVzdERpdiBl
bGxpcHNpcyIgZGlyPWx0cj4KKzxhIGhyZWY9Iz4KKzxzcGFuIGNsYXNzPWZvcmNlcnRsIGRpcj1y
dGw+CitMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZwor
PC9zcGFuPgorPC9hPgorPC9kaXY+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MDJmZmZl
Li4yZTc4ZjE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDA5LTA1LTAxICBKZXJlbXkgTW9za292aWNoICA8
amVyZW15QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBGaXggYSBudW1iZXIgb2YgYnVncyByZWxhdGluZyB0byBSVEwgYW5kIHRl
eHQtb3ZlcmZsb3c6ZWxsaXBzaXMuCisgICAgICAgIEFsc28gcmVmYWN0b3IgdGhlIHJlbGV2YW50
IGNvZGUgdG8gbWFrZSBpdCBhIGxpdHRsZSBjbGVhcmVyLgorCisgICAgICAgIFRoaXMgQ0wgZml4
ZXMgMyBmdW5kYW1lbnRhbCBpc3N1ZXM6CisgICAgICAgIC0gQ29ycmVjdHMgYmVoYXZpb3IgaWYg
dGhlIHRydW5jYXRlZCBJbmxpbmVUZXh0Qm94J3MgZGlyZWN0aW9uYWxpdHkgaXMKKyAgICAgICAg
ICBkaWZmZXJlbnQgZnJvbSB0aGUgb3ZlcmFsbCBmbG93IGRpcmVjdGlvbiAtIGJ1ZyAyNTEzNS4K
KyAgICAgICAgLSBNYWtlIGRlY29yYXRpb24gZHJhd2luZyBpbiBJbmxpbmVGbG93Ym94IFJUTC1h
d2FyZSAtIGJ1ZyAyNDIwNi4KKyAgICAgICAgLSBGdWxsIHRydW5jYXRpb24gb24gSW5saW5lQm94
ZXMgaW4gUlRMIGZsb3cgLSBidWcgMjQxODYKKyAgICAgICAgLSBBZGQgdGVzdHMgZm9yIHRoZSBh
Ym92ZSArIHJlb3JkZXIvY2xlYW51cCB0ZXN0cyBmb3IgZWFzaWVyCisgICAgICAgICAgaW50ZXJw
cmV0YXRpb24gb2Ygb3V0Y29tZS4KKworICAgICAgICBUaGUgY29kZSBmb3IgcGxhY2luZyBlbGxp
cHNpcyBoYXMgYmVlbiByZWZhY3RvcmVkIHRvIHVzZQorICAgICAgICBsZWZ0L3JpZ2h0IG5vdGF0
aW9uIHJhdGhlciB0aGFuIGEgc2luZ2xlIHZhcmlhYmxlIHdob3NlIG1lYW5pbmcKKyAgICAgICAg
Y291bGQgZGlmZmVyIGJhc2VkIG9uIGZsb3cgZGlyZWN0aW9uYWxpdHkuCisKKyAgICAgICAgVG8g
c3VwcG9ydCBkaWZmZXJpbmcgaW5saW5lIGRpcmVjdGlvbmFsaXR5IHZzIGZsb3cgZGlyZWN0aW9u
YWxpdHksCisgICAgICAgIGRpZmZlcmVudCB2YXJpYWJsZXMgYXJlIG5vdyB1c2VkIGluIElubGlu
ZVRleHRCb3g6OnBsYWNlRWxsaXBzaXNCb3ggdG8KKyAgICAgICAgdHJhY2sgdGhlIHR3by4KKwor
ICAgICAgICBUaGUgZHJhd2luZyBtb2RlIGZvciB1bmRlcmxpbmVzIGluIHN0YW5kYXJkcyBtb2Rl
IG5vdyBjb3JyZWN0bHkgaGFuZGxlcworICAgICAgICBSVEwgdHJ1bmNhdGlvbiBhbmQgcmVsZXZh
bnQgdGVzdCB3aGVyZSBhZGRlZC4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQxODYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI1MTM1CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNDIwNgorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy90ZXh0LW92ZXJmbG93
LWVsbGlwc2lzLWJpZGkuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvdGV4dC1vdmVyZmxv
dy1lbGxpcHNpcy1zdHJpY3QuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXNCb3gpOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5l
Rmxvd0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWludFRleHRE
ZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUVsbGlw
c2lzQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRl
eHRCb3g6OnBsYWNlRWxsaXBzaXNCb3gpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJv
eDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94OjpsYXlvdXRWZXJ0aWNhbEJveCk6CisgICAgICAgICogcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6cGxh
Y2VFbGxpcHNpcyk6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpwbGFjZUVsbGlw
c2lzQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9iaWRpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVj
a0xpbmVzRm9yVGV4dE92ZXJmbG93KToKKwogMjAwOS0wNS0wMSAgRGltaXRyaSBHbGF6a292ICA8
ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUJveC5jcHAKaW5kZXggOWJiMzY5Mi4uMmQ5NTZhOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwCkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBJbmxpbmVCb3g6OmNhbkFj
Y29tbW9kYXRlRWxsaXBzaXMoYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dp
ZHQKICAgICByZXR1cm4gIShib3hSZWN0LmludGVyc2VjdHMoZWxsaXBzaXNSZWN0KSk7CiB9CiAK
LWludCBJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCwgaW50LCBpbnQsIGJvb2wmKQor
aW50IElubGluZUJveDo6cGxhY2VFbGxpcHNpc0JveChib29sLCBpbnQsIGludCwgaW50LCBib29s
JikKIHsKICAgICAvLyBVc2UgLTEgdG8gbWVhbiAid2UgZGlkbid0IHNldCB0aGUgcG9zaXRpb24u
IgogICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJv
eC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKaW5kZXggNTEwODBjYi4uZWM4YzM0
MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKQEAgLTIyNCw3ICsyMjQsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJs
b2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpOwotICAgIHZpcnR1YWwgaW50IHBsYWNlRWxsaXBz
aXNCb3goYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoLCBib29sJik7
CisgICAgLy8gdmlzaWJsZUxlZnRFZGdlLCB2aXNpYmxlUmlnaHRFZGdlIGFyZSBpbiB0aGUgcGFy
ZW50J3MgY29vcmRpbmF0ZSBzeXN0ZW0uCisgICAgdmlydHVhbCBpbnQgcGxhY2VFbGxpcHNpc0Jv
eChib29sIGx0ciwgaW50IHZpc2libGVMZWZ0RWRnZSwgaW50IHZpc2libGVSaWdodEVkZ2UsIGlu
dCBlbGxpcHNpc1dpZHRoLCBib29sJik7CiAKICAgICB2b2lkIHNldEhhc0JhZFBhcmVudCgpOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDllMTg3MTMuLjA0MzJhNGMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC04ODUsMTggKzg4NSwzNyBAQCB2b2lk
IElubGluZUZsb3dCb3g6OnBhaW50VGV4dERlY29yYXRpb25zKFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBwYWludEluZm8sIGludAogICAgICAgICBpbnQgdyA9IG1fd2lkdGggLSAoYm9yZGVyTGVm
dCgpICsgcGFkZGluZ0xlZnQoKSArIGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSk7CiAg
ICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RMaW5lID0gcm9vdCgpOwogICAgICAgICBpZiAocm9v
dExpbmUtPmVsbGlwc2lzQm94KCkpIHsKLSAgICAgICAgICAgIGludCBlbGxpcHNpc1ggPSByb290
TGluZS0+ZWxsaXBzaXNCb3goKS0+eCgpOworICAgICAgICAgICAgaW50IGVsbGlwc2lzWCA9IG1f
eCArIHJvb3RMaW5lLT5lbGxpcHNpc0JveCgpLT54KCk7CiAgICAgICAgICAgICBpbnQgZWxsaXBz
aXNXaWR0aCA9IHJvb3RMaW5lLT5lbGxpcHNpc0JveCgpLT53aWR0aCgpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2lsbCBuZWVkIHRvIHdvcmsgd2l0aCBSVEwKKyAgICAg
ICAgICAgIGJvb2wgbHRyID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gTFRS
OwogICAgICAgICAgICAgaWYgKHJvb3RMaW5lID09IHRoaXMpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoeCArIHcgPj0gZWxsaXBzaXNYICsgZWxsaXBzaXNXaWR0aCkKLSAgICAgICAgICAgICAgICAg
ICAgdyAtPSAoeCArIHcgLSBlbGxpcHNpc1ggLSBlbGxpcHNpc1dpZHRoKTsKKyAgICAgICAgICAg
ICAgICAvLyBUcmltIHcgYW5kIHggc28gdGhhdCB0aGUgdW5kZXJsaW5lIGlzbid0IGRyYXduIHVu
ZGVybmVhdGggdGhlIGVsbGlwc2lzLgorICAgICAgICAgICAgICAgIC8vIGx0cjogaXMgb3VyIHJp
Z2h0IGVkZ2UgZmFydGhlciByaWdodCB0aGFuIHRoZSByaWdodCBlZGdlIG9mIHRoZSBlbGxpcHNp
cy4KKyAgICAgICAgICAgICAgICAvLyBydGw6IGlzIHRoZSBsZWZ0IGVkZ2Ugb2Ygb3VyIGJveCBm
YXJ0aGVyIGxlZnQgdGhhbiB0aGUgbGVmdCBlZGdlIG9mIHRoZSBlbGxpcHNpcy4KKyAgICAgICAg
ICAgICAgICBib29sIGx0clRydW5jYXRpb24gPSBsdHIgJiYgKHggKyB3ID49IGVsbGlwc2lzWCAr
IGVsbGlwc2lzV2lkdGgpOworICAgICAgICAgICAgICAgIGJvb2wgcnRsVHJ1bmNhdGlvbiA9ICFs
dHIgJiYgKHggPD0gZWxsaXBzaXNYICsgZWxsaXBzaXNXaWR0aCk7CisgICAgICAgICAgICAgICAg
aWYgKGx0clRydW5jYXRpb24pCisgICAgICAgICAgICAgICAgICAgIHcgLT0gKHggKyB3KSAtIChl
bGxpcHNpc1ggKyBlbGxpcHNpc1dpZHRoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChydGxU
cnVuY2F0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBkeCA9IG1feCAtICgoZWxsaXBz
aXNYIC0gbV94KSArIGVsbGlwc2lzV2lkdGgpOworICAgICAgICAgICAgICAgICAgICB0eCAtPSBk
eDsKKyAgICAgICAgICAgICAgICAgICAgdyArPSBkeDsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmICh4ID49IGVsbGlwc2lzWCkKKyAg
ICAgICAgICAgICAgICBib29sIGx0clBhc3RFbGxpcHNpcyA9IGx0ciAmJiB4ID49IGVsbGlwc2lz
WDsKKyAgICAgICAgICAgICAgICBib29sIHJ0bFBhc3RFbGxpcHNpcyA9ICFsdHIgJiYgKHggKyB3
KSA8PSAoZWxsaXBzaXNYICsgZWxsaXBzaXNXaWR0aCk7CisgICAgICAgICAgICAgICAgaWYgKGx0
clBhc3RFbGxpcHNpcyB8fCBydGxQYXN0RWxsaXBzaXMpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICBpZiAoeCArIHcgPj0gZWxsaXBzaXNYKQorCisgICAgICAg
ICAgICAgICAgYm9vbCBsdHJUcnVuY2F0aW9uID0gbHRyICYmIHggKyB3ID49IGVsbGlwc2lzWDsK
KyAgICAgICAgICAgICAgICBib29sIHJ0bFRydW5jYXRpb24gPSAhbHRyICYmIHggPD0gZWxsaXBz
aXNYOworICAgICAgICAgICAgICAgIGlmIChsdHJUcnVuY2F0aW9uKQogICAgICAgICAgICAgICAg
ICAgICB3IC09ICh4ICsgdyAtIGVsbGlwc2lzWCk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
cnRsVHJ1bmNhdGlvbikgeworICAgICAgICAgICAgICAgICAgICBpbnQgZHggPSBtX3ggLSAoKGVs
bGlwc2lzWCAtIG1feCkgKyBlbGxpcHNpc1dpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgdHgg
LT0gZHg7CisgICAgICAgICAgICAgICAgICAgIHcgKz0gZHg7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEwMjIsMTMgKzEwNDEsMzIgQEAgYm9vbCBJ
bmxpbmVGbG93Qm94OjpjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBpbnQgYmxvY2tF
ZGdlLCBpbnQgZWxsaXBzaXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW50IElubGluZUZsb3dC
b3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNp
c1dpZHRoLCBib29sJiBmb3VuZEJveCkKK2ludCBJbmxpbmVGbG93Qm94OjpwbGFjZUVsbGlwc2lz
Qm94KGJvb2wgbHRyLCBpbnQgYmxvY2tMZWZ0RWRnZSwgaW50IGJsb2NrUmlnaHRFZGdlLCBpbnQg
ZWxsaXBzaXNXaWR0aCwgYm9vbCYgZm91bmRCb3gpCiB7CiAgICAgaW50IHJlc3VsdCA9IC0xOwot
ICAgIGZvciAoSW5saW5lQm94ICpib3ggPSBmaXJzdENoaWxkKCk7IGJveDsgYm94ID0gYm94LT5u
ZXh0T25MaW5lKCkpIHsKLSAgICAgICAgaW50IGN1cnJSZXN1bHQgPSBib3gtPnBsYWNlRWxsaXBz
aXNCb3gobHRyLCBibG9ja0VkZ2UsIGVsbGlwc2lzV2lkdGgsIGZvdW5kQm94KTsKKyAgICAvLyBX
ZSBpdGVyYXRlIG92ZXIgYWxsIGNoaWxkcmVuLCB0aGUgZm91bmRCb3ggdmFyaWFibGUgdGVsbHMg
dXMgd2hlbiB3ZSd2ZSBmb3VuZCB0aGUKKyAgICAvLyBib3ggY29udGFpbmluZyB0aGUgZWxsaXBz
aXMuICBBbGwgYm94ZXMgYWZ0ZXIgdGhhdCBvbmUgaW4gdGhlIGZsb3cgYXJlIGhpZGRlbi4KKyAg
ICAvLyBJZiBvdXIgZmxvdyBpcyBsdHIgdGhlbiBpdGVyYXRlIG92ZXIgdGhlIGJveGVzIGZyb20g
bGVmdCB0byByaWdodCwgb3RoZXJ3aXNlIGl0ZXJhdGUKKyAgICAvLyBmcm9tIHJpZ2h0IHRvIGxl
ZnQuIFZhcnlpbmcgdGhlIG9yZGVyIGFsbG93cyB1cyB0byBjb3JyZWN0bHkgaGlkZSB0aGUgYm94
ZXMgZm9sbG93aW5nIHRoZSBlbGxpcHNpcy4KKyAgICBJbmxpbmVCb3ggKmJveCA9IGx0ciA/IGZp
cnN0Q2hpbGQoKSA6IGxhc3RDaGlsZCgpOworCisgICAgLy8gTk9URTogdGhlc2Ugd2lsbCBjcm9z
cyBhZnRlciBmb3VuZEJveCA9IHRydWUuCisgICAgaW50IHZpc2libGVMZWZ0RWRnZSA9IGJsb2Nr
TGVmdEVkZ2U7CisgICAgaW50IHZpc2libGVSaWdodEVkZ2UgPSBibG9ja1JpZ2h0RWRnZTsKKwor
ICAgIHdoaWxlKGJveCkgeworICAgICAgICBpbnQgY3VyclJlc3VsdCA9IGJveC0+cGxhY2VFbGxp
cHNpc0JveChsdHIsIHZpc2libGVMZWZ0RWRnZSwgdmlzaWJsZVJpZ2h0RWRnZSwgZWxsaXBzaXNX
aWR0aCwgZm91bmRCb3gpOwogICAgICAgICBpZiAoY3VyclJlc3VsdCAhPSAtMSAmJiByZXN1bHQg
PT0gLTEpCiAgICAgICAgICAgICByZXN1bHQgPSBjdXJyUmVzdWx0OworCisgICAgICAgIGlmIChs
dHIpIHsKKyAgICAgICAgICAgIHZpc2libGVMZWZ0RWRnZSArPSBib3gtPndpZHRoKCk7CisgICAg
ICAgICAgICBib3ggPSBib3gtPm5leHRPbkxpbmUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHZpc2libGVSaWdodEVkZ2UgLT0gYm94LT53aWR0aCgpOworICAgICAg
ICAgICAgYm94ID0gYm94LT5wcmV2T25MaW5lKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guaCBiL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAppbmRleCBlZWRjNDViLi4y
NDYyZWJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCkBAIC0xNDEsNyArMTQxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rp
b25TdGF0ZSgpOwogCiAgICAgdmlydHVhbCBib29sIGNhbkFjY29tbW9kYXRlRWxsaXBzaXMoYm9v
bCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoKTsKLSAgICB2aXJ0dWFsIGlu
dCBwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQgZWxsaXBzaXNX
aWR0aCwgYm9vbCYpOworICAgIHZpcnR1YWwgaW50IHBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIs
IGludCBibG9ja0xlZnRFZGdlLCBpbnQgYmxvY2tSaWdodEVkZ2UsIGludCBlbGxpcHNpc1dpZHRo
LCBib29sJik7CiAKICAgICBib29sIGhhc1RleHRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzVGV4dENoaWxkcmVuOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXgg
MDk1MmQ4Ny4uY2M3YzJkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTEy
OCwyMCArMTI4LDIxIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6YXR0YWNoTGluZSgpCiAgICAgdG9S
ZW5kZXJUZXh0KHJlbmRlcmVyKCkpLT5hdHRhY2hUZXh0Qm94KHRoaXMpOwogfQogCi1pbnQgSW5s
aW5lVGV4dEJveDo6cGxhY2VFbGxpcHNpc0JveChib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50
IGVsbGlwc2lzV2lkdGgsIGJvb2wmIGZvdW5kQm94KQoraW50IElubGluZVRleHRCb3g6OnBsYWNl
RWxsaXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGludCB2aXNpYmxlTGVmdEVkZ2UsIGludCB2aXNp
YmxlUmlnaHRFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCwgYm9vbCYgZm91bmRCb3gpCiB7CiAgICAg
aWYgKGZvdW5kQm94KSB7CiAgICAgICAgIG1fdHJ1bmNhdGlvbiA9IGNGdWxsVHJ1bmNhdGlvbjsK
ICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGludCBlbGxpcHNpc1ggPSBsdHIgPyBi
bG9ja0VkZ2UgLSBlbGxpcHNpc1dpZHRoIDogYmxvY2tFZGdlICsgZWxsaXBzaXNXaWR0aDsKKyAg
ICAvLyBGb3IgTFRSIHRoaXMgaXMgdGhlIGxlZnQgZWRnZSBvZiB0aGUgYm94LCBmb3IgUlRMLCB0
aGUgcmlnaHQgZWRnZSBpbiBwYXJlbnQgY29vcmRpbmF0ZXMuCisgICAgaW50IGVsbGlwc2lzWCA9
IGZsb3dJc0xUUiA/IHZpc2libGVSaWdodEVkZ2UgLSBlbGxpcHNpc1dpZHRoIDogdmlzaWJsZUxl
ZnRFZGdlICsgZWxsaXBzaXNXaWR0aDsKICAgICAKICAgICAvLyBDcml0ZXJpYSBmb3IgZnVsbCB0
cnVuY2F0aW9uOgogICAgIC8vIExUUjogdGhlIGxlZnQgZWRnZSBvZiB0aGUgZWxsaXBzaXMgaXMg
dG8gdGhlIGxlZnQgb2Ygb3VyIHRleHQgcnVuLgogICAgIC8vIFJUTDogdGhlIHJpZ2h0IGVkZ2Ug
b2YgdGhlIGVsbGlwc2lzIGlzIHRvIHRoZSByaWdodCBvZiBvdXIgdGV4dCBydW4uCi0gICAgYm9v
bCBsdHJGdWxsVHJ1bmNhdGlvbiA9IGx0ciAmJiBlbGxpcHNpc1ggPD0gbV94OwotICAgIGJvb2wg
cnRsRnVsbFRydW5jYXRpb24gPSAhbHRyICYmIGVsbGlwc2lzWCA+PSAobV94ICsgbV93aWR0aCk7
CisgICAgYm9vbCBsdHJGdWxsVHJ1bmNhdGlvbiA9IGZsb3dJc0xUUiAmJiBlbGxpcHNpc1ggPD0g
bV94OworICAgIGJvb2wgcnRsRnVsbFRydW5jYXRpb24gPSAhZmxvd0lzTFRSICYmIGVsbGlwc2lz
WCA+PSAobV94ICsgbV93aWR0aCk7CiAgICAgaWYgKGx0ckZ1bGxUcnVuY2F0aW9uIHx8IHJ0bEZ1
bGxUcnVuY2F0aW9uKSB7CiAgICAgICAgIC8vIFRvbyBmYXIuICBKdXN0IHNldCBmdWxsIHRydW5j
YXRpb24sIGJ1dCByZXR1cm4gLTEgYW5kIGxldCB0aGUgZWxsaXBzaXMganVzdCBiZSBwbGFjZWQg
YXQgdGhlIGVkZ2Ugb2YgdGhlIGJveC4KICAgICAgICAgbV90cnVuY2F0aW9uID0gY0Z1bGxUcnVu
Y2F0aW9uOwpAQCAtMTQ5LDE0ICsxNTAsMjEgQEAgaW50IElubGluZVRleHRCb3g6OnBsYWNlRWxs
aXBzaXNCb3goYm9vbCBsdHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoLAogICAg
ICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgYm9vbCBsdHJFbGxpcHNpc1dpdGhpbkJveCA9
IGx0ciAmJiAoZWxsaXBzaXNYIDwgbV94ICsgbV93aWR0aCk7Ci0gICAgYm9vbCBydGxFbGxpcHNp
c1dpdGhpbkJveCA9ICFsdHIgJiYgKGVsbGlwc2lzWCA+IG1feCk7CisgICAgYm9vbCBsdHJFbGxp
cHNpc1dpdGhpbkJveCA9IGZsb3dJc0xUUiAmJiAoZWxsaXBzaXNYIDwgbV94ICsgbV93aWR0aCk7
CisgICAgYm9vbCBydGxFbGxpcHNpc1dpdGhpbkJveCA9ICFmbG93SXNMVFIgJiYgKGVsbGlwc2lz
WCA+IG1feCk7CiAgICAgaWYgKGx0ckVsbGlwc2lzV2l0aGluQm94IHx8IHJ0bEVsbGlwc2lzV2l0
aGluQm94KSB7Ci0gICAgICAgIGlmICgobHRyICYmIGRpcmVjdGlvbigpID09IFJUTCkgfHwgKCFs
dHIgJiYgZGlyZWN0aW9uKCkgPT0gTFRSKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsgLy8gRklY
TUU6IFN1cHBvcnQgY2FzZXMgaW4gd2hpY2ggdGhlIGxhc3QgcnVuJ3MgZGlyZWN0aW9uYWxpdHkg
ZGlmZmVycyBmcm9tIHRoZSBjb250ZXh0LgotCiAgICAgICAgIGZvdW5kQm94ID0gdHJ1ZTsKIAor
ICAgICAgICAvLyBUaGUgaW5saW5lIGJveCBtYXkgaGF2ZSBkaWZmZXJlbnQgZGlyZWN0aW9uYWxp
dHkgdGhhbiBpdCdzIHBhcmVudC4gIFNpbmNlIHRydW5jYXRpb24KKyAgICAgICAgLy8gYmVoYXZp
b3IgZGVwZW5kcyBib3RoIG9uIGJvdGggdGhlIHBhcmVudCBhbmQgdGhlIGlubGluZSBibG9jaydz
IGRpcmVjdGlvbmFsaXR5LCB3ZQorICAgICAgICAvLyBtdXN0IGtlZXAgdHJhY2sgb2YgdGhlc2Ug
c2VwYXJhdGVseS4KKyAgICAgICAgYm9vbCBsdHIgPSBkaXJlY3Rpb24oKSA9PSBMVFI7CisgICAg
ICAgIGlmIChsdHIgIT0gZmxvd0lzTFRSKSB7CisgICAgICAgICAgLy8gV2lkdGggaW4gcGl4ZWxz
IG9mIHRoZSB2aXNpYmxlIHBvcnRpb24gb2YgdGhlIGJveCwgZXhjbHVkaW5nIHRoZSBlbGxpcHNp
cy4KKyAgICAgICAgICBpbnQgdmlzaWJsZUJveFdpZHRoID0gdmlzaWJsZVJpZ2h0RWRnZSAtIHZp
c2libGVMZWZ0RWRnZSAgLSBlbGxpcHNpc1dpZHRoOworICAgICAgICAgIGVsbGlwc2lzWCA9IGx0
ciA/IG1feCArIHZpc2libGVCb3hXaWR0aCA6IG1feCArIG1fd2lkdGggLSB2aXNpYmxlQm94V2lk
dGg7CisgICAgICAgIH0KKwogICAgICAgICBpbnQgb2Zmc2V0ID0gb2Zmc2V0Rm9yUG9zaXRpb24o
ZWxsaXBzaXNYLCBmYWxzZSk7CiAgICAgICAgIGlmIChvZmZzZXQgPT0gMCkgewogICAgICAgICAg
ICAgLy8gTm8gY2hhcmFjdGVycyBzaG91bGQgYmUgcmVuZGVyZWQuICBTZXQgb3Vyc2VsdmVzIHRv
IGZ1bGwgdHJ1bmNhdGlvbiBhbmQgcGxhY2UgdGhlIGVsbGlwc2lzIGF0IHRoZSBtaW4gb2Ygb3Vy
IHN0YXJ0CkBAIC0xNjUsMTIgKzE3MywyMiBAQCBpbnQgSW5saW5lVGV4dEJveDo6cGxhY2VFbGxp
cHNpc0JveChib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgsCiAgICAg
ICAgICAgICByZXR1cm4gbWluKGVsbGlwc2lzWCwgbV94KTsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIFNldCB0aGUgdHJ1bmNhdGlvbiBpbmRleCBvbiB0aGUgdGV4dCBydW4uICBUaGUgZWxsaXBz
aXMgbmVlZHMgdG8gYmUgcGxhY2VkIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgdmlzaWJsZSBjaGFyYWN0
ZXIuCisgICAgICAgIC8vIFNldCB0aGUgdHJ1bmNhdGlvbiBpbmRleCBvbiB0aGUgdGV4dCBydW4u
CiAgICAgICAgIG1fdHJ1bmNhdGlvbiA9IG9mZnNldDsKLSAgICAgICAgaWYgKGx0cikKLSAgICAg
ICAgICAgIHJldHVybiBtX3ggKyB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPndpZHRoKG1fc3Rh
cnQsIG9mZnNldCwgdGV4dFBvcygpLCBtX2ZpcnN0TGluZSk7CisKKyAgICAgICAgLy8gSWYgd2Ug
Z290IGhlcmUgdGhhdCBtZWFucyB0aGF0IHdlIHdlcmUgb25seSBwYXJ0aWFsbHkgdHJ1bmNhdGVk
IGFuZCB3ZSBuZWVkIHRvIHJldHVybiB0aGUgcGl4ZWwgb2Zmc2V0IGF0IHdoaWNoCisgICAgICAg
IC8vIHRvIHBsYWNlIHRoZSBlbGxpcHNpcy4KKyAgICAgICAgaW50IHdpZHRoT2ZWaXNpYmxlVGV4
dCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+d2lkdGgobV9zdGFydCwgb2Zmc2V0LCB0ZXh0
UG9zKCksIG1fZmlyc3RMaW5lKTsKKworICAgICAgICAvLyBUaGUgZWxsaXBzaXMgbmVlZHMgdG8g
YmUgcGxhY2VkIGp1c3QgYWZ0ZXIgdGhlIGxhc3QgdmlzaWJsZSBjaGFyYWN0ZXIuCisgICAgICAg
IC8vIFdoZXJlICJhZnRlciIgaXMgZGVmaW5lZCBieSB0aGUgZmxvdyBkaXJlY3Rpb25hbGl0eSwg
bm90IHRoZSBpbmxpbmUKKyAgICAgICAgLy8gYm94IGRpcmVjdGlvbmFsaXR5LgorICAgICAgICAv
LyBlLmcuIEluIHRoZSBjYXNlIG9mIGFuIExUUiBpbmxpbmUgYm94IHRydW5jYXRlZCBpbiBhbiBS
VEwgZmxvdyB0aGVuIHdlIGNhbgorICAgICAgICAvLyBoYXZlIGEgc2l0dWF0aW9uIHN1Y2ggYXMg
fEhlbGxvfCAtPiB8Li4uSGV8CisgICAgICAgIGlmIChmbG93SXNMVFIpCisgICAgICAgICAgICBy
ZXR1cm4gbV94ICsgd2lkdGhPZlZpc2libGVUZXh0OwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXR1cm4gbV94ICsgKG1fd2lkdGggLSB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPndpZHRo
KG1fc3RhcnQsIG9mZnNldCwgdGV4dFBvcygpLCBtX2ZpcnN0TGluZSkpIC0gZWxsaXBzaXNXaWR0
aDsKKyAgICAgICAgICAgIHJldHVybiAobV94ICsgbV93aWR0aCkgLSB3aWR0aE9mVmlzaWJsZVRl
eHQgLSBlbGxpcHNpc1dpZHRoOwogICAgIH0KICAgICByZXR1cm4gLTE7CiB9CkBAIC0yODUsNyAr
MzAzLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICBpZiAoaXNMaW5lQnJlYWsoKSB8fCAh
cmVuZGVyZXIoKS0+c2hvdWxkUGFpbnRXaXRoaW5Sb290KHBhaW50SW5mbykgfHwgcmVuZGVyZXIo
KS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUgfHwKICAgICAgICAgbV90cnVuY2F0
aW9uID09IGNGdWxsVHJ1bmNhdGlvbiB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91
dGxpbmUpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEFTU0VSVChwYWludEluZm8ucGhh
c2UgIT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lICYmIHBhaW50SW5mby5waGFzZSAhPSBQYWludFBo
YXNlQ2hpbGRPdXRsaW5lcyk7CiAKICAgICBpbnQgeFBvcyA9IHR4ICsgbV94IC0gcGFyZW50KCkt
Pm1heEhvcml6b250YWxWaXN1YWxPdmVyZmxvdygpOwpAQCAtMzAxLDYgKzMxOSwyNCBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8s
IGludCB0eCwgaW50IHR5KQogICAgICAgICAvLyBXaGVuIG9ubHkgcGFpbnRpbmcgdGhlIHNlbGVj
dGlvbiwgZG9uJ3QgYm90aGVyIHRvIHBhaW50IGlmIHRoZXJlIGlzIG5vbmUuCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmIChtX3RydW5jYXRpb24gIT0gY05vVHJ1bmNhdGlvbikgeworICAgICAg
ICBUZXh0RGlyZWN0aW9uIGZsb3dEaXJlY3Rpb24gPSByZW5kZXJlcigpLT5jb250YWluaW5nQmxv
Y2soKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCk7CisgICAgICAgIGlmIChmbG93RGlyZWN0aW9uICE9
IGRpcmVjdGlvbigpKSB7CisgICAgICAgICAgICAvLyBNYWtlIHRoZSB2aXNpYmxlIGZyYWdtZW50
IG9mIHRleHQgaHVnIHRoZSBlZGdlIGNsb3Nlc3QgdG8gdGhlIHJlc3Qgb2YgdGhlIHJ1biBieSBt
b3ZpbmcgdGhlIG9yaWdpbgorICAgICAgICAgICAgLy8gYXQgd2hpY2ggd2Ugc3RhcnQgZHJhd2lu
ZyB0ZXh0LgorICAgICAgICAgICAgLy8gZS5nLiBJbiB0aGUgY2FzZSBvZiBMVFIgdGV4dCB0cnVu
Y2F0ZWQgaW4gYW4gUlRMIENvbnRleHQsIHRoZSBjb3JyZWN0IGJlaGF2aW9yIGlzOgorICAgICAg
ICAgICAgLy8gfEhlbGxvfENCQXwgLT4gfC4uLkhlfENCQXwKKyAgICAgICAgICAgIC8vIEluIG9y
ZGVyIHRvIGRyYXcgdGhlIGZyYWdtZW50ICJIZSIgYWxpZ25lZCB0byB0aGUgcmlnaHQgZWRnZSBv
ZiBpdCdzIGJveCwgd2UgbmVlZCB0byBzdGFydCBkcmF3aW5nCisgICAgICAgICAgICAvLyBmYXJ0
aGVyIHRvIHRoZSByaWdodC4KKyAgICAgICAgICAgIC8vIE5PVEU6IFdlYktpdCdzIGJlaGF2aW9y
IGRpZmZlcnMgZnJvbSB0aGF0IG9mIElFIHdoaWNoIGFwcGVhcnMgdG8ganVzdCBvdmVybGF5IHRo
ZSBlbGxpcHNpcyBvbiB0b3Agb2YgdGhlCisgICAgICAgICAgICAvLyB0cnVuY2F0ZWQgc3RyaW5n
IGkuZS4gIHxIZWxsb3xDQkF8IC0+IHwuLi5sb3xDQkF8CisgICAgICAgICAgICBpbnQgd2lkdGhP
ZlZpc2libGVUZXh0ID0gdG9SZW5kZXJUZXh0KHJlbmRlcmVyKCkpLT53aWR0aChtX3N0YXJ0LCBt
X3RydW5jYXRpb24sIHRleHRQb3MoKSwgbV9maXJzdExpbmUpOworICAgICAgICAgICAgaW50IHdp
ZHRoT2ZIaWRkZW5UZXh0ID0gbV93aWR0aCAtIHdpZHRoT2ZWaXNpYmxlVGV4dDsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGUgaGl0IHRlc3RpbmcgbG9naWMgYWxzbyBuZWVkcyB0byB0YWtlIHRo
aXMgdHJhbnNsYXRpb24gaW50IGFjY291bnQuCisgICAgICAgICAgICB0eCArPSBkaXJlY3Rpb24o
KSA9PSBMVFIgPyB3aWR0aE9mSGlkZGVuVGV4dCA6IC13aWR0aE9mSGlkZGVuVGV4dDsKKyAgICAg
ICAgfQorICAgIH0KKwogICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5j
b250ZXh0OwogCiAgICAgLy8gRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHdlIGhhdmUgY29tcG9z
aXRpb24gdW5kZXJsaW5lcyB0byBkcmF3LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4
IDJmZTIzMmUuLjU1ZDc1YWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTg4LDcg
Kzg4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhclRydW5j
YXRpb24oKSB7IG1fdHJ1bmNhdGlvbiA9IGNOb1RydW5jYXRpb247IH0KLSAgICB2aXJ0dWFsIGlu
dCBwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBpbnQgYmxvY2tFZGdlLCBpbnQgZWxsaXBzaXNX
aWR0aCwgYm9vbCYgZm91bmRCb3gpOworICAgIHZpcnR1YWwgaW50IHBsYWNlRWxsaXBzaXNCb3go
Ym9vbCBmbG93SXNMVFIsIGludCB2aXNpYmxlTGVmdEVkZ2UsIGludCB2aXNpYmxlUmlnaHRFZGdl
LCBpbnQgZWxsaXBzaXNXaWR0aCwgYm9vbCYgZm91bmRCb3gpOwogCiBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzTGluZUJyZWFrKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4
aWJsZUJveC5jcHAKaW5kZXggZjBkNTYwNi4uMWRjZWYzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmNwcApAQCAtNzcxLDE1ICs3NzEsMTkgQEAgdm9pZCBSZW5kZXJGbGV4
aWJsZUJveDo6bGF5b3V0VmVydGljYWxCb3goYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAoZGVzdEJsb2NrLT5z
dHlsZSgpLT5kaXJlY3Rpb24oKSAhPSBMVFIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgIGludCBsdHIgPSB0cnVlOwogCi0gICAgICAgICAgICAgICAgaW50
IGJsb2NrRWRnZSA9IGRlc3RCbG9jay0+cmlnaHRPZmZzZXQobGFzdFZpc2libGVMaW5lLT55KCks
IGZhbHNlKTsKLSAgICAgICAgICAgICAgICBpZiAoIWxhc3RWaXNpYmxlTGluZS0+Y2FuQWNjb21t
b2RhdGVFbGxpcHNpcyh0cnVlLCBibG9ja0VkZ2UsIAorICAgICAgICAgICAgICAgIGludCBibG9j
a1JpZ2h0RWRnZSA9IGRlc3RCbG9jay0+cmlnaHRPZmZzZXQobGFzdFZpc2libGVMaW5lLT55KCks
IGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpbnQgYmxvY2tMZWZ0RWRnZSA9IGRlc3RCbG9jay0+
bGVmdE9mZnNldChsYXN0VmlzaWJsZUxpbmUtPnkoKSwgZmFsc2UpOworCisgICAgICAgICAgICAg
ICAgaW50IGJsb2NrRWRnZSA9IGx0ciA/IGJsb2NrUmlnaHRFZGdlIDogYmxvY2tMZWZ0RWRnZTsK
KyAgICAgICAgICAgICAgICBpZiAoIWxhc3RWaXNpYmxlTGluZS0+Y2FuQWNjb21tb2RhdGVFbGxp
cHNpcyhsdHIsIGJsb2NrRWRnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0VmlzaWJsZUxpbmUtPngoKSArIGxhc3RWaXNp
YmxlTGluZS0+d2lkdGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFdpZHRoKSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIHRydW5jYXRpb24gY29kZSBr
aWNrIGluLgotICAgICAgICAgICAgICAgIGxhc3RWaXNpYmxlTGluZS0+cGxhY2VFbGxpcHNpcyhl
bGxpcHNpc0FuZFNwYWNlU3RyLCB0cnVlLCBibG9ja0VkZ2UsIHRvdGFsV2lkdGgsIGFuY2hvckJv
eCk7CisgICAgICAgICAgICAgICAgbGFzdFZpc2libGVMaW5lLT5wbGFjZUVsbGlwc2lzKGVsbGlw
c2lzQW5kU3BhY2VTdHIsIGx0ciwgYmxvY2tMZWZ0RWRnZSwgYmxvY2tSaWdodEVkZ2UsIHRvdGFs
V2lkdGgsIGFuY2hvckJveCk7CiAgICAgICAgICAgICAgICAgZGVzdEJsb2NrLT5zZXRIYXNNYXJr
dXBUcnVuY2F0aW9uKHRydWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDFmYjUxNzQuLmVkMTI1ZWUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCkBAIC05OSw3ICs5OSw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6
Y2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGxpbmVC
b3hFCiAgICAgcmV0dXJuIElubGluZUZsb3dCb3g6OmNhbkFjY29tbW9kYXRlRWxsaXBzaXMobHRy
LCBibG9ja0VkZ2UsIGVsbGlwc2lzV2lkdGgpOwogfQogCi12b2lkIFJvb3RJbmxpbmVCb3g6OnBs
YWNlRWxsaXBzaXMoY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpc1N0ciwgIGJvb2wgbHRyLCBp
bnQgYmxvY2tFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCwKK3ZvaWQgUm9vdElubGluZUJveDo6cGxh
Y2VFbGxpcHNpcyhjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGlu
dCBibG9ja0xlZnRFZGdlLCBpbnQgYmxvY2tSaWdodEVkZ2UsIGludCBlbGxpcHNpc1dpZHRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbWFya3VwQm94KQog
ewogICAgIC8vIENyZWF0ZSBhbiBlbGxpcHNpcyBib3guCkBAIC0xMTMsNyArMTEzLDggQEAgdm9p
ZCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21pY1N0cmluZyYgZWxsaXBz
aXNTdHIsICBib29sIGx0ciwgaW4KICAgICBnRWxsaXBzaXNCb3hNYXAtPmFkZCh0aGlzLCBlbGxp
cHNpc0JveCk7CiAgICAgbV9oYXNFbGxpcHNpc0JveCA9IHRydWU7CiAKLSAgICBpZiAobHRyICYm
ICh4KCkgKyB3aWR0aCgpICsgZWxsaXBzaXNXaWR0aCkgPD0gYmxvY2tFZGdlKSB7CisgICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgYW4gUlRMIHZlcnNpb24gb2YgdGhpcz8KKyAgICBpZiAobHRyICYm
ICh4KCkgKyB3aWR0aCgpICsgZWxsaXBzaXNXaWR0aCkgPD0gYmxvY2tSaWdodEVkZ2UpIHsKICAg
ICAgICAgZWxsaXBzaXNCb3gtPm1feCA9IHgoKSArIHdpZHRoKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMjIsMTQgKzEyMywxNCBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxs
aXBzaXMoY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpc1N0ciwgIGJvb2wgbHRyLCBpbgogICAg
IC8vIG9mIHRoYXQgZ2x5cGguICBNYXJrIGFsbCBvZiB0aGUgb2JqZWN0cyB0aGF0IGludGVyc2Vj
dCB0aGUgZWxsaXBzaXMgYm94IGFzIG5vdCBwYWludGluZyAoYXMgYmVpbmcKICAgICAvLyB0cnVu
Y2F0ZWQpLgogICAgIGJvb2wgZm91bmRCb3ggPSBmYWxzZTsKLSAgICBlbGxpcHNpc0JveC0+bV94
ID0gcGxhY2VFbGxpcHNpc0JveChsdHIsIGJsb2NrRWRnZSwgZWxsaXBzaXNXaWR0aCwgZm91bmRC
b3gpOworICAgIGVsbGlwc2lzQm94LT5tX3ggPSBwbGFjZUVsbGlwc2lzQm94KGx0ciwgYmxvY2tM
ZWZ0RWRnZSwgYmxvY2tSaWdodEVkZ2UsIGVsbGlwc2lzV2lkdGgsIGZvdW5kQm94KTsKIH0KIAot
aW50IFJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIsIGludCBibG9ja0Vk
Z2UsIGludCBlbGxpcHNpc1dpZHRoLCBib29sJiBmb3VuZEJveCkKK2ludCBSb290SW5saW5lQm94
OjpwbGFjZUVsbGlwc2lzQm94KGJvb2wgbHRyLCBpbnQgYmxvY2tMZWZ0RWRnZSwgaW50IGJsb2Nr
UmlnaHRFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCwgYm9vbCYgZm91bmRCb3gpCiB7Ci0gICAgaW50
IHJlc3VsdCA9IElubGluZUZsb3dCb3g6OnBsYWNlRWxsaXBzaXNCb3gobHRyLCBibG9ja0VkZ2Us
IGVsbGlwc2lzV2lkdGgsIGZvdW5kQm94KTsKKyAgICBpbnQgcmVzdWx0ID0gSW5saW5lRmxvd0Jv
eDo6cGxhY2VFbGxpcHNpc0JveChsdHIsIGJsb2NrTGVmdEVkZ2UsIGJsb2NrUmlnaHRFZGdlLCBl
bGxpcHNpc1dpZHRoLCBmb3VuZEJveCk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAg
cmVzdWx0ID0gbHRyID8gYmxvY2tFZGdlIC0gZWxsaXBzaXNXaWR0aCA6IGJsb2NrRWRnZTsKKyAg
ICAgICAgcmVzdWx0ID0gbHRyID8gYmxvY2tSaWdodEVkZ2UgLSBlbGxpcHNpc1dpZHRoIDogYmxv
Y2tMZWZ0RWRnZTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmgKaW5kZXggMWYyYTg4Yy4uNWFlYmM1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUm9vdElubGluZUJveC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aApAQCAtODUsOCArODUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGlsZFJlbW92ZWQoSW5saW5l
Qm94KiBib3gpOwogCiAgICAgYm9vbCBjYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGJvb2wgbHRyLCBp
bnQgYmxvY2tFZGdlLCBpbnQgbGluZUJveEVkZ2UsIGludCBlbGxpcHNpc1dpZHRoKTsKLSAgICB2
b2lkIHBsYWNlRWxsaXBzaXMoY29uc3QgQXRvbWljU3RyaW5nJiBlbGxpcHNpc1N0ciwgYm9vbCBs
dHIsIGludCBibG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoLCBJbmxpbmVCb3gqIG1hcmt1cEJv
eCA9IDApOwotICAgIHZpcnR1YWwgaW50IHBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIsIGludCBi
bG9ja0VkZ2UsIGludCBlbGxpcHNpc1dpZHRoLCBib29sJiBmb3VuZEJveCk7CisgICAgdm9pZCBw
bGFjZUVsbGlwc2lzKGNvbnN0IEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIsIGJvb2wgbHRyLCBp
bnQgYmxvY2tMZWZ0RWRnZSwgaW50IGJsb2NrUmlnaHRFZGdlLCBpbnQgZWxsaXBzaXNXaWR0aCwg
SW5saW5lQm94KiBtYXJrdXBCb3ggPSAwKTsKKyAgICB2aXJ0dWFsIGludCBwbGFjZUVsbGlwc2lz
Qm94KGJvb2wgbHRyLCBpbnQgYmxvY2tMZWZ0RWRnZSwgaW50IGJsb2NrUmlnaHRFZGdlLCBpbnQg
ZWxsaXBzaXNXaWR0aCwgYm9vbCYgZm91bmRCb3gpOwogCiAgICAgRWxsaXBzaXNCb3gqIGVsbGlw
c2lzQm94KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL2JpZGkuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKaW5kZXggYzRkOTI0Ni4uMzY1OTkxMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvYmlkaS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvYmlkaS5jcHAKQEAgLTIyMjEsMTYgKzIyMjEsMTggQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2hl
Y2tMaW5lc0ZvclRleHRPdmVyZmxvdygpCiAgICAgLy8gSW5jbHVkZSB0aGUgc2Nyb2xsYmFyIGZv
ciBvdmVyZmxvdyBibG9ja3MsIHdoaWNoIG1lYW5zIHdlIHdhbnQgdG8gdXNlICJjb250ZW50V2lk
dGgoKSIKICAgICBib29sIGx0ciA9IHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUjsKICAgICBm
b3IgKFJvb3RJbmxpbmVCb3gqIGN1cnIgPSBmaXJzdFJvb3RCb3goKTsgY3VycjsgY3VyciA9IGN1
cnItPm5leHRSb290Qm94KCkpIHsKLSAgICAgICAgaW50IGJsb2NrRWRnZSA9IGx0ciA/IHJpZ2h0
T2Zmc2V0KGN1cnItPnkoKSwgY3VyciA9PSBmaXJzdFJvb3RCb3goKSkgOiBsZWZ0T2Zmc2V0KGN1
cnItPnkoKSwgY3VyciA9PSBmaXJzdFJvb3RCb3goKSk7CisgICAgICAgIGludCBibG9ja1JpZ2h0
RWRnZSA9IHJpZ2h0T2Zmc2V0KGN1cnItPnkoKSwgY3VyciA9PSBmaXJzdFJvb3RCb3goKSk7Cisg
ICAgICAgIGludCBibG9ja0xlZnRFZGdlID0gbGVmdE9mZnNldChjdXJyLT55KCksIGN1cnIgPT0g
Zmlyc3RSb290Qm94KCkpOwogICAgICAgICBpbnQgbGluZUJveEVkZ2UgPSBsdHIgPyBjdXJyLT54
KCkgKyBjdXJyLT53aWR0aCgpIDogY3Vyci0+eCgpOwotICAgICAgICBpZiAoKGx0ciAmJiBsaW5l
Qm94RWRnZSA+IGJsb2NrRWRnZSkgfHwgKCFsdHIgJiYgbGluZUJveEVkZ2UgPCBibG9ja0VkZ2Up
KSB7CisgICAgICAgIGlmICgobHRyICYmIGxpbmVCb3hFZGdlID4gYmxvY2tSaWdodEVkZ2UpIHx8
ICghbHRyICYmIGxpbmVCb3hFZGdlIDwgYmxvY2tMZWZ0RWRnZSkpIHsKICAgICAgICAgICAgIC8v
IFRoaXMgbGluZSBzcGlsbHMgb3V0IG9mIG91ciBib3ggaW4gdGhlIGFwcHJvcHJpYXRlIGRpcmVj
dGlvbi4gIE5vdyB3ZSBuZWVkIHRvIHNlZSBpZiB0aGUgbGluZQogICAgICAgICAgICAgLy8gY2Fu
IGJlIHRydW5jYXRlZC4gIEluIG9yZGVyIGZvciB0cnVuY2F0aW9uIHRvIGJlIHBvc3NpYmxlLCB0
aGUgbGluZSBtdXN0IGhhdmUgc3VmZmljaWVudCBzcGFjZSB0bwogICAgICAgICAgICAgLy8gYWNj
b21tb2RhdGUgb3VyIHRydW5jYXRpb24gc3RyaW5nLCBhbmQgbm8gcmVwbGFjZWQgZWxlbWVudHMg
KGltYWdlcywgdGFibGVzKSBjYW4gb3ZlcmxhcCB0aGUgZWxsaXBzaXMKICAgICAgICAgICAgIC8v
IHNwYWNlLgogICAgICAgICAgICAgaW50IHdpZHRoID0gY3VyciA9PSBmaXJzdFJvb3RCb3goKSA/
IGZpcnN0TGluZUVsbGlwc2lzV2lkdGggOiBlbGxpcHNpc1dpZHRoOworICAgICAgICAgICAgaW50
IGJsb2NrRWRnZSA9IGx0ciA/IGJsb2NrUmlnaHRFZGdlIDogYmxvY2tMZWZ0RWRnZTsKICAgICAg
ICAgICAgIGlmIChjdXJyLT5jYW5BY2NvbW1vZGF0ZUVsbGlwc2lzKGx0ciwgYmxvY2tFZGdlLCBs
aW5lQm94RWRnZSwgd2lkdGgpKQotICAgICAgICAgICAgICAgIGN1cnItPnBsYWNlRWxsaXBzaXMo
ZWxsaXBzaXNTdHIsIGx0ciwgYmxvY2tFZGdlLCB3aWR0aCk7CisgICAgICAgICAgICAgICAgY3Vy
ci0+cGxhY2VFbGxpcHNpcyhlbGxpcHNpc1N0ciwgbHRyLCBibG9ja0xlZnRFZGdlLCBibG9ja1Jp
Z2h0RWRnZSwgd2lkdGgpOwogICAgICAgICB9CiAgICAgfQogfQo=
</data>
<flag name="review"
          id="15011"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>