<?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>165789</bug_id>
          
          <creation_ts>2016-12-12 20:23:32 -0800</creation_ts>
          <short_desc>Change ::computeLogicalHeight&apos;s computedValues out argument to the return value.</short_desc>
          <delta_ts>2016-12-15 20:38: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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1259336</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2016-12-12 20:23:32 -0800</bug_when>
    <thetext>as suggested it in here https://bugs.webkit.org/show_bug.cgi?id=164891#c7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259339</commentid>
    <comment_count>1</comment_count>
      <attachid>296989</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-12-12 20:55:42 -0800</bug_when>
    <thetext>Created attachment 296989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260258</commentid>
    <comment_count>2</comment_count>
      <attachid>296989</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-12-15 14:14:22 -0800</bug_when>
    <thetext>Comment on attachment 296989
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.cpp:2797
&gt; +            childMinPreferredLogicalWidth = childMaxPreferredLogicalWidth = childBox.computeLogicalHeight(
&gt; +                childBox.borderAndPaddingLogicalHeight(), 0).m_extent;

No need to wrap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260509</commentid>
    <comment_count>3</comment_count>
      <attachid>297292</attachid>
    <who name="alan">zalan</who>
    <bug_when>2016-12-15 20:00:39 -0800</bug_when>
    <thetext>Created attachment 297292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260516</commentid>
    <comment_count>4</comment_count>
      <attachid>297292</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 20:38:05 -0800</bug_when>
    <thetext>Comment on attachment 297292
Patch

Clearing flags on attachment: 297292

Committed r209903: &lt;http://trac.webkit.org/changeset/209903&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260517</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-15 20:38:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296989</attachid>
            <date>2016-12-12 20:55:42 -0800</date>
            <delta_ts>2016-12-15 20:00:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165789-20161212205454.patch</filename>
            <type>text/plain</type>
            <size>37873</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU5ZWJlN2MxMWMxYTE1
N2VjMTE3ZjM5MWNkMGRjMWFjNmU1YmU3MS4uMzc4MGUyMzcyNmY2YWE0NTg2M2M1MDcyODgzZDZj
NTk3Mjg1OTk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0IEBACiAyMDE2LTEyLTEyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKKyAgICAgICAgQ2hhbmdlIDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQncyBjb21wdXRlZFZhbHVlcyBvdXQgYXJndW1lbnQgdG8gdGhlIHJldHVybiB2
YWx1ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NTc4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlckNvbnRhaW5l
cjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L21hYy9JbWFn
ZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJ
bWFnZUNvbnRyb2xzQnV0dG9uOjpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJJbWFnZUNvbnRyb2xzOjpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpjb21wdXRlQmxvY2tQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjplc3RpbWF0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpjaGVja0ZvclBhZ2luYXRpb25Mb2dpY2FsSGVpZ2h0Q2hhbmdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveDo6dXBkYXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVzaW5nKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OkNvbXB1
dGVkTWFyZ2luVmFsdWVzOjpDb21wdXRlZE1hcmdpblZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlczo6TG9naWNh
bEV4dGVudENvbXB1dGVkVmFsdWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
Om1haW5BeGlzQ29udGVudEV4dGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGlzdEJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1ldGVyOjpjb21wdXRlTG9naWNhbEhlaWdodCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1ldGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
dWx0aUNvbHVtbkZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11
bHRpQ29sdW1uU2V0Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dy
ZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpjb21wdXRlTG9naWNh
bEhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRleHRDb250cm9sOjpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDoKKworMjAxNi0xMi0xMiAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCiAgICAgICAgIFRoZSBDU1MgJ2NvbHVtbnMnIHBy
b3BlcnR5IHdoZW4gc2V0IG9uIHRoZSA8Ym9keT4gZWxlbWVudCBtYWtlcyBzaG9ydCBjb2x1bW5z
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4OTEK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAKaW5kZXggOWFmNzM1MjA3MzcyYzYwMTAwZTg4ODMyMTE2YWEyYWI0OTRlNjk4OS4uOWIxMDJi
OTc4ZGQ2Y2JiOWI2YjI4NTNiM2EwZGQyYjZlYmMyMDU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC0xMTksMTQgKzExOSwx
NCBAQCBwdWJsaWM6CiAgICAgfQogCiBwdWJsaWM6Ci0gICAgdm9pZCBjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyQm94
OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0Zs
ZXhpYmxlQm94SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKLXZv
aWQgUmVuZGVyU2xpZGVyQ29udGFpbmVyOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKK1JlbmRlckJveDo6TG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzIFJlbmRlclNsaWRlckNvbnRhaW5lcjo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93SG9zdCgpKTsKICAgICBhdXRvJiBpbnB1
dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCplbGVtZW50KCktPnNoYWRvd0hvc3QoKSk7
CkBAIC0xNDYsMTMgKzE0NiwxMiBAQCB2b2lkIFJlbmRlclNsaWRlckNvbnRhaW5lcjo6Y29tcHV0
ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdQogICAgICAgICBp
ZiAoem9vbUZhY3RvciAhPSAxLjApCiAgICAgICAgICAgICB0cmFja0hlaWdodCAqPSB6b29tRmFj
dG9yOwogCi0gICAgICAgIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQodHJhY2tIZWln
aHQsIGxvZ2ljYWxUb3AsIGNvbXB1dGVkVmFsdWVzKTsKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCh0cmFja0hlaWdodCwgbG9n
aWNhbFRvcCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGlzVmVydGljYWwpCiAgICAgICAgIGxv
Z2ljYWxIZWlnaHQgPSBSZW5kZXJTbGlkZXI6OmRlZmF1bHRUcmFja0xlbmd0aDsKLSAgICBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3AsIGNv
bXB1dGVkVmFsdWVzKTsKKyAgICByZXR1cm4gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdo
dChsb2dpY2FsSGVpZ2h0LCBsb2dpY2FsVG9wKTsKIH0KIAogdm9pZCBSZW5kZXJTbGlkZXJDb250
YWluZXI6OmxheW91dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9t
YWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcAppbmRleCA0ZDFj
MzQ1YzhmNDQzZWYyMDFhMjMyNDMxODY5NTIwMjAxYzk0MzNkLi45NmNkMmY1MjM0MGUzYmNlMDhj
NDA1YjY3ZGUxZGYxMTdjZGZiMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTG9n
aWNhbFdpZHRoKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVySW1hZ2VDb250cm9s
c0J1dHRvbiI7IH0KICAgICBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTczLDEyICs3MywxMiBAQCB2
b2lkIFJlbmRlckltYWdlQ29udHJvbHNCdXR0b246OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiAgICAg
c2V0TG9naWNhbFdpZHRoKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmcmFtZVNpemUud2lk
dGgoKSA6IGZyYW1lU2l6ZS5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2VDb250cm9s
c0J1dHRvbjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBM
YXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0
ZWRWYWx1ZXMpIGNvbnN0CitSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBS
ZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3QKIHsKLSAgICBSZW5k
ZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3AsIGNv
bXB1dGVkVmFsdWVzKTsKLQorICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBSZW5kZXJCb3g6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3ApOwogICAgIEludFNp
emUgZnJhbWVTaXplID0gdGhlbWUoKS5pbWFnZUNvbnRyb2xzQnV0dG9uU2l6ZSgqdGhpcyk7CiAg
ICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
ZnJhbWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndpZHRoKCk7CisgICAgcmV0dXJuIGNvbXB1
dGVkVmFsdWVzOwogfQogCiBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6SW1hZ2VDb250
cm9sc0J1dHRvbkVsZW1lbnRNYWMoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVt
ZW50TWFjLmNwcAppbmRleCBmNDc5ZDI4ODA4MDEyNDRkZmY4N2RiNzM3YjI4MWFkY2ZiOTQ2NmVj
Li4zYWJhOTIyZjY0NjY2ZTNhN2NiMGI2NGIwNmM4OWIyOTRlNTU1MDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjLmNwcApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICBM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJJbWFnZUNvbnRyb2xzIjsgfQogICAgIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2Fs
Y1Byb3BhZ2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjksMTUg
KzY5LDE1IEBAIHZvaWQgUmVuZGVySW1hZ2VDb250cm9sczo6dXBkYXRlTG9naWNhbFdpZHRoKCkK
ICAgICBzZXRMb2dpY2FsV2lkdGgoZG93bmNhc3Q8UmVuZGVySW1hZ2U+KCpyZW5kZXJlcikubG9n
aWNhbFdpZHRoKCkpOwogfQogCi12b2lkIFJlbmRlckltYWdlQ29udHJvbHM6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9w
LCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAorUmVu
ZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVySW1hZ2VDb250cm9sczo6
Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0
IGxvZ2ljYWxUb3ApIGNvbnN0CiB7Ci0gICAgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdo
dChsb2dpY2FsSGVpZ2h0LCBsb2dpY2FsVG9wLCBjb21wdXRlZFZhbHVlcyk7Ci0KKyAgICBhdXRv
IGNvbXB1dGVkVmFsdWVzID0gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChsb2dpY2Fs
SGVpZ2h0LCBsb2dpY2FsVG9wKTsKICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGVsZW1l
bnQoKS0+c2hhZG93SG9zdCgpLT5yZW5kZXJlcigpOwogICAgIGlmICghaXM8UmVuZGVySW1hZ2U+
KCpyZW5kZXJlcikpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVkVmFs
dWVzOwogCiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBkb3duY2FzdDxSZW5kZXJJbWFn
ZT4oKnJlbmRlcmVyKS5sb2dpY2FsSGVpZ2h0KCk7CisgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWVz
OwogfQogCiBSZWZQdHI8SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50PiBJbWFnZUNvbnRyb2xzUm9v
dEVsZW1lbnQ6OnRyeUNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBjMjgyNmFhOThhZWEwNzliNDQ3M2FmMjdmZTlh
MDQ4ZWYyZTM4ZDA1Li5iZWM3MmQ2YTU1MzgzZDA1MmYxYzMyZDBkMDkzNzc3MjRjOTgzNzVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTI3OTMsOSArMjc5
Myw4IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1dGVCbG9ja1ByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoCiAgICAgICAgIExheW91dFVuaXQgY2hpbGRN
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNoaWxkTWF4UHJlZmVycmVkTG9naWNhbFdpZHRoOwog
ICAgICAgICBpZiAoaXM8UmVuZGVyQm94PigqY2hpbGQpICYmIGNoaWxkLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpICE9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgICAg
IGF1dG8mIGNoaWxkQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqY2hpbGQpOwotICAgICAgICAg
ICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgICAgICAg
ICAgY2hpbGRCb3guY29tcHV0ZUxvZ2ljYWxIZWlnaHQoY2hpbGRCb3guYm9yZGVyQW5kUGFkZGlu
Z0xvZ2ljYWxIZWlnaHQoKSwgMCwgY29tcHV0ZWRWYWx1ZXMpOwotICAgICAgICAgICAgY2hpbGRN
aW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBjaGlsZE1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9
IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50OworICAgICAgICAgICAgY2hpbGRNaW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGggPSBjaGlsZE1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNoaWxkQm94LmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KAorICAgICAgICAgICAgICAgIGNoaWxkQm94LmJvcmRlckFuZFBh
ZGRpbmdMb2dpY2FsSGVpZ2h0KCksIDApLm1fZXh0ZW50OwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgY2hpbGRNaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSBjaGlsZC0+bWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoKCk7CiAgICAgICAgICAgICBjaGlsZE1heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCA9IGNoaWxkLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKQEAgLTM2MzksOSArMzYz
OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmVzdGltYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZChj
b25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBlc3RpbWF0ZWRWYWx1ZXM7Ci0gICAgYm94LmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2ljYWxIZWlnaHQoKSwg
bG9naWNhbFRvcEZvckNoaWxkKGJveCksIGVzdGltYXRlZFZhbHVlcyk7Ci0KKyAgICBhdXRvIGVz
dGltYXRlZFZhbHVlcyA9IGJveC5jb21wdXRlTG9naWNhbEhlaWdodChSZW5kZXJGbG93VGhyZWFk
OjptYXhMb2dpY2FsSGVpZ2h0KCksIGxvZ2ljYWxUb3BGb3JDaGlsZChib3gpKTsKICAgICBMYXlv
dXRVbml0IG9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbiA9IGJveC5vZmZzZXRGcm9t
TG9naWNhbFRvcE9mRmlyc3RQYWdlKCk7CiAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9
IGZsb3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxU
b3BPZkZpcnN0UmVnaW9uLCB0cnVlKTsKICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IGZs
b3dUaHJlYWQtPnJlZ2lvbkF0QmxvY2tPZmZzZXQodGhpcywgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BP
ZkZpcnN0UmVnaW9uICsgZXN0aW1hdGVkVmFsdWVzLm1fZXh0ZW50LCB0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggOGUyMTc4ZDk5ZjU4
Yzk3NzljMmEyM2M2NGUyZGI4ZWRhZTNmZDIwYS4uNTZkYzg2ODgwYjdmY2Y3MTcwMzg5Y2RkNDky
YjMyNjkzNWExMDViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAKQEAgLTM5MzMsOCArMzkzMyw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpjaGVj
a0ZvclBhZ2luYXRpb25Mb2dpY2FsSGVpZ2h0Q2hhbmdlKGJvb2wmIHJlbGF5b3V0Q2hpbGRyCiAg
ICAgaWYgKFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG11bHRpQ29s
dW1uRmxvd1RocmVhZCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgbmV3Q29sdW1uSGVpZ2h0Owog
ICAgICAgICBpZiAoaGFzRGVmaW5pdGVMb2dpY2FsSGVpZ2h0KCkgfHwgdmlldygpLmZyYW1lVmll
dygpLnBhZ2luYXRpb24oKS5tb2RlICE9IFBhZ2luYXRpb246OlVucGFnaW5hdGVkKSB7Ci0gICAg
ICAgICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7Ci0gICAg
ICAgICAgICBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0KCksIGxvZ2ljYWxUb3AoKSwg
Y29tcHV0ZWRWYWx1ZXMpOworICAgICAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNvbXB1
dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQoKSwgbG9naWNhbFRvcCgpKTsKICAgICAgICAgICAg
IG5ld0NvbHVtbkhlaWdodCA9IHN0ZDo6bWF4PExheW91dFVuaXQ+KGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50IC0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIHNjcm9sbGJhckxvZ2lj
YWxIZWlnaHQoKSwgMCk7CiAgICAgICAgICAgICBpZiAoZmxvd1RocmVhZC0+Y29sdW1uSGVpZ2h0
QXZhaWxhYmxlKCkgIT0gbmV3Q29sdW1uSGVpZ2h0KQogICAgICAgICAgICAgICAgIHJlbGF5b3V0
Q2hpbGRyZW4gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRl
eCAxZDczODZhMGI5YWI1ODczMmVjNjNhNGM3N2U1MGUwYjc1NDhmYTAyLi5mNDQ3MTgwMWM4N2E3
NWNlNDIzYjJiODhiZTA2NzA1NTEwYTk2ZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtMjc3OCwyMyArMjc3OCwyMiBAQCBzdGF0aWMgYm9vbCBzaG91bGRGbGlw
QmVmb3JlQWZ0ZXJNYXJnaW5zKGNvbnN0IFJlbmRlclN0eWxlJiBjb250YWluaW5nQmxvY2tTdHls
ZQogCiB2b2lkIFJlbmRlckJveDo6dXBkYXRlTG9naWNhbEhlaWdodCgpCiB7Ci0gICAgTG9naWNh
bEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgIGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcCgpLCBjb21wdXRlZFZhbHVlcyk7Ci0K
KyAgICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhl
aWdodCgpLCBsb2dpY2FsVG9wKCkpOwogICAgIHNldExvZ2ljYWxIZWlnaHQoY29tcHV0ZWRWYWx1
ZXMubV9leHRlbnQpOwogICAgIHNldExvZ2ljYWxUb3AoY29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlv
bik7CiAgICAgc2V0TWFyZ2luQmVmb3JlKGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2JlZm9y
ZSk7CiAgICAgc2V0TWFyZ2luQWZ0ZXIoY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYWZ0ZXIp
OwogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRl
ZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CitSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQg
bG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdAogeworICAgIExvZ2lj
YWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlZFZhbHVlczsKICAgICBjb21wdXRlZFZhbHVl
cy5tX2V4dGVudCA9IGxvZ2ljYWxIZWlnaHQ7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlv
biA9IGxvZ2ljYWxUb3A7CiAKICAgICAvLyBDZWxsIGhlaWdodCBpcyBtYW5hZ2VkIGJ5IHRoZSB0
YWJsZSBhbmQgaW5saW5lIG5vbi1yZXBsYWNlZCBlbGVtZW50cyBkbyBub3Qgc3VwcG9ydCBhIGhl
aWdodCBwcm9wZXJ0eS4KICAgICBpZiAoaXNUYWJsZUNlbGwoKSB8fCAoaXNJbmxpbmUoKSAmJiAh
aXNSZXBsYWNlZCgpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcHV0ZWRW
YWx1ZXM7CiAKICAgICBMZW5ndGggaDsKICAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
CkBAIC0yODE4LDcgKzI4MTcsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYQogICAgICAgICAg
ICAgICAgICAgICBzaG91bGRGbGlwQmVmb3JlQWZ0ZXIgPyBjb21wdXRlZFZhbHVlcy5tX21hcmdp
bnMubV9hZnRlciA6IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2JlZm9yZSwKICAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkRmxpcEJlZm9yZUFmdGVyID8gY29tcHV0ZWRWYWx1ZXMubV9tYXJn
aW5zLm1fYmVmb3JlIDogY29tcHV0ZWRWYWx1ZXMubV9tYXJnaW5zLm1fYWZ0ZXIpOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVk
VmFsdWVzOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IEFjY291bnQgZm9yIGJsb2Nr
LWZsb3cgaW4gZmxleGlibGUgYm94ZXMuCkBAIC0yOTAyLDYgKzI5MDEsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlv
dXRVbml0IGxvZ2ljYQogICAgICAgICAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBzdGQ6
Om1heChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCwgdmlzaWJsZUhlaWdodCAtIG1hcmdpbnNCb3Jk
ZXJzUGFkZGluZyk7CiAgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWVz
OwogfQogCiBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBjb25zdCBMZW5ndGgmIGhlaWdodCwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0KSBjb25zdApA
QCAtMzAzOSw4ICszMDM5LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCb3g6
OmNvbXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodChjb25zdCBMZW5ndGgKICAgICB9IGVsc2Ug
aWYgKGlzT3V0T2ZGbG93UG9zaXRpb25lZFdpdGhTcGVjaWZpZWRIZWlnaHQpIHsKICAgICAgICAg
Ly8gRG9uJ3QgYWxsb3cgdGhpcyB0byBhZmZlY3QgdGhlIGJsb2NrJyBoZWlnaHQoKSBtZW1iZXIg
dmFyaWFibGUsIHNpbmNlIHRoaXMKICAgICAgICAgLy8gY2FuIGdldCBjYWxsZWQgd2hpbGUgdGhl
IGJsb2NrIGlzIHN0aWxsIGxheWluZyBvdXQgaXRzIGtpZHMuCi0gICAgICAgIExvZ2ljYWxFeHRl
bnRDb21wdXRlZFZhbHVlcyBjb21wdXRlZFZhbHVlczsKLSAgICAgICAgY2ItPmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KGNiLT5sb2dpY2FsSGVpZ2h0KCksIDAsIGNvbXB1dGVkVmFsdWVzKTsKKyAgICAg
ICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNiLT5jb21wdXRlTG9naWNhbEhlaWdodChjYi0+bG9n
aWNhbEhlaWdodCgpLCAwKTsKICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gY29tcHV0ZWRWYWx1
ZXMubV9leHRlbnQgLSBjYi0+Ym9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGNiLT5z
Y3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7CiAgICAgfSBlbHNlIGlmIChjYi0+aXNSZW5kZXJWaWV3
KCkpCiAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IHZpZXcoKS5wYWdlT3JWaWV3TG9naWNhbEhl
aWdodCgpOwpAQCAtMzE2MCw4ICszMTU5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmNvbXB1
dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyhTaXplVHlwZSBoZWlnaHRUeXBlLCBMZW4KICAg
ICAgICAgICAgICAgICAmJiAhKGNvbnRhaW5lci0+c3R5bGUoKS50b3AoKS5pc0F1dG8oKSB8fCBj
b250YWluZXItPnN0eWxlKCkuYm90dG9tKCkuaXNBdXRvKCkpKSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY29udGFpbmVyLT5pc1JlbmRlckJsb2Nr
KCkpOwogICAgICAgICAgICAgICAgIGF1dG8mIGJsb2NrID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpjb250YWluZXIpOwotICAgICAgICAgICAgICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVl
cyBjb21wdXRlZFZhbHVlczsKLSAgICAgICAgICAgICAgICBibG9jay5jb21wdXRlTG9naWNhbEhl
aWdodChibG9jay5sb2dpY2FsSGVpZ2h0KCksIDAsIGNvbXB1dGVkVmFsdWVzKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gYmxvY2suY29tcHV0ZUxvZ2ljYWxIZWlnaHQo
YmxvY2subG9naWNhbEhlaWdodCgpLCAwKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG5l
d0NvbnRlbnRIZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGJsb2NrLmJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkgLSBibG9jay5zY3JvbGxiYXJMb2dpY2FsSGVpZ2h0KCk7
CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBuZXdIZWlnaHQgPSBibG9jay5hZGp1c3RDb250
ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhuZXdDb250ZW50SGVpZ2h0KTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXpp
bmcodmFsdWVGb3JMZW5ndGgobG9naWNhbEhlaWdodCwgbmV3SGVpZ2h0KSk7CkBAIC0zMjMzLDgg
KzMyMzEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveDo6YXZhaWxhYmxlTG9naWNhbEhlaWdodFVz
aW5nKGNvbnN0IExlbmd0aCYgaCwgQXZhaWxhYmxlTG9naQogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjUwMAogICAgIGlmIChpczxSZW5kZXJCbG9jaz4o
KnRoaXMpICYmIGlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHN0eWxlKCkuaGVpZ2h0KCkuaXNB
dXRvKCkgJiYgIShzdHlsZSgpLnRvcCgpLmlzQXV0bygpIHx8IHN0eWxlKCkuYm90dG9tKCkuaXNB
dXRvKCkpKSB7CiAgICAgICAgIFJlbmRlckJsb2NrJiBibG9jayA9IGNvbnN0X2Nhc3Q8UmVuZGVy
QmxvY2smPihkb3duY2FzdDxSZW5kZXJCbG9jaz4oKnRoaXMpKTsKLSAgICAgICAgTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgICAgICBibG9jay5jb21wdXRl
TG9naWNhbEhlaWdodChibG9jay5sb2dpY2FsSGVpZ2h0KCksIDAsIGNvbXB1dGVkVmFsdWVzKTsK
KyAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGJsb2NrLmNvbXB1dGVMb2dpY2FsSGVpZ2h0
KGJsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgMCk7CiAgICAgICAgIExheW91dFVuaXQgbmV3Q29udGVu
dEhlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50IC0gYmxvY2suYm9yZGVyQW5kUGFkZGlu
Z0xvZ2ljYWxIZWlnaHQoKSAtIGJsb2NrLnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAg
ICAgcmV0dXJuIGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKG5ld0Nv
bnRlbnRIZWlnaHQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRl
eCBhZTFkZWE5OWI1YjIzMGVmODc5NmE2OTcyMTY1YzdlZTAwOWNmYmM3Li5kMGZhN2IyYTU3NjI3
OWRhMDE1ZjYyODU3YTRiYjRjMzg3Yjc4MTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCkBAIC0zMzUsMjUgKzMzNSwxMiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBhZGp1
c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJveFNpemluZyhzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGhlaWdodCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMg
ewotICAgICAgICBDb21wdXRlZE1hcmdpblZhbHVlcygpCi0gICAgICAgICAgICA6IG1fYmVmb3Jl
KDApCi0gICAgICAgICAgICAsIG1fYWZ0ZXIoMCkKLSAgICAgICAgICAgICwgbV9zdGFydCgwKQot
ICAgICAgICAgICAgLCBtX2VuZCgwKQotICAgICAgICB7Ci0gICAgICAgIH0KICAgICAgICAgTGF5
b3V0VW5pdCBtX2JlZm9yZTsKICAgICAgICAgTGF5b3V0VW5pdCBtX2FmdGVyOwogICAgICAgICBM
YXlvdXRVbml0IG1fc3RhcnQ7CiAgICAgICAgIExheW91dFVuaXQgbV9lbmQ7CiAgICAgfTsKICAg
ICBzdHJ1Y3QgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIHsKLSAgICAgICAgTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzKCkKLSAgICAgICAgICAgIDogbV9leHRlbnQoMCkKLSAgICAgICAg
ICAgICwgbV9wb3NpdGlvbigwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQogICAgICAgICBMYXlv
dXRVbml0IG1fZXh0ZW50OwogICAgICAgICBMYXlvdXRVbml0IG1fcG9zaXRpb247CiAgICAgICAg
IENvbXB1dGVkTWFyZ2luVmFsdWVzIG1fbWFyZ2luczsKQEAgLTM5OSw3ICszODYsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCk7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0OworICAgIHZpcnR1YWwgTG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQg
bG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdDsKIAogICAgIFJlbmRl
ckJveFJlZ2lvbkluZm8qIHJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiwgUmVuZGVy
Qm94UmVnaW9uSW5mb0ZsYWdzID0gQ2FjaGVSZW5kZXJCb3hSZWdpb25JbmZvKSBjb25zdDsKICAg
ICB2b2lkIGNvbXB1dGVMb2dpY2FsV2lkdGhJblJlZ2lvbihMb2dpY2FsRXh0ZW50Q29tcHV0ZWRW
YWx1ZXMmLCBSZW5kZXJSZWdpb24qID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCA5YmUzN2U4M2MzMmNlMzE4
YjJjOTdkNDgyMWUyNWM1MjMwZTI2MDdlLi44MmI3NWIxOGM2N2QzMWM4NmFlNzZmYmVjMTE4N2Q2
ZDg0ODU2NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHAKQEAgLTQ0MiwxMiArNDQyLDExIEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVC
b3g6OmNyb3NzQXhpc0NvbnRlbnRFeHRlbnQoKSBjb25zdAogTGF5b3V0VW5pdCBSZW5kZXJGbGV4
aWJsZUJveDo6bWFpbkF4aXNDb250ZW50RXh0ZW50KExheW91dFVuaXQgY29udGVudExvZ2ljYWxI
ZWlnaHQpCiB7CiAgICAgaWYgKGlzQ29sdW1uRmxvdygpKSB7Ci0gICAgICAgIExvZ2ljYWxFeHRl
bnRDb21wdXRlZFZhbHVlcyBjb21wdXRlZFZhbHVlczsKICAgICAgICAgTGF5b3V0VW5pdCBib3Jk
ZXJQYWRkaW5nQW5kU2Nyb2xsYmFyID0gYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAr
IHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgaWYgKGNvbnRlbnRMb2dpY2FsSGVp
Z2h0ID4gTGF5b3V0VW5pdDo6bWF4KCkgLSBib3JkZXJQYWRkaW5nQW5kU2Nyb2xsYmFyKQogICAg
ICAgICAgICAgY29udGVudExvZ2ljYWxIZWlnaHQgLT0gYm9yZGVyUGFkZGluZ0FuZFNjcm9sbGJh
cjsKICAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3hMb2dpY2FsSGVpZ2h0ID0gY29udGVudExv
Z2ljYWxIZWlnaHQgKyBib3JkZXJQYWRkaW5nQW5kU2Nyb2xsYmFyOwotICAgICAgICBjb21wdXRl
TG9naWNhbEhlaWdodChib3JkZXJCb3hMb2dpY2FsSGVpZ2h0LCBsb2dpY2FsVG9wKCksIGNvbXB1
dGVkVmFsdWVzKTsKKyAgICAgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KGJvcmRlckJveExvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3AoKSk7CiAgICAgICAgIGlm
IChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9PSBMYXlvdXRVbml0OjptYXgoKSkKICAgICAgICAg
ICAgIHJldHVybiBjb21wdXRlZFZhbHVlcy5tX2V4dGVudDsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bWF4KExheW91dFVuaXQ6OmZyb21QaXhlbCgwKSwgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgLSBi
b3JkZXJQYWRkaW5nQW5kU2Nyb2xsYmFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA4OTY3YWI5MTllNGZmZWYwMDkyOTkyNjQ0OWUwZTE0
MWY5ZWM2YjM5Li4zYjYzNzNkMThiYWIxYjdiODUxMzg4ZTIwNDJhNTVkZDJhMDlhOWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC0zNDQs
OCArMzQ0LDkgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQog
ICAgIH0KIH0KIAotdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbEhlaWdodChM
YXlvdXRVbml0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CitSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0CiB7CisgICAgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwogICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRp
b24gPSBsb2dpY2FsVG9wOwogICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gMDsKIApAQCAt
MzU4LDggKzM1OSw5IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMCiAKICAgICAgICAgLy8gSWYg
d2UgcmVhY2hlZCB0aGUgbWF4aW11bSBzaXplIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gZ29pbmcgZnVy
dGhlci4KICAgICAgICAgaWYgKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID09IG1heEZsb3dTaXpl
KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWVz
OwogICAgIH0KKyAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiB9CiAKIGJvb2wgUmVuZGVyRmxv
d1RocmVhZDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFp
bmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24g
aGl0VGVzdEFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5oCmluZGV4IGYwOTU3Mzg0NmYwZWY0NGU3MGZhYjk5YzFjYzM0ZTZmNTVmZWYxN2IuLmE2OWY3
MzU3OTE0NTUzNWQxMDJlNmQyM2QzMmNhMTVkNzQwNmUxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgcmVuZGVyUmVnaW9uTGlzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVnaW9uTGlzdDsgfQogCiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBmaW5h
bDsKLSAgICB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdo
dCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3ApIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAppbmRleCAyYzZhOGVlN2M2NWM2MTJhODU4NjJkNGUxYjU3NjA3NDJmZjEwMjg2Li5h
Zjc2NTJhZjViMDU1MDBmMDVkNDVhNWY1ZDIzNjBkNjUwMzc2YzhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCkBAIC0yNTgsMTAgKzI1OCwxMCBAQCBMYXlv
dXRVbml0IFJlbmRlckxpc3RCb3g6Omxpc3RIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBpdGVt
SGVpZ2h0KCkgKiBudW1JdGVtcygpIC0gcm93U3BhY2luZzsKIH0KIAotdm9pZCBSZW5kZXJMaXN0
Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CitS
ZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJMaXN0Qm94Ojpjb21w
dXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0
CiB7CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSBpdGVtSGVpZ2h0KCkgKiBzaXplKCkgLSByb3dT
cGFjaW5nICsgdmVydGljYWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCk7Ci0gICAgUmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbEhlaWdodChoZWlnaHQsIGxvZ2ljYWxUb3AsIGNvbXB1dGVkVmFsdWVz
KTsKKyAgICByZXR1cm4gUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChoZWlnaHQsIGxv
Z2ljYWxUb3ApOwogfQogCiBpbnQgUmVuZGVyTGlzdEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUg
bGluZURpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggNzMwMDNlOTlmZTJh
OGI3ZWE5OWU0NjNjYTJiOWY3NmEzN2M4YzI1OS4uZjY3OGQ0YzMyZmRlZjY1ZTAxNmNhOTczNzg0
MzYzZjg2ZWU1N2UxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5o
CkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9n
aWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExv
Z2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpIG92ZXJyaWRlOwogICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2Rl
ID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZXRlci5jcHAKaW5kZXggYzk2OTFiNTg1MmUxNGMwMzA0MjMzZGI3Zjk5YjFj
ZWVjNGE3MmE5ZC4uOTZkNzhiNWFiZDQ5MGE1MzMyMGYyNzE3ZTA1OTQwNjEzZDQyZDQ3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwCkBAIC01OCwxMCArNTgsOSBA
QCB2b2lkIFJlbmRlck1ldGVyOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQogICAgIHNldExvZ2ljYWxX
aWR0aChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLndpZHRoKCkgOiBmcmFt
ZVNpemUuaGVpZ2h0KCkpOwogfQogCi12b2lkIFJlbmRlck1ldGVyOjpjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKK1JlbmRlckJv
eDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlck1ldGVyOjpjb21wdXRlTG9naWNh
bEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkg
Y29uc3QKIHsKLSAgICBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWln
aHQsIGxvZ2ljYWxUb3AsIGNvbXB1dGVkVmFsdWVzKTsKLQorICAgIGF1dG8gY29tcHV0ZWRWYWx1
ZXMgPSBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2lj
YWxUb3ApOwogICAgIExheW91dFJlY3QgZnJhbWUgPSBmcmFtZVJlY3QoKTsKICAgICBpZiAoaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgZnJhbWUuc2V0SGVpZ2h0KGNvbXB1dGVk
VmFsdWVzLm1fZXh0ZW50KTsKQEAgLTY5LDYgKzY4LDcgQEAgdm9pZCBSZW5kZXJNZXRlcjo6Y29t
cHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxv
Z2kKICAgICAgICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwogICAg
IEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5tZXRlclNpemVGb3JCb3VuZHMoKnRoaXMsIHNu
YXBwZWRJbnRSZWN0KGZyYW1lKSk7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndp
ZHRoKCk7CisgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWVzOwogfQogCiB2b2lkIFJlbmRlck1ldGVy
Ojp1cGRhdGVGcm9tRWxlbWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWV0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5o
CmluZGV4IGNjYjc5OThiMjViMTU0NzRkZGI0NTJhNDllNWJiZmU5NjZmMjE0YzMuLmRhOTU0NDRk
ZWZkOWExOTZhZjc1ZjkyOGM2NjM0NjQzZjViM2QzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZXRlci5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOworICAgIExv
Z2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlck1ldGVyIjsgfQogICAgIGJvb2wgaXNNZXRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtbkZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAKaW5kZXggNjkxNTM5M2JiNjdhYzQxMGQ2YmM0NGJkYTZi
MjgyMTk1NGUwNjlkYi4uZmZmMGI2YjVlNzM3NGUyNDg4YmRiYTY0NjRmNjQyMDU4ZmZhY2UwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uRmxvd1RocmVhZC5jcHAKQEAgLTQ5OSwxMSArNDk5LDEwIEBAIHZvaWQgUmVuZGVyTXVsdGlD
b2x1bW5GbG93VGhyZWFkOjpmbG93VGhyZWFkRGVzY2VuZGFudEJveExhaWRPdXQoUmVuZGVyQm94
KiBkZXNjCiAgICAgfQogfQogCi12b2lkIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6Y29t
cHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxv
Z2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNv
bnN0CitSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJNdWx0aUNv
bHVtbkZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdAogewogICAgIC8vIFdlIHNpbXBseSBy
ZW1haW4gYXQgb3VyIGludHJpbnNpYyBoZWlnaHQuCi0gICAgY29tcHV0ZWRWYWx1ZXMubV9leHRl
bnQgPSBsb2dpY2FsSGVpZ2h0OwotICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dp
Y2FsVG9wOworICAgIHJldHVybiB7IGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3AsIENvbXB1dGVk
TWFyZ2luVmFsdWVzKCkgfTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dU
aHJlYWQ6OmluaXRpYWxMb2dpY2FsV2lkdGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCmluZGV4IDg4NDNj
MTMwZDg3NzAzNTIxYWJhZjg1ZTg0Y2FmYTBiNDIwY2QwNmYuLmRmZGZmY2UyOGExNmU5ZGEzOWQw
NzA2ZTQ5ZjJlMzllODcwMWExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZmxvd1RocmVhZERlc2NlbmRhbnRJbnNlcnRlZChSZW5kZXJPYmpl
Y3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGZsb3dUaHJlYWRSZWxhdGl2ZVdpbGxCZVJlbW92ZWQo
UmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmbG93VGhyZWFkRGVzY2VuZGFudEJv
eExhaWRPdXQoUmVuZGVyQm94Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNh
bEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlv
dXRVbml0IGluaXRpYWxMb2dpY2FsV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNl
dFBhZ2VCcmVhayhjb25zdCBSZW5kZXJCbG9jayosIExheW91dFVuaXQgb2Zmc2V0LCBMYXlvdXRV
bml0IHNwYWNlU2hvcnRhZ2UpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlTWluaW11bVBhZ2VI
ZWlnaHQoY29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBt
aW5IZWlnaHQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggOTIxMGQ3NDZmZmYwMTVlYjI3NDIxMDkyN2UwZTQ1
ZTE0MjU3ZWUxMS4uZjRkYzlmNmE1OTU5OTYzMjIxMDc5NzU0MmFmZTkxYmFkN2Y5NzYwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3Bw
CkBAIC00MDIsMTAgKzQwMiw5IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmxheW91dCgp
CiAgICAgfQogfQogCi12b2lkIFJlbmRlck11bHRpQ29sdW1uU2V0Ojpjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbml0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CitSZW5kZXJCb3g6OkxvZ2ljYWxFeHRl
bnRDb21wdXRlZFZhbHVlcyBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdAogewotICAgIGNvbXB1
dGVkVmFsdWVzLm1fZXh0ZW50ID0gbV9hdmFpbGFibGVDb2x1bW5IZWlnaHQ7Ci0gICAgY29tcHV0
ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IGxvZ2ljYWxUb3A7CisgICAgcmV0dXJuIHsgbV9hdmFpbGFi
bGVDb2x1bW5IZWlnaHQsIGxvZ2ljYWxUb3AsIENvbXB1dGVkTWFyZ2luVmFsdWVzKCkgfTsKIH0K
IAogTGF5b3V0VW5pdCBSZW5kZXJNdWx0aUNvbHVtblNldDo6Y2FsY3VsYXRlTWF4Q29sdW1uSGVp
Z2h0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
dWx0aUNvbHVtblNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29s
dW1uU2V0LmgKaW5kZXggYWI0MDc1MTU4ZGZjZjI4MTNhOTE0YTdmMjRiZGE1NmI5YTMwN2M5Ni4u
YjFhZTIwZWNhMzBmMjVmNThkNjQ1NTk1OWZlMzkwMWM0M2NlOWJiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKQEAgLTEzNSw3ICsxMzUs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExh
eW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKSBvdmVycmlkZSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQcm9ncmVzcy5jcHAKaW5kZXggOWExZjI0MGZhNWY5YWZmODcwMWMxMzQ4Y2NjNTdkMzZh
YjNlMGI4NC4uNzI5YjM2MGE5YmNjYzI0YmUyYTYyMzgyNGJmNTVjMTFjNjJlY2I4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCkBAIC01NywxMCArNTcs
OSBAQCB2b2lkIFJlbmRlclByb2dyZXNzOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgUmVuZGVy
QmxvY2tGbG93Ojp1cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi12b2lkIFJlbmRlclByb2dyZXNz
Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVu
aXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVl
cykgY29uc3QKK1JlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlclBy
b2dyZXNzOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExh
eW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3QKIHsKLSAgICBSZW5kZXJCb3g6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3AsIGNvbXB1dGVkVmFsdWVzKTsKLQor
ICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0
KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxUb3ApOwogICAgIExheW91dFJlY3QgZnJhbWUgPSBmcmFt
ZVJlY3QoKTsKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgZnJh
bWUuc2V0SGVpZ2h0KGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50KTsKQEAgLTY4LDYgKzY3LDcgQEAg
dm9pZCBSZW5kZXJQcm9ncmVzczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBMYXlvdXRVbml0IGwKICAgICAgICAgZnJhbWUuc2V0V2lkdGgoY29tcHV0ZWRW
YWx1ZXMubV9leHRlbnQpOwogICAgIEludFNpemUgZnJhbWVTaXplID0gdGhlbWUoKS5wcm9ncmVz
c0JhclJlY3RGb3JCb3VuZHMoKnRoaXMsIHNuYXBwZWRJbnRSZWN0KGZyYW1lKSkuc2l6ZSgpOwog
ICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGZyYW1lU2l6ZS5oZWlnaHQoKSA6IGZyYW1lU2l6ZS53aWR0aCgpOworICAgIHJldHVybiBjb21w
dXRlZFZhbHVlczsKIH0KIAogZG91YmxlIFJlbmRlclByb2dyZXNzOjphbmltYXRpb25Qcm9ncmVz
cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJv
Z3Jlc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oCmluZGV4
IDAyOWI5ZWNjMDVjYTcxYTA3NWQwNmU3NTk2NTJmNzk3ODNkMjdlZDguLjAzMTIyZDI0ZTYzMTk1
NjgwOWMyMDNlYTgzOWMwM2RhZjljYTZhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQcm9ncmVzcy5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQcm9ncmVzcyI7
IH0KICAgICBib29sIGlzUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdo
dCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgYW5p
bWF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uU3RhdGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDIz
MjVkZDlkYzM5NWY1ZWFlNzJhMmY1ZTkzYjAwMDMzMWI4MGFlNzcuLjEyZmRhOGU2OTNhZGE4YWU4
ODY4YzZhZWViOWFkMTZiN2YwYTEyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtOTUsNyArOTUsNyBAQCBpbnQgUmVuZGVyVGV4dENv
bnRyb2w6OnNjcm9sbGJhclRoaWNrbmVzcygpIGNvbnN0CiAgICAgcmV0dXJuIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLnNjcm9sbGJhclRoaWNrbmVzcygpOwogfQogCi12b2lkIFJlbmRlclRleHRD
b250cm9sOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExh
eW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRl
ZFZhbHVlcykgY29uc3QKK1JlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJl
bmRlclRleHRDb250cm9sOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3QKIHsKICAgICBUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQqIGlubmVyVGV4dCA9IGlubmVyVGV4dEVsZW1lbnQoKTsKICAgICBBU1NF
UlQoaW5uZXJUZXh0KTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9s
Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVu
aQogICAgICAgICAgICAgbG9naWNhbEhlaWdodCArPSBzY3JvbGxiYXJUaGlja25lc3MoKTsKICAg
ICB9CiAKLSAgICBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQs
IGxvZ2ljYWxUb3AsIGNvbXB1dGVkVmFsdWVzKTsKKyAgICByZXR1cm4gUmVuZGVyQm94Ojpjb21w
dXRlTG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0LCBsb2dpY2FsVG9wKTsKIH0KIAogdm9pZCBS
ZW5kZXJUZXh0Q29udHJvbDo6aGl0SW5uZXJUZXh0RWxlbWVudChIaXRUZXN0UmVzdWx0JiByZXN1
bHQsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5oCmluZGV4IGQwOTNiNzkwNTYwYmFkOGY1MzBjNTQxNWIzYTFkZmE2YjVjYzg2
OTQuLjdhYjJhNDdhMTk0MDkwMTcyZTg5Y2MyYzA2MTYzN2Y3ODdiYmE3ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCkBAIC02Myw3ICs2Myw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgcHJlZmVycmVkQ29udGVudExvZ2lj
YWxXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5
b3V0VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCA9IDA7CiAKLSAgICB2b2lkIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICBM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFJlbmRlck9iamVjdCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91
dENoaWxkcmVuKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAppbmRleCBhMGRkZDc1MDFkZGY4NzFhYmFmZDBlMDUwMzE4M2U4NjllNDM5
OWM4Li5kODA3MjFmZWEwODg5YzFiZTgyODI3YmY5ZDc4MWFjOTI4YjMwOWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0yMTIsOSArMjEyLDkgQEAgYm9vbCBS
ZW5kZXJWaWV3OjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGwKICAgICByZXR1cm4gcmVzdWx0TGF5ZXI7CiB9CiAKLXZvaWQgUmVu
ZGVyVmlldzo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBM
YXlvdXRVbml0LCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBj
b25zdAorUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyVmlldzo6
Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0
KSBjb25zdAogewotICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gIXNob3VsZFVzZVByaW50
aW5nTGF5b3V0KCkgPyBMYXlvdXRVbml0KHZpZXdMb2dpY2FsSGVpZ2h0KCkpIDogbG9naWNhbEhl
aWdodDsKKyAgICByZXR1cm4geyAhc2hvdWxkVXNlUHJpbnRpbmdMYXlvdXQoKSA/IExheW91dFVu
aXQodmlld0xvZ2ljYWxIZWlnaHQoKSkgOiBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0KCksIENv
bXB1dGVkTWFyZ2luVmFsdWVzKCkgfTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3Ojp1cGRhdGVMb2dp
Y2FsV2lkdGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggOGFjMDNk
NzFhMjk5NWFkODc3ZDY0MTVkZDg2MDkwNWE2N2UzMTU1Ni4uY2QxNjY4NTNjYWE5YjEwOTFkMDNi
NGNiOWVkOGViYmNhMGYyMWJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvbXB1
dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsSGVpZ2h0KEF2YWlsYWJsZUxvZ2lj
YWxIZWlnaHRUeXBlKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggMTA5NWQy
NGUxMTIxOWI2MjI3YzhjMmQ2OWUxNmYzMTc0YzVhMTBiMi4uYjMxZjAyMTFjM2UwZGFjNmY0MjQ2
YTc5MTM4ODdmYTM2ZGM5NGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xMjIsMTMgKzEyMiwxMiBA
QCB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiAgICAg
c2V0V2lkdGgoc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYobV92aWV3cG9ydC53aWR0aCgpKSkpOwog
fQogCi12b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExh
eW91dFVuaXQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFs
dWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKK1JlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExh
eW91dFVuaXQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
SW52ZXN0aWdhdGUgaW4gc2l6ZSByb3VuZGluZyBpc3N1ZXMKICAgICAvLyBGSVhNRTogUmVtb3Zl
IHVubmVjZXNzYXJ5IHJvdW5kaW5nIHdoZW4gbGF5b3V0IGlzIG9mZiBpbnRzOiB3ZWJraXQub3Jn
L2IvNjM2NTYKICAgICAvLyBGSVhNRTogSXMgdGhpcyBjb3JyZWN0IGZvciB2ZXJ0aWNhbCB3cml0
aW5nIG1vZGU/Ci0gICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBzdGF0aWNfY2FzdDxpbnQ+
KHJvdW5kZihtX3ZpZXdwb3J0LmhlaWdodCgpKSk7Ci0gICAgY29tcHV0ZWRWYWx1ZXMubV9wb3Np
dGlvbiA9IGxvZ2ljYWxUb3A7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYo
bV92aWV3cG9ydC5oZWlnaHQoKSkpLCBsb2dpY2FsVG9wLCBDb21wdXRlZE1hcmdpblZhbHVlcygp
IH07CiB9CiAKIHZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6bGF5b3V0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgK
aW5kZXggMzUzMzNiMTNhMDNiYjRhYzY5NGYwYjlmODhkODE2NGY1YWYzNWIzNi4uMTAxMTM1M2E1
ZWVhOTg0YWI2NjU5MDc0ZWJmZjcxYjFiMWZlYzliYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmgKQEAgLTYyLDcgKzYy
LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QiOyB9CiAKICAgICB2b2lkIHVwZGF0
ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQo
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOworICAgIExvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZTsK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297292</attachid>
            <date>2016-12-15 20:00:39 -0800</date>
            <delta_ts>2016-12-15 20:38:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165789-20161215195946.patch</filename>
            <type>text/plain</type>
            <size>37782</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNkZmY2Njc0YjhiODNh
OTQzNzNmMzdlMDAxYzMyNmU3YTM4NWFlYy4uMGZmZGU2MDc2NmM4NzgzZTA1MmNkZGNiZDZmMDA4
ZTBmNjIxMDllZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE2LTEyLTE1ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQncyBjb21wdXRlZFZhbHVlcyBvdXQgYXJndW1lbnQgdG8gdGhlIHJldHVybiB2
YWx1ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NTc4OQorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBObyBj
aGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXJDb250YWluZXI6
OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9tYWMvSW1hZ2VD
b250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2VDb250cm9sc0J1dHRvbjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2VDb250cm9sczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6Y29tcHV0ZUJsb2NrUHJlZmVycmVkTG9naWNhbFdpZHRocyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6ZXN0aW1hdGVSZWdpb25SYW5nZUZvckJveENoaWxkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJsb2NrRmxvdzo6Y2hlY2tGb3JQYWdpbmF0aW9uTG9naWNhbEhlaWdodENoYW5nZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnVwZGF0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94
Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNv
bXB1dGVQZXJjZW50YWdlTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRVc2luZyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpDb21wdXRl
ZE1hcmdpblZhbHVlczo6Q29tcHV0ZWRNYXJnaW5WYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXM6OkxvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpt
YWluQXhpc0NvbnRlbnRFeHRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhy
ZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1dGVMb2dp
Y2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpc3RCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZXRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZXRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0
aUNvbHVtblNldDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQcm9ncmVz
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJQcm9ncmVzczo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0Q29udHJvbDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdGb3JlaWduT2JqZWN0Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg6CisKIDIwMTYtMTItMTUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgSFRNTCB2YWxpZGF0
aW9uIGJ1YmJsZSdzIHN0YXRlIGlzIHVwZGF0ZWQgYWZ0ZXIgbGF5b3V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA5YWY3MzUy
MDczNzJjNjAxMDBlODg4MzIxMTZhYTJhYjQ5NGU2OTg5Li45YjEwMmI5NzhkZDZjYmI5YjZiMjg1
M2IzYTBkZDJiNmViYzIwNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTExOSwxNCArMTE5LDE0IEBAIHB1YmxpYzoKICAg
ICB9CiAKIHB1YmxpYzoKLSAgICB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQg
bG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0
ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICBib29sIGlzRmxleGlibGVCb3hJbXBsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotdm9pZCBSZW5kZXJTbGlkZXJD
b250YWluZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1
dGVkVmFsdWVzKSBjb25zdAorUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMg
UmVuZGVyU2xpZGVyQ29udGFpbmVyOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3QKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpLT5zaGFkb3dIb3N0KCkpOwogICAgIGF1dG8mIGlucHV0ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKmVsZW1lbnQoKS0+c2hhZG93SG9zdCgpKTsKQEAgLTE0NiwxMyArMTQ2
LDEyIEBAIHZvaWQgUmVuZGVyU2xpZGVyQ29udGFpbmVyOjpjb21wdXRlTG9naWNhbEhlaWdodChM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91CiAgICAgICAgIGlmICh6b29tRmFjdG9yICE9
IDEuMCkKICAgICAgICAgICAgIHRyYWNrSGVpZ2h0ICo9IHpvb21GYWN0b3I7CiAKLSAgICAgICAg
UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCh0cmFja0hlaWdodCwgbG9naWNhbFRvcCwg
Y29tcHV0ZWRWYWx1ZXMpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBSZW5kZXJC
b3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KHRyYWNrSGVpZ2h0LCBsb2dpY2FsVG9wKTsKICAgICB9
CiAjZW5kaWYKICAgICBpZiAoaXNWZXJ0aWNhbCkKICAgICAgICAgbG9naWNhbEhlaWdodCA9IFJl
bmRlclNsaWRlcjo6ZGVmYXVsdFRyYWNrTGVuZ3RoOwotICAgIFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCwgY29tcHV0ZWRWYWx1ZXMpOwor
ICAgIHJldHVybiBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQs
IGxvZ2ljYWxUb3ApOwogfQogCiB2b2lkIFJlbmRlclNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
QnV0dG9uRWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1h
Z2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCmluZGV4IDRkMWMzNDVjOGY0NDNlZjIwMWEy
MzI0MzE4Njk1MjAyMDFjOTQzM2QuLjk2Y2QyZjUyMzQwZTNiY2UwOGM0MDViNjdkZTFkZjExN2Nk
ZmIyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNv
bnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcApAQCAtNTAsNyArNTAsNyBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0
ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2lj
YWxUb3ApIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uIjsgfQogICAg
IGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzMsMTIgKzczLDEyIEBAIHZvaWQgUmVuZGVySW1hZ2VD
b250cm9sc0J1dHRvbjo6dXBkYXRlTG9naWNhbFdpZHRoKCkKICAgICBzZXRMb2dpY2FsV2lkdGgo
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYW1lU2l6ZS53aWR0aCgpIDogZnJhbWVTaXpl
LmhlaWdodCgpKTsKIH0KIAotdm9pZCBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpjb21wdXRl
TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNh
bFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QK
K1JlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlckltYWdlQ29udHJv
bHNCdXR0b246OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdAogewotICAgIFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCwgY29tcHV0ZWRWYWx1ZXMpOwot
CisgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCk7CiAgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0
aGVtZSgpLmltYWdlQ29udHJvbHNCdXR0b25TaXplKCp0aGlzKTsKICAgICBjb21wdXRlZFZhbHVl
cy5tX2V4dGVudCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmcmFtZVNpemUuaGVpZ2h0
KCkgOiBmcmFtZVNpemUud2lkdGgoKTsKKyAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiB9CiAK
IEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjOjpJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVu
dE1hYyhEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCmluZGV4
IGY0NzlkMjg4MDgwMTI0NGRmZjg3ZGI3MzdiMjgxYWRjZmI5NDY2ZWMuLjNhYmE5MjJmNjQ2NjZl
M2E3Y2IwYjY0YjA2Yzg5YjI5NGU1NTUwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuY3Bw
CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxv
Z2ljYWxXaWR0aCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRl
bnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOworICAgIExvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQs
IExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckltYWdlQ29udHJv
bHMiOyB9CiAgICAgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02OSwxNSArNjksMTUgQEAgdm9pZCBS
ZW5kZXJJbWFnZUNvbnRyb2xzOjp1cGRhdGVMb2dpY2FsV2lkdGgoKQogICAgIHNldExvZ2ljYWxX
aWR0aChkb3duY2FzdDxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKS5sb2dpY2FsV2lkdGgoKSk7CiB9
CiAKLXZvaWQgUmVuZGVySW1hZ2VDb250cm9sczo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CitSZW5kZXJCb3g6OkxvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJJbWFnZUNvbnRyb2xzOjpjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29u
c3QKIHsKLSAgICBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQs
IGxvZ2ljYWxUb3AsIGNvbXB1dGVkVmFsdWVzKTsKLQorICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMg
PSBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxvZ2ljYWxU
b3ApOwogICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gZWxlbWVudCgpLT5zaGFkb3dIb3N0
KCktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKnJlbmRlcmVyKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiAKICAgICBjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCA9IGRvd25jYXN0PFJlbmRlckltYWdlPigqcmVuZGVyZXIpLmxv
Z2ljYWxIZWlnaHQoKTsKKyAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiB9CiAKIFJlZlB0cjxJ
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQ+IEltYWdlQ29udHJvbHNSb290RWxlbWVudDo6dHJ5Q3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IGMyODI2YWE5OGFlYTA3OWI0NDczYWYyN2ZlOWEwNDhlZjJlMzhkMDUuLjEy
MmQxN2Q3M2JkODU3Nzk0NzA1ZmZmZGQ4Y2NiMjZiY2MyY2FkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjc5Myw5ICsyNzkzLDcgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6Y29tcHV0ZUJsb2NrUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBt
aW5Mb2dpY2FsV2lkdGgKICAgICAgICAgTGF5b3V0VW5pdCBjaGlsZE1pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCwgY2hpbGRNYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGg7CiAgICAgICAgIGlmIChpczxS
ZW5kZXJCb3g+KCpjaGlsZCkgJiYgY2hpbGQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICAgICAgYXV0byYgY2hpbGRCb3gg
PSBkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZCk7Ci0gICAgICAgICAgICBMb2dpY2FsRXh0ZW50
Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7Ci0gICAgICAgICAgICBjaGlsZEJveC5jb21w
dXRlTG9naWNhbEhlaWdodChjaGlsZEJveC5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgp
LCAwLCBjb21wdXRlZFZhbHVlcyk7Ci0gICAgICAgICAgICBjaGlsZE1pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCA9IGNoaWxkTWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gY29tcHV0ZWRWYWx1ZXMu
bV9leHRlbnQ7CisgICAgICAgICAgICBjaGlsZE1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNo
aWxkTWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gY2hpbGRCb3guY29tcHV0ZUxvZ2ljYWxIZWln
aHQoY2hpbGRCb3guYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSwgMCkubV9leHRlbnQ7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjaGlsZE1pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCA9IGNoaWxkLT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgICAgIGNo
aWxkTWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxX
aWR0aCgpOwpAQCAtMzYzOSw5ICszNjM3LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6ZXN0aW1hdGVS
ZWdpb25SYW5nZUZvckJveENoaWxkKGNvbnN0IFJlbmRlckJveCYgYm94KSBjb25zdAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGVzdGlt
YXRlZFZhbHVlczsKLSAgICBib3guY29tcHV0ZUxvZ2ljYWxIZWlnaHQoUmVuZGVyRmxvd1RocmVh
ZDo6bWF4TG9naWNhbEhlaWdodCgpLCBsb2dpY2FsVG9wRm9yQ2hpbGQoYm94KSwgZXN0aW1hdGVk
VmFsdWVzKTsKLQorICAgIGF1dG8gZXN0aW1hdGVkVmFsdWVzID0gYm94LmNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KFJlbmRlckZsb3dUaHJlYWQ6Om1heExvZ2ljYWxIZWlnaHQoKSwgbG9naWNhbFRvcEZv
ckNoaWxkKGJveCkpOwogICAgIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UmVnaW9uID0gYm94Lm9mZnNldEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKTsKICAgICBSZW5k
ZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0
aGlzLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24sIHRydWUpOwogICAgIFJlbmRl
clJlZ2lvbiogZW5kUmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRCbG9ja09mZnNldCh0aGlz
LCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RSZWdpb24gKyBlc3RpbWF0ZWRWYWx1ZXMubV9l
eHRlbnQsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAppbmRleCA4ZTIxNzhkOTlmNThjOTc3OWMyYTIzYzY0ZTJkYjhlZGFlM2ZkMjBhLi41NmRj
ODY4ODBiN2ZjZjcxNzAzODljZGQ0OTJiMzI2OTM1YTEwNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzkzMyw4ICszOTMzLDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmNoZWNrRm9yUGFnaW5hdGlvbkxvZ2ljYWxIZWlnaHRDaGFuZ2Uo
Ym9vbCYgcmVsYXlvdXRDaGlsZHIKICAgICBpZiAoUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFk
KiBmbG93VGhyZWFkID0gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCkpIHsKICAgICAgICAgTGF5b3V0
VW5pdCBuZXdDb2x1bW5IZWlnaHQ7CiAgICAgICAgIGlmIChoYXNEZWZpbml0ZUxvZ2ljYWxIZWln
aHQoKSB8fCB2aWV3KCkuZnJhbWVWaWV3KCkucGFnaW5hdGlvbigpLm1vZGUgIT0gUGFnaW5hdGlv
bjo6VW5wYWdpbmF0ZWQpIHsKLSAgICAgICAgICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVl
cyBjb21wdXRlZFZhbHVlczsKLSAgICAgICAgICAgIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQoKSwgbG9naWNhbFRvcCgpLCBjb21wdXRlZFZhbHVlcyk7CisgICAgICAgICAgICBhdXRv
IGNvbXB1dGVkVmFsdWVzID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCgpLCBsb2dp
Y2FsVG9wKCkpOwogICAgICAgICAgICAgbmV3Q29sdW1uSGVpZ2h0ID0gc3RkOjptYXg8TGF5b3V0
VW5pdD4oY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgLSBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhl
aWdodCgpIC0gc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpLCAwKTsKICAgICAgICAgICAgIGlmIChm
bG93VGhyZWFkLT5jb2x1bW5IZWlnaHRBdmFpbGFibGUoKSAhPSBuZXdDb2x1bW5IZWlnaHQpCiAg
ICAgICAgICAgICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDFkNzM4NmEwYjlhYjU4NzMyZWM2M2E0Yzc3ZTUwZTBi
NzU0OGZhMDIuLmY0NDcxODAxYzg3YTc1Y2U0MjNiMmI4OGJlMDY3MDU1MTBhOTZlZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0yNzc4LDIzICsyNzc4LDIyIEBA
IHN0YXRpYyBib29sIHNob3VsZEZsaXBCZWZvcmVBZnRlck1hcmdpbnMoY29uc3QgUmVuZGVyU3R5
bGUmIGNvbnRhaW5pbmdCbG9ja1N0eWxlCiAKIHZvaWQgUmVuZGVyQm94Ojp1cGRhdGVMb2dpY2Fs
SGVpZ2h0KCkKIHsKLSAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1
ZXM7Ci0gICAgY29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgpLCBsb2dpY2FsVG9w
KCksIGNvbXB1dGVkVmFsdWVzKTsKLQorICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBjb21wdXRl
TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCksIGxvZ2ljYWxUb3AoKSk7CiAgICAgc2V0TG9n
aWNhbEhlaWdodChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgc2V0TG9naWNhbFRvcChj
b21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uKTsKICAgICBzZXRNYXJnaW5CZWZvcmUoY29tcHV0ZWRW
YWx1ZXMubV9tYXJnaW5zLm1fYmVmb3JlKTsKICAgICBzZXRNYXJnaW5BZnRlcihjb21wdXRlZFZh
bHVlcy5tX21hcmdpbnMubV9hZnRlcik7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9n
aWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRv
cCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKK1Jl
bmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3ApIGNvbnN0CiB7CisgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFs
dWVzOwogICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID0gbG9naWNhbEhlaWdodDsKICAgICBj
b21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uID0gbG9naWNhbFRvcDsKIAogICAgIC8vIENlbGwgaGVp
Z2h0IGlzIG1hbmFnZWQgYnkgdGhlIHRhYmxlIGFuZCBpbmxpbmUgbm9uLXJlcGxhY2VkIGVsZW1l
bnRzIGRvIG5vdCBzdXBwb3J0IGEgaGVpZ2h0IHByb3BlcnR5LgogICAgIGlmIChpc1RhYmxlQ2Vs
bCgpIHx8IChpc0lubGluZSgpICYmICFpc1JlcGxhY2VkKCkpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBjb21wdXRlZFZhbHVlczsKIAogICAgIExlbmd0aCBoOwogICAgIGlmIChp
c091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKQEAgLTI4MTgsNyArMjgxNyw3IEBAIHZvaWQgUmVuZGVy
Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91
dFVuaXQgbG9naWNhCiAgICAgICAgICAgICAgICAgICAgIHNob3VsZEZsaXBCZWZvcmVBZnRlciA/
IGNvbXB1dGVkVmFsdWVzLm1fbWFyZ2lucy5tX2FmdGVyIDogY29tcHV0ZWRWYWx1ZXMubV9tYXJn
aW5zLm1fYmVmb3JlLAogICAgICAgICAgICAgICAgICAgICBzaG91bGRGbGlwQmVmb3JlQWZ0ZXIg
PyBjb21wdXRlZFZhbHVlcy5tX21hcmdpbnMubV9iZWZvcmUgOiBjb21wdXRlZFZhbHVlcy5tX21h
cmdpbnMubV9hZnRlcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBG
SVhNRTogQWNjb3VudCBmb3IgYmxvY2stZmxvdyBpbiBmbGV4aWJsZSBib3hlcy4KQEAgLTI5MDIs
NiArMjkwMSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhCiAgICAgICAgICAgICBjb21wdXRl
ZFZhbHVlcy5tX2V4dGVudCA9IHN0ZDo6bWF4KGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50LCB2aXNp
YmxlSGVpZ2h0IC0gbWFyZ2luc0JvcmRlcnNQYWRkaW5nKTsKICAgICAgICAgfQogICAgIH0KKyAg
ICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodFVzaW5nKFNpemVUeXBlIGhlaWdodFR5cGUs
IGNvbnN0IExlbmd0aCYgaGVpZ2h0LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGludHJpbnNp
Y0NvbnRlbnRIZWlnaHQpIGNvbnN0CkBAIC0zMDM5LDggKzMwMzksNyBAQCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJveDo6Y29tcHV0ZVBlcmNlbnRhZ2VMb2dpY2FsSGVpZ2h0KGNv
bnN0IExlbmd0aAogICAgIH0gZWxzZSBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkV2l0aFNwZWNp
ZmllZEhlaWdodCkgewogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGFmZmVjdCB0aGUg
YmxvY2snIGhlaWdodCgpIG1lbWJlciB2YXJpYWJsZSwgc2luY2UgdGhpcwogICAgICAgICAvLyBj
YW4gZ2V0IGNhbGxlZCB3aGlsZSB0aGUgYmxvY2sgaXMgc3RpbGwgbGF5aW5nIG91dCBpdHMga2lk
cy4KLSAgICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwot
ICAgICAgICBjYi0+Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoY2ItPmxvZ2ljYWxIZWlnaHQoKSwgMCwg
Y29tcHV0ZWRWYWx1ZXMpOworICAgICAgICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gY2ItPmNvbXB1
dGVMb2dpY2FsSGVpZ2h0KGNiLT5sb2dpY2FsSGVpZ2h0KCksIDApOwogICAgICAgICBhdmFpbGFi
bGVIZWlnaHQgPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAtIGNiLT5ib3JkZXJBbmRQYWRkaW5n
TG9naWNhbEhlaWdodCgpIC0gY2ItPnNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICB9IGVs
c2UgaWYgKGNiLT5pc1JlbmRlclZpZXcoKSkKICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gdmll
dygpLnBhZ2VPclZpZXdMb2dpY2FsSGVpZ2h0KCk7CkBAIC0zMTYwLDggKzMxNTksNyBAQCBMYXlv
dXRVbml0IFJlbmRlckJveDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodFVzaW5nKFNpemVU
eXBlIGhlaWdodFR5cGUsIExlbgogICAgICAgICAgICAgICAgICYmICEoY29udGFpbmVyLT5zdHls
ZSgpLnRvcCgpLmlzQXV0bygpIHx8IGNvbnRhaW5lci0+c3R5bGUoKS5ib3R0b20oKS5pc0F1dG8o
KSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihj
b250YWluZXItPmlzUmVuZGVyQmxvY2soKSk7CiAgICAgICAgICAgICAgICAgYXV0byYgYmxvY2sg
PSBkb3duY2FzdDxSZW5kZXJCbG9jaz4oKmNvbnRhaW5lcik7Ci0gICAgICAgICAgICAgICAgTG9n
aWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwotICAgICAgICAgICAgICAg
IGJsb2NrLmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGJsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgMCwgY29t
cHV0ZWRWYWx1ZXMpOworICAgICAgICAgICAgICAgIGF1dG8gY29tcHV0ZWRWYWx1ZXMgPSBibG9j
ay5jb21wdXRlTG9naWNhbEhlaWdodChibG9jay5sb2dpY2FsSGVpZ2h0KCksIDApOwogICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgbmV3Q29udGVudEhlaWdodCA9IGNvbXB1dGVkVmFsdWVzLm1f
ZXh0ZW50IC0gYmxvY2suYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSAtIGJsb2NrLnNj
cm9sbGJhckxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IG5ld0hl
aWdodCA9IGJsb2NrLmFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKG5l
d0NvbnRlbnRIZWlnaHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBhZGp1c3RDb250ZW50Qm94
TG9naWNhbEhlaWdodEZvckJveFNpemluZyh2YWx1ZUZvckxlbmd0aChsb2dpY2FsSGVpZ2h0LCBu
ZXdIZWlnaHQpKTsKQEAgLTMyMzMsOCArMzIzMSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94Ojph
dmFpbGFibGVMb2dpY2FsSGVpZ2h0VXNpbmcoY29uc3QgTGVuZ3RoJiBoLCBBdmFpbGFibGVMb2dp
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2NTAwCiAg
ICAgaWYgKGlzPFJlbmRlckJsb2NrPigqdGhpcykgJiYgaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkg
JiYgc3R5bGUoKS5oZWlnaHQoKS5pc0F1dG8oKSAmJiAhKHN0eWxlKCkudG9wKCkuaXNBdXRvKCkg
fHwgc3R5bGUoKS5ib3R0b20oKS5pc0F1dG8oKSkpIHsKICAgICAgICAgUmVuZGVyQmxvY2smIGJs
b2NrID0gY29uc3RfY2FzdDxSZW5kZXJCbG9jayY+KGRvd25jYXN0PFJlbmRlckJsb2NrPigqdGhp
cykpOwotICAgICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7
Ci0gICAgICAgIGJsb2NrLmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGJsb2NrLmxvZ2ljYWxIZWlnaHQo
KSwgMCwgY29tcHV0ZWRWYWx1ZXMpOworICAgICAgICBhdXRvIGNvbXB1dGVkVmFsdWVzID0gYmxv
Y2suY29tcHV0ZUxvZ2ljYWxIZWlnaHQoYmxvY2subG9naWNhbEhlaWdodCgpLCAwKTsKICAgICAg
ICAgTGF5b3V0VW5pdCBuZXdDb250ZW50SGVpZ2h0ID0gY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQg
LSBibG9jay5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIC0gYmxvY2suc2Nyb2xsYmFy
TG9naWNhbEhlaWdodCgpOwogICAgICAgICByZXR1cm4gYWRqdXN0Q29udGVudEJveExvZ2ljYWxI
ZWlnaHRGb3JCb3hTaXppbmcobmV3Q29udGVudEhlaWdodCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGFlMWRlYTk5YjViMjMwZWY4Nzk2YTY5NzIxNjVjN2Vl
MDA5Y2ZiYzcuLmQwZmE3YjJhNTc2Mjc5ZGEwMTVmNjI4NTdhNGJiNGMzODdiNzgxMmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTMzNSwyNSArMzM1LDEyIEBAIHB1Ymxp
YzoKICAgICBMYXlvdXRVbml0IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KSBjb25zdDsKIAogICAgIHN0cnVj
dCBDb21wdXRlZE1hcmdpblZhbHVlcyB7Ci0gICAgICAgIENvbXB1dGVkTWFyZ2luVmFsdWVzKCkK
LSAgICAgICAgICAgIDogbV9iZWZvcmUoMCkKLSAgICAgICAgICAgICwgbV9hZnRlcigwKQotICAg
ICAgICAgICAgLCBtX3N0YXJ0KDApCi0gICAgICAgICAgICAsIG1fZW5kKDApCi0gICAgICAgIHsK
LSAgICAgICAgfQogICAgICAgICBMYXlvdXRVbml0IG1fYmVmb3JlOwogICAgICAgICBMYXlvdXRV
bml0IG1fYWZ0ZXI7CiAgICAgICAgIExheW91dFVuaXQgbV9zdGFydDsKICAgICAgICAgTGF5b3V0
VW5pdCBtX2VuZDsKICAgICB9OwogICAgIHN0cnVjdCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1
ZXMgewotICAgICAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMoKQotICAgICAgICAgICAg
OiBtX2V4dGVudCgwKQotICAgICAgICAgICAgLCBtX3Bvc2l0aW9uKDApCi0gICAgICAgIHsKLSAg
ICAgICAgfQotCiAgICAgICAgIExheW91dFVuaXQgbV9leHRlbnQ7CiAgICAgICAgIExheW91dFVu
aXQgbV9wb3NpdGlvbjsKICAgICAgICAgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMgbV9tYXJnaW5zOwpA
QCAtMzk5LDcgKzM4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dp
Y2FsV2lkdGgoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodCgpOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikg
Y29uc3Q7CisgICAgdmlydHVhbCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3ApIGNvbnN0OwogCiAgICAgUmVuZGVyQm94UmVnaW9uSW5mbyogcmVuZGVyQm94UmVnaW9uSW5m
byhSZW5kZXJSZWdpb24qLCBSZW5kZXJCb3hSZWdpb25JbmZvRmxhZ3MgPSBDYWNoZVJlbmRlckJv
eFJlZ2lvbkluZm8pIGNvbnN0OwogICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9u
KExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYsIFJlbmRlclJlZ2lvbiogPSBudWxscHRyKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3Bw
CmluZGV4IDliZTM3ZTgzYzMyY2UzMThiMmM5N2Q0ODIxZTI1YzUyMzBlMjYwN2UuLjgyYjc1YjE4
YzY3ZDMxYzg2YWU3NmZiZWMxMTg3ZDZkODQ4NTY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtNDQyLDEyICs0NDIsMTEgQEAgTGF5
b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Y3Jvc3NBeGlzQ29udGVudEV4dGVudCgpIGNvbnN0
CiBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjptYWluQXhpc0NvbnRlbnRFeHRlbnQoTGF5
b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodCkKIHsKICAgICBpZiAoaXNDb2x1bW5GbG93KCkp
IHsKLSAgICAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVkVmFsdWVzOwog
ICAgICAgICBMYXlvdXRVbml0IGJvcmRlclBhZGRpbmdBbmRTY3JvbGxiYXIgPSBib3JkZXJBbmRQ
YWRkaW5nTG9naWNhbEhlaWdodCgpICsgc2Nyb2xsYmFyTG9naWNhbEhlaWdodCgpOwogICAgICAg
ICBpZiAoY29udGVudExvZ2ljYWxIZWlnaHQgPiBMYXlvdXRVbml0OjptYXgoKSAtIGJvcmRlclBh
ZGRpbmdBbmRTY3JvbGxiYXIpCiAgICAgICAgICAgICBjb250ZW50TG9naWNhbEhlaWdodCAtPSBi
b3JkZXJQYWRkaW5nQW5kU2Nyb2xsYmFyOwogICAgICAgICBMYXlvdXRVbml0IGJvcmRlckJveExv
Z2ljYWxIZWlnaHQgPSBjb250ZW50TG9naWNhbEhlaWdodCArIGJvcmRlclBhZGRpbmdBbmRTY3Jv
bGxiYXI7Ci0gICAgICAgIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KGJvcmRlckJveExvZ2ljYWxIZWln
aHQsIGxvZ2ljYWxUb3AoKSwgY29tcHV0ZWRWYWx1ZXMpOworICAgICAgICBhdXRvIGNvbXB1dGVk
VmFsdWVzID0gY29tcHV0ZUxvZ2ljYWxIZWlnaHQoYm9yZGVyQm94TG9naWNhbEhlaWdodCwgbG9n
aWNhbFRvcCgpKTsKICAgICAgICAgaWYgKGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50ID09IExheW91
dFVuaXQ6Om1heCgpKQogICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
OwogICAgICAgICByZXR1cm4gc3RkOjptYXgoTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDApLCBjb21w
dXRlZFZhbHVlcy5tX2V4dGVudCAtIGJvcmRlclBhZGRpbmdBbmRTY3JvbGxiYXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IDQ4MGRhNWYw
OWZmMDdiNjZlOGExMDE1Y2U3YjhiODk1NGUyZjdhN2QuLmQwNWE1NWZjYTg2NDZjZDA3ZjY4NDRk
YjVmMDc5OGMxMGViZTNmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAKQEAgLTM0NCw4ICszNDQsOSBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiAgICAgfQogfQogCi12b2lkIFJlbmRlckZsb3dUaHJlYWQ6
OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQsIExheW91dFVuaXQgbG9naWNhbFRvcCwg
TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKK1JlbmRl
ckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlckZsb3dUaHJlYWQ6OmNvbXB1
dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3QK
IHsKKyAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZWRWYWx1ZXM7CiAgICAg
Y29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IGxvZ2ljYWxUb3A7CiAgICAgY29tcHV0ZWRWYWx1
ZXMubV9leHRlbnQgPSAwOwogCkBAIC0zNTgsOCArMzU5LDkgQEAgdm9pZCBSZW5kZXJGbG93VGhy
ZWFkOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIEwKIAogICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIHRoZSBtYXhpbXVtIHNpemUgdGhlcmUn
cyBubyBwb2ludCBpbiBnb2luZyBmdXJ0aGVyLgogICAgICAgICBpZiAoY29tcHV0ZWRWYWx1ZXMu
bV9leHRlbnQgPT0gbWF4Rmxvd1NpemUpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7CiAgICAgfQorICAgIHJldHVybiBjb21wdXRlZFZhbHVl
czsKIH0KIAogYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggZjA5NTczODQ2ZjBlZjQ0ZTcwZmFiOTlj
MWNjMzRlNmY1NWZlZjE3Yi4uYTY5ZjczNTc5MTQ1NTM1ZDEwMmU2ZDIzZDMyY2ExNWQ3NDA2ZTFl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJSZWdpb25MaXN0JiByZW5kZXJS
ZWdpb25MaXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25MaXN0OyB9CiAKICAgICB2b2lkIHVw
ZGF0ZUxvZ2ljYWxXaWR0aCgpIGZpbmFsOwotICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQo
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOworICAgIExvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDJjNmE4ZWU3YzY1YzYxMmE4NTg2
MmQ0ZTFiNTc2MDc0MmZmMTAyODYuLmFmNzY1MmFmNWIwNTUwMGYwNWQ0NWE1ZjVkMjM2MGQ2NTAz
NzZjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAg
LTI1OCwxMCArMjU4LDEwIEBAIExheW91dFVuaXQgUmVuZGVyTGlzdEJveDo6bGlzdEhlaWdodCgp
IGNvbnN0CiAgICAgcmV0dXJuIGl0ZW1IZWlnaHQoKSAqIG51bUl0ZW1zKCkgLSByb3dTcGFjaW5n
OwogfQogCi12b2lkIFJlbmRlckxpc3RCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVu
aXQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBj
b21wdXRlZFZhbHVlcykgY29uc3QKK1JlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFs
dWVzIFJlbmRlckxpc3RCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQsIExheW91
dFVuaXQgbG9naWNhbFRvcCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IGhlaWdodCA9IGl0ZW1I
ZWlnaHQoKSAqIHNpemUoKSAtIHJvd1NwYWNpbmcgKyB2ZXJ0aWNhbEJvcmRlckFuZFBhZGRpbmdF
eHRlbnQoKTsKLSAgICBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGhlaWdodCwgbG9n
aWNhbFRvcCwgY29tcHV0ZWRWYWx1ZXMpOworICAgIHJldHVybiBSZW5kZXJCb3g6OmNvbXB1dGVM
b2dpY2FsSGVpZ2h0KGhlaWdodCwgbG9naWNhbFRvcCk7CiB9CiAKIGludCBSZW5kZXJMaXN0Qm94
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxp
bmVQb3NpdGlvbk1vZGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guaAppbmRleCA3MzAwM2U5OWZlMmE4YjdlYTk5ZTQ2M2NhMmI5Zjc2YTM3YzhjMjU5Li5mNjc4
ZDRjMzJmZGVmNjVlMDE2Y2E5NzM3ODQzNjNmODZlZTU3ZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxX
aWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgaW50IGJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyYpIGNvbnN0IG92ZXJyaWRlOworICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBj
b21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQg
bG9naWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAppbmRleCBjOTY5MWI1
ODUyZTE0YzAzMDQyMzNkYjdmOTliMWNlZWM0YTcyYTlkLi45NmQ3OGI1YWJkNDkwYTUzMzIwZjI3
MTdlMDU5NDA2MTNkNDJkNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWV0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRl
ci5jcHAKQEAgLTU4LDEwICs1OCw5IEBAIHZvaWQgUmVuZGVyTWV0ZXI6OnVwZGF0ZUxvZ2ljYWxX
aWR0aCgpCiAgICAgc2V0TG9naWNhbFdpZHRoKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBm
cmFtZVNpemUud2lkdGgoKSA6IGZyYW1lU2l6ZS5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgUmVuZGVy
TWV0ZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVk
VmFsdWVzKSBjb25zdAorUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVu
ZGVyTWV0ZXI6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdAogewotICAgIFJlbmRlckJveDo6Y29tcHV0ZUxv
Z2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCwgY29tcHV0ZWRWYWx1ZXMpOwot
CisgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCk7CiAgICAgTGF5b3V0UmVjdCBmcmFtZSA9IGZy
YW1lUmVjdCgpOwogICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICBm
cmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQpOwpAQCAtNjksNiArNjgsNyBA
QCB2b2lkIFJlbmRlck1ldGVyOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIExheW91dFVuaXQgbG9naQogICAgICAgICBmcmFtZS5zZXRXaWR0aChjb21wdXRl
ZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgSW50U2l6ZSBmcmFtZVNpemUgPSB0aGVtZSgpLm1ldGVy
U2l6ZUZvckJvdW5kcygqdGhpcywgc25hcHBlZEludFJlY3QoZnJhbWUpKTsKICAgICBjb21wdXRl
ZFZhbHVlcy5tX2V4dGVudCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBmcmFtZVNpemUu
aGVpZ2h0KCkgOiBmcmFtZVNpemUud2lkdGgoKTsKKyAgICByZXR1cm4gY29tcHV0ZWRWYWx1ZXM7
CiB9CiAKIHZvaWQgUmVuZGVyTWV0ZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKaW5kZXggY2NiNzk5OGIyNWIxNTQ3NGRkYjQ1MmE0OWU1
YmJmZTk2NmYyMTRjMy4uZGE5NTQ0NGRlZmQ5YTE5NmFmNzVmOTI4YzY2MzQ2NDNmNWIzZDNiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKQEAgLTM5LDcgKzM5LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWV0ZXIiOyB9CiAgICAgYm9vbCBpc01ldGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAppbmRleCA2OTE1
MzkzYmI2N2FjNDEwZDZiYzQ0YmRhNmIyODIxOTU0ZTA2OWRiLi5mZmYwYjZiNWU3Mzc0ZTI0ODhi
ZGJhNjQ2NGY2NDIwNThmZmFjZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcApAQCAtNDk5LDExICs0OTks
MTAgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OmZsb3dUaHJlYWREZXNjZW5k
YW50Qm94TGFpZE91dChSZW5kZXJCb3gqIGRlc2MKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFs
dWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QKK1JlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1
dGVkVmFsdWVzIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6Y29tcHV0ZUxvZ2ljYWxIZWln
aHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0
CiB7CiAgICAgLy8gV2Ugc2ltcGx5IHJlbWFpbiBhdCBvdXIgaW50cmluc2ljIGhlaWdodC4KLSAg
ICBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCA9IGxvZ2ljYWxIZWlnaHQ7Ci0gICAgY29tcHV0ZWRW
YWx1ZXMubV9wb3NpdGlvbiA9IGxvZ2ljYWxUb3A7CisgICAgcmV0dXJuIHsgbG9naWNhbEhlaWdo
dCwgbG9naWNhbFRvcCwgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMoKSB9OwogfQogCiBMYXlvdXRVbml0
IFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6aW5pdGlhbExvZ2ljYWxXaWR0aCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5G
bG93VGhyZWFkLmgKaW5kZXggODg0M2MxMzBkODc3MDM1MjFhYmFmODVlODRjYWZhMGI0MjBjZDA2
Zi4uZGZkZmZjZTI4YTE2ZTlkYTM5ZDA3MDZlNDlmMmUzOWU4NzAxYTFkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQu
aApAQCAtMTEzLDcgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbG93VGhyZWFkRGVzY2Vu
ZGFudEluc2VydGVkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmxvd1RocmVh
ZFJlbGF0aXZlV2lsbEJlUmVtb3ZlZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKICAgICB2b2lk
IGZsb3dUaHJlYWREZXNjZW5kYW50Qm94TGFpZE91dChSZW5kZXJCb3gqKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNv
bnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgaW5pdGlhbExvZ2ljYWxXaWR0aCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UGFnZUJyZWFrKGNvbnN0IFJlbmRlckJsb2NrKiwgTGF5
b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgc3BhY2VTaG9ydGFnZSkgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChjb25zdCBSZW5kZXJCbG9jayosIExheW91dFVu
aXQgb2Zmc2V0LCBMYXlvdXRVbml0IG1pbkhlaWdodCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAppbmRleCA5MjEwZDc0
NmZmZjAxNWViMjc0MjEwOTI3ZTBlNDVlMTQyNTdlZTExLi5mNGRjOWY2YTU5NTk5NjMyMjEwNzk3
NTQyYWZlOTFiYWQ3Zjk3NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKQEAgLTQwMiwxMCArNDAyLDkgQEAgdm9pZCBSZW5kZXJN
dWx0aUNvbHVtblNldDo6bGF5b3V0KCkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQsIExheW91dFVuaXQgbG9naWNh
bFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJiBjb21wdXRlZFZhbHVlcykgY29uc3QK
K1JlbmRlckJveDo6TG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIFJlbmRlck11bHRpQ29sdW1u
U2V0Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0LCBMYXlvdXRVbml0IGxvZ2ljYWxU
b3ApIGNvbnN0CiB7Ci0gICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBtX2F2YWlsYWJsZUNv
bHVtbkhlaWdodDsKLSAgICBjb21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uID0gbG9naWNhbFRvcDsK
KyAgICByZXR1cm4geyBtX2F2YWlsYWJsZUNvbHVtbkhlaWdodCwgbG9naWNhbFRvcCwgQ29tcHV0
ZWRNYXJnaW5WYWx1ZXMoKSB9OwogfQogCiBMYXlvdXRVbml0IFJlbmRlck11bHRpQ29sdW1uU2V0
OjpjYWxjdWxhdGVNYXhDb2x1bW5IZWlnaHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCBhYjQwNzUxNThkZmNmMjgxM2E5
MTRhN2YyNGJkYTU2YjlhMzA3Yzk2Li5iMWFlMjBlY2EzMGYyNWY1OGQ2NDU1OTU5ZmUzOTAxYzQz
Y2U5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlD
b2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck11
bHRpQ29sdW1uU2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQg
bGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50
Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICBMb2dpY2FsRXh0ZW50Q29tcHV0
ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBM
YXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludE9i
amVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcAppbmRleCA5YTFmMjQwZmE1
ZjlhZmY4NzAxYzEzNDhjY2M1N2QzNmFiM2UwYjg0Li43MjliMzYwYTliY2NjMjRiZTJhNjIzODI0
YmY1NWMxMWM2MmVjYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUHJvZ3Jlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9n
cmVzcy5jcHAKQEAgLTU3LDEwICs1Nyw5IEBAIHZvaWQgUmVuZGVyUHJvZ3Jlc3M6OnVwZGF0ZUZy
b21FbGVtZW50KCkKICAgICBSZW5kZXJCbG9ja0Zsb3c6OnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9
CiAKLXZvaWQgUmVuZGVyUHJvZ3Jlc3M6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQg
bG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0
ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAorUmVuZGVyQm94OjpMb2dpY2FsRXh0ZW50
Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyUHJvZ3Jlc3M6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdAogewotICAg
IFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRv
cCwgY29tcHV0ZWRWYWx1ZXMpOwotCisgICAgYXV0byBjb21wdXRlZFZhbHVlcyA9IFJlbmRlckJv
eDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCk7CiAgICAg
TGF5b3V0UmVjdCBmcmFtZSA9IGZyYW1lUmVjdCgpOwogICAgIGlmIChpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQogICAgICAgICBmcmFtZS5zZXRIZWlnaHQoY29tcHV0ZWRWYWx1ZXMubV9leHRl
bnQpOwpAQCAtNjgsNiArNjcsNyBAQCB2b2lkIFJlbmRlclByb2dyZXNzOjpjb21wdXRlTG9naWNh
bEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbAogICAgICAgICBm
cmFtZS5zZXRXaWR0aChjb21wdXRlZFZhbHVlcy5tX2V4dGVudCk7CiAgICAgSW50U2l6ZSBmcmFt
ZVNpemUgPSB0aGVtZSgpLnByb2dyZXNzQmFyUmVjdEZvckJvdW5kcygqdGhpcywgc25hcHBlZElu
dFJlY3QoZnJhbWUpKS5zaXplKCk7CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgPSBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhbWVTaXplLmhlaWdodCgpIDogZnJhbWVTaXplLndp
ZHRoKCk7CisgICAgcmV0dXJuIGNvbXB1dGVkVmFsdWVzOwogfQogCiBkb3VibGUgUmVuZGVyUHJv
Z3Jlc3M6OmFuaW1hdGlvblByb2dyZXNzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclByb2dyZXNzLmgKaW5kZXggMDI5YjllY2MwNWNhNzFhMDc1ZDA2ZTc1OTY1MmY3OTc4
M2QyN2VkOC4uMDMxMjJkMjRlNjMxOTU2ODA5YzIwM2VhODM5YzAzZGFmOWNhNmE3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclByb2dyZXNzIjsgfQogICAgIGJvb2wgaXNQcm9ncmVzcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNh
bGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lk
IGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5p
dCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgY29tcHV0ZUxvZ2ljYWxIZWlnaHQo
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3ApIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCB1cGRh
dGVBbmltYXRpb25TdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKaW5kZXggMjMyNWRkOWRjMzk1ZjVlYWU3MmEyZjVlOTNiMDAwMzMxYjgw
YWU3Ny4uMTJmZGE4ZTY5M2FkYThhZTg4NjhjNmFlZWI5YWQxNmI3ZjBhMTIzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC05NSw3ICs5
NSw3IEBAIGludCBSZW5kZXJUZXh0Q29udHJvbDo6c2Nyb2xsYmFyVGhpY2tuZXNzKCkgY29uc3QK
ICAgICByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuc2Nyb2xsYmFyVGhpY2tuZXNzKCk7
CiB9CiAKLXZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50
Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAorUmVuZGVyQm94OjpMb2dpY2Fs
RXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyVGV4dENvbnRyb2w6OmNvbXB1dGVMb2dpY2FsSGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25z
dAogewogICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5uZXJUZXh0ID0gaW5uZXJU
ZXh0RWxlbWVudCgpOwogICAgIEFTU0VSVChpbm5lclRleHQpOwpAQCAtMTA5LDcgKzEwOSw3IEBA
IHZvaWQgUmVuZGVyVGV4dENvbnRyb2w6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQg
bG9naWNhbEhlaWdodCwgTGF5b3V0VW5pCiAgICAgICAgICAgICBsb2dpY2FsSGVpZ2h0ICs9IHNj
cm9sbGJhclRoaWNrbmVzcygpOwogICAgIH0KIAotICAgIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2lj
YWxIZWlnaHQobG9naWNhbEhlaWdodCwgbG9naWNhbFRvcCwgY29tcHV0ZWRWYWx1ZXMpOworICAg
IHJldHVybiBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQsIGxv
Z2ljYWxUb3ApOwogfQogCiB2b2lkIFJlbmRlclRleHRDb250cm9sOjpoaXRJbm5lclRleHRFbGVt
ZW50KEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggZDA5M2I3OTA1NjBiYWQ4
ZjUzMGM1NDE1YjNhMWRmYTZiNWNjODY5NC4uN2FiMmE0N2ExOTQwOTAxNzJlODljYzJjMDYxNjM3
Zjc4N2JiYTc4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBwcmVmZXJyZWRDb250ZW50TG9naWNhbFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoTGF5
b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWlnaHQpIGNvbnN0ID0g
MDsKIAotICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYp
IGNvbnN0IG92ZXJyaWRlOworICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRl
TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNh
bFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVjaWFsRXhj
bHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IGEwZGRkNzUwMWRkZjg3
MWFiYWZkMGUwNTAzMTgzZTg2OWU0Mzk5YzguLmQ4MDcyMWZlYTA4ODljMWJlODI4MjdiZjlkNzgx
YWM5MjhiMzA5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAg
LTIxMiw5ICsyMTIsOSBAQCBib29sIFJlbmRlclZpZXc6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbAogICAgIHJldHVybiByZXN1
bHRMYXllcjsKIH0KIAotdm9pZCBSZW5kZXJWaWV3Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyYgY29tcHV0ZWRWYWx1ZXMpIGNvbnN0CitSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyBSZW5kZXJWaWV3Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQsIExheW91dFVuaXQpIGNvbnN0CiB7Ci0gICAgY29tcHV0ZWRWYWx1ZXMubV9l
eHRlbnQgPSAhc2hvdWxkVXNlUHJpbnRpbmdMYXlvdXQoKSA/IExheW91dFVuaXQodmlld0xvZ2lj
YWxIZWlnaHQoKSkgOiBsb2dpY2FsSGVpZ2h0OworICAgIHJldHVybiB7ICFzaG91bGRVc2VQcmlu
dGluZ0xheW91dCgpID8gTGF5b3V0VW5pdCh2aWV3TG9naWNhbEhlaWdodCgpKSA6IGxvZ2ljYWxI
ZWlnaHQsIExheW91dFVuaXQoKSwgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMoKSB9OwogfQogCiB2b2lk
IFJlbmRlclZpZXc6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaAppbmRleCA4YWMwM2Q3MWEyOTk1YWQ4NzdkNjQxNWRkODYwOTA1YTY3ZTMxNTU2
Li5jZDE2Njg1M2NhYTliMTA5MWQwM2I0Y2I5ZWQ4ZWJiY2EwZjIxYmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92
ZXJyaWRlOwotICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2Fs
SGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVl
cyYpIGNvbnN0IG92ZXJyaWRlOworICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21w
dXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9n
aWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2lj
YWxIZWlnaHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcAppbmRleCAxMDk1ZDI0ZTExMjE5YjYyMjdjOGMyZDY5ZTE2ZjMxNzRjNWExMGIy
Li5iMzFmMDIxMWMzZTBkYWM2ZjQyNDZhNzkxMzg4N2ZhMzZkYzk0ZmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHAKQEAgLTEyMiwxMyArMTIyLDEyIEBAIHZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6dXBk
YXRlTG9naWNhbFdpZHRoKCkKICAgICBzZXRXaWR0aChzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZiht
X3ZpZXdwb3J0LndpZHRoKCkpKSk7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBM
b2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmIGNvbXB1dGVkVmFsdWVzKSBjb25zdAorUmVuZGVy
Qm94OjpMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBj
b25zdAogewogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBpbiBzaXplIHJvdW5kaW5nIGlzc3Vl
cwogICAgIC8vIEZJWE1FOiBSZW1vdmUgdW5uZWNlc3Nhcnkgcm91bmRpbmcgd2hlbiBsYXlvdXQg
aXMgb2ZmIGludHM6IHdlYmtpdC5vcmcvYi82MzY1NgogICAgIC8vIEZJWE1FOiBJcyB0aGlzIGNv
cnJlY3QgZm9yIHZlcnRpY2FsIHdyaXRpbmcgbW9kZT8KLSAgICBjb21wdXRlZFZhbHVlcy5tX2V4
dGVudCA9IHN0YXRpY19jYXN0PGludD4ocm91bmRmKG1fdmlld3BvcnQuaGVpZ2h0KCkpKTsKLSAg
ICBjb21wdXRlZFZhbHVlcy5tX3Bvc2l0aW9uID0gbG9naWNhbFRvcDsKKyAgICByZXR1cm4geyBz
dGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihtX3ZpZXdwb3J0LmhlaWdodCgpKSksIGxvZ2ljYWxUb3As
IENvbXB1dGVkTWFyZ2luVmFsdWVzKCkgfTsKIH0KIAogdm9pZCBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0OjpsYXlvdXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ZvcmVpZ25PYmplY3QuaAppbmRleCAzNTMzM2IxM2EwM2JiNGFjNjk0ZjBiOWY4OGQ4
MTY0ZjVhZjM1YjM2Li4xMDExMzUzYTVlZWE5ODRhYjY2NTkwNzRlYmZmNzFiMWIxZmVjOWJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVp
Z25PYmplY3QuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dCI7IH0KIAogICAgIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVu
aXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVMb2dpY2FsSGVpZ2h0
KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5z
Zm9ybSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9y
bSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>