<?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>233531</bug_id>
          
          <creation_ts>2021-11-26 15:31:38 -0800</creation_ts>
          <short_desc>[LFC][IFC] Decouple display box construction for bidi and non-bidi content</short_desc>
          <delta_ts>2021-11-27 09:53:23 -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>InRadar</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>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1818006</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-11-26 15:31:38 -0800</bug_when>
    <thetext>bidi display boxes with visual ordering may make the simple codepath more confusing than it should be</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818009</commentid>
    <comment_count>1</comment_count>
      <attachid>445210</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-11-26 15:52:27 -0800</bug_when>
    <thetext>Created attachment 445210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818037</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-27 09:52:13 -0800</bug_when>
    <thetext>Committed r286190 (244572@main): &lt;https://commits.webkit.org/244572@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445210.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818038</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-27 09:53:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/85780590&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445210</attachid>
            <date>2021-11-26 15:52:27 -0800</date>
            <delta_ts>2021-11-27 09:52:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233531-20211126155226.patch</filename>
            <type>text/plain</type>
            <size>32494</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThiYTY2NTU3YzQwMGUx
ZmQxOWFjOGM4OGQxZGUyMWRmZjU4NzE0Yi4uNDc5NTY0ZDZlOGMyYTkxOWMyYmVmOTIxMzg3YWRj
MzE5NTFmYTFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTExLTI2ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIERlY291cGxl
IGRpc3BsYXkgYm94IGNvbnN0cnVjdGlvbiBmb3IgYmlkaSBhbmQgbm9uLWJpZGkgY29udGVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNTMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2aW5nIGEg
Y29tbW9uIGRpc3BsYXkgYm94IGNyZWF0aW9uIGNvZGVwYXRoIGZvciBib3RoIGJpZGkgYW5kIG5v
bi1iaWRpIGNvbnRlbnQgd29ya2VkIG91dCB3ZWxsIHRoaXMgZmFyCisgICAgICAgIGJ1dCB0aGUg
dXBjb21pbmcgaW5saW5lIGJveCB2aXN1YWwgb3JkZXJpbmcgd2lsbCBjZXJ0YWlubHkgbWFrZSB0
aGUgY29tbW9uIGNvZGVwYXRoIHVubmVjZXNzYXJpbHkgY29uZnVzaW5nCisgICAgICAgIGZvciB0
aGUgbm9uLWJpZGkgY2FzZS4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCB0aGUgbmV3bHkgaW50cm9k
dWNlZCBhcHBlbmQqIGZ1bmN0aW9ucyBtYW5hZ2UgdGhlIGRpc3BsYXkgYm94IGNyZWF0aW9uIGFu
ZAorICAgICAgICB0aGVpciBjYWxsZXJzIChwcm9jZXNzTm9uQmlkaUNvbnRlbnQvcHJvY2Vzc0Jp
ZGlDb250ZW50KSBkZWFsIHdpdGggdGhlIHZpc3VhbCBvcmRlcmluZyBkZXRhaWxzLgorICAgICAg
ICBJdCBtZWFucyB0aGF0IHRoZSBub24tYmlkaSBjb2RlcGF0aCBzaW1wbHkgbG9vcHMgdGhyb3Vn
aCB0aGUgbGluZSBydW5zIGFuZCBjYWxscyB0aGUgYXBwZW5kKiBmdW5jdGlvbnMsCisgICAgICAg
IHdoaWxlIHRoZSBiaWRpIGNvZGVwYXRoIGtlZXBzIHRyYWNrIG9mIHRoZSB2aXN1YWwgb3JkZXJp
bmcgYW5kIGNhbGxzIHRoZSBhcHBlbmQqIGZ1bmN0aW9ucyBhY2NvcmRpbmdseS4KKworICAgICAg
ICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250ZW50
QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250
ZW50QnVpbGRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZFRleHREaXNwbGF5Qm94KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjphcHBlbmRTb2Z0TGluZUJy
ZWFrRGlzcGxheUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YXBwZW5kSGFyZExpbmVCcmVha0Rpc3BsYXlCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZEF0b21p
Y0lubGluZUxldmVsRGlzcGxheUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5kSW5saW5lQm94RGlzcGxheUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6YXBwZW5k
U3Bhbm5pbmdJbmxpbmVCb3hEaXNwbGF5Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nl
c3NCaWRpQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6cHJvY2Vzc092ZXJmbG93blJ1bnNGb3JFbGxpcHNpcyk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlQm94
ZXNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaDoKKwogMjAyMS0xMS0yNSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSUZDXSBHZW5lcmF0ZSBlbGxpcHNpcyBib3hlcyBmb3IgdGV4LW92ZXJmbG93
OiBlbGxpcHNpcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250
ZW50QnVpbGRlci5jcHAKaW5kZXggYTY3ZTMzZjU3MDI2NDZhZmI0MjJhNDQxMmEyNWZlNjNjMjU3
MDU5MS4uYzRlMzU3Y2JiOGYwYjZmZjcxNTZjZGM0YjAwNjkzMzMxNjk3MzgyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBA
IC01OCwxMyArNTgsMTggQEAgRGlzcGxheUJveGVzIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JgogICAgIERpc3BsYXlCb3hl
cyBib3hlczsKICAgICBib3hlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGxpbmVDb250ZW50LnJ1
bnMuc2l6ZSgpICsgbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpLnNpemUoKSArIDEp
OwogCisgICAgbV9saW5lSW5kZXggPSBsaW5lSW5kZXg7CiAgICAgLy8gRXZlcnkgbGluZSBzdGFy
dHMgd2l0aCBhIHJvb3QgYm94LCBldmVuIHRoZSBlbXB0eSBvbmVzLgogICAgIGF1dG8gcm9vdElu
bGluZUJveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpOwogICAg
IHJvb3RJbmxpbmVCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNhbFJlY3QudG9wTGVmdCgpKTsK
LSAgICBib3hlcy5hcHBlbmQoeyBsaW5lSW5kZXgsIElubGluZURpc3BsYXk6OkJveDo6VHlwZTo6
Um9vdElubGluZUJveCwgcm9vdCgpLCBVQklESV9ERUZBVUxUX0xUUiwgcm9vdElubGluZUJveFJl
Y3QsIHJvb3RJbmxpbmVCb3hSZWN0LCB7IH0sIHsgfSwgbGluZUJveC5yb290SW5saW5lQm94KCku
aGFzQ29udGVudCgpIH0pOworICAgIGJveGVzLmFwcGVuZCh7IG1fbGluZUluZGV4LCBJbmxpbmVE
aXNwbGF5OjpCb3g6OlR5cGU6OlJvb3RJbmxpbmVCb3gsIHJvb3QoKSwgVUJJRElfREVGQVVMVF9M
VFIsIHJvb3RJbmxpbmVCb3hSZWN0LCByb290SW5saW5lQm94UmVjdCwgeyB9LCB7IH0sIGxpbmVC
b3gucm9vdElubGluZUJveCgpLmhhc0NvbnRlbnQoKSB9KTsKIAotICAgIGNyZWF0ZUJveGVzQW5k
VXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChsaW5lQ29udGVudCwgbGluZUJveCwgbGluZUJv
eExvZ2ljYWxSZWN0LnRvcExlZnQoKSwgbGluZUluZGV4LCBib3hlcyk7Ci0gICAgcHJvY2Vzc092
ZXJmbG93blJ1bnNGb3JFbGxpcHNpcyhib3hlcywgbGluZUJveExvZ2ljYWxSZWN0LnJpZ2h0KCks
IGxpbmVJbmRleCk7CisgICAgYXV0byBjb250ZW50TmVlZHNCaWRpUmVvcmRlcmluZyA9ICFsaW5l
Q29udGVudC52aXN1YWxPcmRlckxpc3QuaXNFbXB0eSgpOworICAgIGlmIChjb250ZW50TmVlZHNC
aWRpUmVvcmRlcmluZykKKyAgICAgICAgcHJvY2Vzc0JpZGlDb250ZW50KGxpbmVDb250ZW50LCBs
aW5lQm94LCBsaW5lQm94TG9naWNhbFJlY3QudG9wTGVmdCgpLCBib3hlcyk7CisgICAgZWxzZQor
ICAgICAgICBwcm9jZXNzTm9uQmlkaUNvbnRlbnQobGluZUNvbnRlbnQsIGxpbmVCb3gsIGxpbmVC
b3hMb2dpY2FsUmVjdC50b3BMZWZ0KCksIGJveGVzKTsKKyAgICBwcm9jZXNzT3ZlcmZsb3duUnVu
c0ZvckVsbGlwc2lzKGJveGVzLCBsaW5lQm94TG9naWNhbFJlY3QucmlnaHQoKSk7CiAgICAgY29s
bGVjdElua092ZXJmbG93Rm9ySW5saW5lQm94ZXMobGluZUJveCwgYm94ZXMpOwogICAgIHJldHVy
biBib3hlczsKIH0KQEAgLTgxLDEzICs4NiwyNDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZEJv
eFNoYWRvd0lua092ZXJmbG93KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5saW5lUmVjdCYK
ICAgICBpbmtPdmVyZmxvdy5pbmZsYXRlKElubGluZUxheW91dFVuaXQgeyB0b3BCb3hTaGFkb3cg
fSwgSW5saW5lTGF5b3V0VW5pdCB7IHJpZ2h0Qm94U2hhZG93IH0sIElubGluZUxheW91dFVuaXQg
eyBib3R0b21Cb3hTaGFkb3cgfSwgSW5saW5lTGF5b3V0VW5pdCB7IGxlZnRCb3hTaGFkb3cgfSk7
CiB9CiAKLXZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVCb3hlc0FuZFVw
ZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50
JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0
UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgRGlz
cGxheUJveGVzJiBib3hlcykKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjphcHBl
bmRUZXh0RGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mIGxpbmVSdW4sIGNvbnN0IElubGluZVJl
Y3QmIHRleHRSdW5SZWN0LCBEaXNwbGF5Qm94ZXMmIGJveGVzKQoreworICAgIEFTU0VSVChsaW5l
UnVuLnRleHRDb250ZW50KCkgJiYgaXM8SW5saW5lVGV4dEJveD4obGluZVJ1bi5sYXlvdXRCb3go
KSkpOworCisgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKKyAgICBh
dXRvJiBzdHlsZSA9ICFtX2xpbmVJbmRleCA/IGxheW91dEJveC5maXJzdExpbmVTdHlsZSgpIDog
bGF5b3V0Qm94LnN0eWxlKCk7CisKKyAgICBhdXRvIGlua092ZXJmbG93ID0gWyZdIHsKKyAgICAg
ICAgYXV0byBpbml0aWFsQ29udGFpbmdCbG9ja1NpemUgPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmxheW91dEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25FbmFi
bGVkKCkKKyAgICAgICAgICAgID8gZm9ybWF0dGluZ1N0YXRlKCkubGF5b3V0U3RhdGUoKS52aWV3
cG9ydFNpemUoKQorICAgICAgICAgICAgOiBmb3JtYXR0aW5nU3RhdGUoKS5sYXlvdXRTdGF0ZSgp
Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkpLmNvbnRl
bnRCb3goKS5zaXplKCk7CisgICAgICAgIGF1dG8gc3Ryb2tlT3ZlcmZsb3cgPSBjZWlsZihzdHls
ZS5jb21wdXRlZFN0cm9rZVdpZHRoKGNlaWxlZEludFNpemUoaW5pdGlhbENvbnRhaW5nQmxvY2tT
aXplKSkpOworICAgICAgICBhdXRvIGlua092ZXJmbG93ID0gdGV4dFJ1blJlY3Q7CisgICAgICAg
IGlua092ZXJmbG93LmluZmxhdGUoc3Ryb2tlT3ZlcmZsb3cpOworICAgICAgICBhdXRvIGxldHRl
clNwYWNpbmcgPSBzdHlsZS5mb250Q2FzY2FkZSgpLmxldHRlclNwYWNpbmcoKTsKKyAgICAgICAg
aWYgKGxldHRlclNwYWNpbmcgPCAwKSB7CisgICAgICAgICAgICAvLyBMYXN0IGxldHRlcidzIG5l
Z2F0aXZlIHNwYWNpbmcgc2hyaW5rcyBsb2dpY2FsIHJlY3QuIFB1c2ggaXQgdG8gaW5rIG92ZXJm
bG93LgorICAgICAgICAgICAgaW5rT3ZlcmZsb3cuZXhwYW5kKC1sZXR0ZXJTcGFjaW5nLCB7IH0p
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmtPdmVyZmxvdzsKKyAgICB9OworICAgIGF1
dG8gY29udGVudCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KGxheW91dEJveCkuY29udGVudCgp
OworICAgIGF1dG8gdGV4dCA9IGxpbmVSdW4udGV4dENvbnRlbnQoKTsKKyAgICBhdXRvIGFkanVz
dGVkQ29udGVudFRvUmVuZGVyID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHRleHQtPm5lZWRzSHlw
aGVuID8gbWFrZVN0cmluZyhjb250ZW50LnN1YnN0cmluZyh0ZXh0LT5zdGFydCwgdGV4dC0+bGVu
Z3RoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpIDogU3RyaW5nKCk7CisgICAgfTsKKyAgICBib3hl
cy5hcHBlbmQoeyBtX2xpbmVJbmRleAorICAgICAgICAsIElubGluZURpc3BsYXk6OkJveDo6VHlw
ZTo6VGV4dAorICAgICAgICAsIGxheW91dEJveAorICAgICAgICAsIGxpbmVSdW4uYmlkaUxldmVs
KCkKKyAgICAgICAgLCB0ZXh0UnVuUmVjdAorICAgICAgICAsIGlua092ZXJmbG93KCkKKyAgICAg
ICAgLCBsaW5lUnVuLmV4cGFuc2lvbigpCisgICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94OjpU
ZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgY29udGVudCwgYWRqdXN0ZWRDb250ZW50
VG9SZW5kZXIoKSwgdGV4dC0+bmVlZHNIeXBoZW4gfSB9KTsKK30KKwordm9pZCBJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZFNvZnRMaW5lQnJlYWtEaXNwbGF5Qm94KGNvbnN0IExp
bmU6OlJ1biYgbGluZVJ1biwgY29uc3QgSW5saW5lUmVjdCYgc29mdExpbmVCcmVha1J1blJlY3Qs
IERpc3BsYXlCb3hlcyYgYm94ZXMpCit7CisgICAgQVNTRVJUKGxpbmVSdW4udGV4dENvbnRlbnQo
KSAmJiBpczxJbmxpbmVUZXh0Qm94PihsaW5lUnVuLmxheW91dEJveCgpKSk7CisKKyAgICBhdXRv
JiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOworICAgIGF1dG8mIHRleHQgPSBsaW5l
UnVuLnRleHRDb250ZW50KCk7CisKKyAgICBib3hlcy5hcHBlbmQoeyBtX2xpbmVJbmRleAorICAg
ICAgICAsIElubGluZURpc3BsYXk6OkJveDo6VHlwZTo6U29mdExpbmVCcmVhaworICAgICAgICAs
IGxheW91dEJveAorICAgICAgICAsIGxpbmVSdW4uYmlkaUxldmVsKCkKKyAgICAgICAgLCBzb2Z0
TGluZUJyZWFrUnVuUmVjdAorICAgICAgICAsIHNvZnRMaW5lQnJlYWtSdW5SZWN0CisgICAgICAg
ICwgbGluZVJ1bi5leHBhbnNpb24oKQorICAgICAgICAsIElubGluZURpc3BsYXk6OkJveDo6VGV4
dCB7IHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgsIGRvd25jYXN0PElubGluZVRleHRCb3g+KGxh
eW91dEJveCkuY29udGVudCgpIH0gfSk7Cit9CisKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjphcHBlbmRIYXJkTGluZUJyZWFrRGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mIGxp
bmVSdW4sIGNvbnN0IElubGluZVJlY3QmIGxpbmVCcmVha0JveFJlY3QsIERpc3BsYXlCb3hlcyYg
Ym94ZXMpCit7CisgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKKwor
ICAgIGJveGVzLmFwcGVuZCh7IG1fbGluZUluZGV4CisgICAgICAgICwgSW5saW5lRGlzcGxheTo6
Qm94OjpUeXBlOjpMaW5lQnJlYWtCb3gKKyAgICAgICAgLCBsYXlvdXRCb3gKKyAgICAgICAgLCBs
aW5lUnVuLmJpZGlMZXZlbCgpCisgICAgICAgICwgbGluZUJyZWFrQm94UmVjdAorICAgICAgICAs
IGxpbmVCcmVha0JveFJlY3QKKyAgICAgICAgLCBsaW5lUnVuLmV4cGFuc2lvbigpCisgICAgICAg
ICwgeyB9IH0pOworCisgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5i
b3hHZW9tZXRyeShsYXlvdXRCb3gpOworICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0
KHRvTGF5b3V0UG9pbnQobGluZUJyZWFrQm94UmVjdC50b3BMZWZ0KCkpKTsKKyAgICBib3hHZW9t
ZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KHRvTGF5b3V0VW5pdChsaW5lQnJlYWtCb3hSZWN0Lmhl
aWdodCgpKSk7Cit9CisKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjphcHBlbmRB
dG9taWNJbmxpbmVMZXZlbERpc3BsYXlCb3goY29uc3QgTGluZTo6UnVuJiBsaW5lUnVuLCBjb25z
dCBJbmxpbmVSZWN0JiBib3JkZXJCb3hSZWN0LCBEaXNwbGF5Qm94ZXMmIGJveGVzKQoreworICAg
IEFTU0VSVChsaW5lUnVuLmxheW91dEJveCgpLmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSk7CisK
KyAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOworICAgIC8vIEZJWE1F
OiBBZGQgaW5rIG92ZXJmbG93IHN1cHBvcnQgZm9yIGF0b21pYyBpbmxpbmUgbGV2ZWwgYm94ZXMg
KGUuZy4gYm94IHNoYWRvdykuCisgICAgYm94ZXMuYXBwZW5kKHsgbV9saW5lSW5kZXgKKyAgICAg
ICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94CisgICAg
ICAgICwgbGF5b3V0Qm94CisgICAgICAgICwgbGluZVJ1bi5iaWRpTGV2ZWwoKQorICAgICAgICAs
IGJvcmRlckJveFJlY3QKKyAgICAgICAgLCBib3JkZXJCb3hSZWN0CisgICAgICAgICwgbGluZVJ1
bi5leHBhbnNpb24oKQorICAgICAgICAsIHsgfSB9KTsKKworICAgIC8vIE5vdGUgdGhhdCBpbmxp
bmUgYm94ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGFuZCB0aGVpciB0b3AgcG9zaXRpb24g
Y2FuIGJlIG5lZ2F0aXZlLgorICAgIC8vIEF0b21pYyBpbmxpbmUgYm94ZXMgYXJlIGFsbCBzZXQu
IFRoZWlyIG1hcmdpbi9ib3JkZXIvY29udGVudCBib3ggZ2VvbWV0cmllcyBhcmUgYWxyZWFkeSBj
b21wdXRlZC4gV2UganVzdCBoYXZlIHRvIHBvc2l0aW9uIHRoZW0gaGVyZS4KKyAgICBhdXRvJiBi
b3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJveCk7Cisg
ICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2ludChib3JkZXJCb3hS
ZWN0LnRvcExlZnQoKSkpOworCisgICAgYXV0byBhZGp1c3RQYXJlbnRJbmxpbmVCb3hJbmtPdmVy
ZmxvdyA9IFsmXSB7CisgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGxheW91dEJveC5w
YXJlbnQoKTsKKyAgICAgICAgaWYgKCZwYXJlbnRJbmxpbmVCb3ggPT0gJnJvb3QoKSkgeworICAg
ICAgICAgICAgLy8gV2UgZG9uJ3QgY29sbGVjdCBpbmsgb3ZlcmZsb3cgZm9yIHRoZSByb290IGlu
bGluZSBib3guCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9pbmxpbmVCb3hJbmRleE1hcC5jb250YWlucygmcGFyZW50SW5saW5lQm94KSk7
CisKKyAgICAgICAgYXV0byBib3hJbmtPdmVyZmxvdyA9IGJvcmRlckJveFJlY3Q7CisgICAgICAg
IGFkZEJveFNoYWRvd0lua092ZXJmbG93KCFtX2xpbmVJbmRleCA/IGxheW91dEJveC5maXJzdExp
bmVTdHlsZSgpIDogbGF5b3V0Qm94LnN0eWxlKCksIGJveElua092ZXJmbG93KTsKKyAgICAgICAg
Ym94ZXNbbV9pbmxpbmVCb3hJbmRleE1hcC5nZXQoJnBhcmVudElubGluZUJveCldLmFkanVzdElu
a092ZXJmbG93KGJveElua092ZXJmbG93KTsKKyAgICB9OworICAgIGFkanVzdFBhcmVudElubGlu
ZUJveElua092ZXJmbG93KCk7Cit9CisKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
OjphcHBlbmRJbmxpbmVCb3hEaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYgbGluZVJ1biwgY29u
c3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUJveCwgY29uc3QgSW5saW5lUmVjdCYgaW5saW5lQm94
Qm9yZGVyQm94LCBib29sIGxpbmVoYXNDb250ZW50LCBEaXNwbGF5Qm94ZXMmIGJveGVzKQorewor
ICAgIGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7CisKKyAgICBpZiAobGlu
ZWhhc0NvbnRlbnQpIHsKKyAgICAgICAgYXV0byBpbmtPdmVyZmxvdyA9IFsmXSB7CisgICAgICAg
ICAgICBhdXRvIGlua092ZXJmbG93ID0gaW5saW5lQm94Qm9yZGVyQm94OworICAgICAgICAgICAg
YWRkQm94U2hhZG93SW5rT3ZlcmZsb3coIW1fbGluZUluZGV4ID8gbGF5b3V0Qm94LmZpcnN0TGlu
ZVN0eWxlKCkgOiBsYXlvdXRCb3guc3R5bGUoKSwgaW5rT3ZlcmZsb3cpOworICAgICAgICAgICAg
cmV0dXJuIGlua092ZXJmbG93OworICAgICAgICB9OworICAgICAgICAvLyBGSVhNRTogSXQncyBl
eHBlY3RlZCB0byBub3QgaGF2ZSBhbnkgYm94ZXMgb24gZW1wdHkgbGluZXMuIFdlIHNob3VsZCBy
ZWNvbnNpZGVyIHRoaXMuCisgICAgICAgIG1faW5saW5lQm94SW5kZXhNYXAuYWRkKCZsYXlvdXRC
b3gsIGJveGVzLnNpemUoKSk7CisKKyAgICAgICAgQVNTRVJUKGlubGluZUJveC5pc0lubGluZUJv
eCgpKTsKKyAgICAgICAgQVNTRVJUKGlubGluZUJveC5pc0ZpcnN0Qm94KCkpOworICAgICAgICBi
b3hlcy5hcHBlbmQoeyBtX2xpbmVJbmRleAorICAgICAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpC
b3g6OlR5cGU6Ok5vblJvb3RJbmxpbmVCb3gKKyAgICAgICAgICAgICwgbGF5b3V0Qm94CisgICAg
ICAgICAgICAsIGxpbmVSdW4uYmlkaUxldmVsKCkKKyAgICAgICAgICAgICwgaW5saW5lQm94Qm9y
ZGVyQm94CisgICAgICAgICAgICAsIGlua092ZXJmbG93KCkKKyAgICAgICAgICAgICwgeyB9Cisg
ICAgICAgICAgICAsIHsgfQorICAgICAgICAgICAgLCBpbmxpbmVCb3guaGFzQ29udGVudCgpCisg
ICAgICAgICAgICAsIGlzRmlyc3RMYXN0Qm94KGlubGluZUJveCkgfSk7CisgICAgfQorCisgICAg
YXV0byBpbmxpbmVCb3hTaXplID0gTGF5b3V0U2l6ZSB7IExheW91dFVuaXQ6OmZyb21GbG9hdENl
aWwoaW5saW5lQm94Qm9yZGVyQm94LndpZHRoKCkpLCBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWls
KGlubGluZUJveEJvcmRlckJveC5oZWlnaHQoKSkgfTsKKyAgICBhdXRvIGxvZ2ljYWxSZWN0ID0g
UmVjdCB7IExheW91dFBvaW50IHsgaW5saW5lQm94Qm9yZGVyQm94LnRvcExlZnQoKSB9LCBpbmxp
bmVCb3hTaXplIH07CisgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5i
b3hHZW9tZXRyeShsYXlvdXRCb3gpOworICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0
KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7CisgICAgYXV0byBjb250ZW50Qm94SGVpZ2h0ID0gbG9n
aWNhbFJlY3QuaGVpZ2h0KCkgLSAoYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdl
b21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKTsKKyAgICBib3hHZW9tZXRy
eS5zZXRDb250ZW50Qm94SGVpZ2h0KGNvbnRlbnRCb3hIZWlnaHQpOworICAgIGF1dG8gY29udGVu
dEJveFdpZHRoID0gbG9naWNhbFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFs
Qm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUp
KTsKKyAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoY29udGVudEJveFdpZHRoKTsK
K30KKwordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmFwcGVuZFNwYW5uaW5nSW5s
aW5lQm94RGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mIGxpbmVSdW4sIGNvbnN0IElubGluZUxl
dmVsQm94JiBpbmxpbmVCb3gsIGNvbnN0IElubGluZVJlY3QmIGlubGluZUJveEJvcmRlckJveCwg
RGlzcGxheUJveGVzJiBib3hlcykKK3sKKyAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxh
eW91dEJveCgpOworCisgICAgbV9pbmxpbmVCb3hJbmRleE1hcC5hZGQoJmxheW91dEJveCwgYm94
ZXMuc2l6ZSgpKTsKKworICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBbJl0geworICAgICAgICBhdXRv
IGlua092ZXJmbG93ID0gaW5saW5lQm94Qm9yZGVyQm94OworICAgICAgICBhZGRCb3hTaGFkb3dJ
bmtPdmVyZmxvdyghbV9saW5lSW5kZXggPyBsYXlvdXRCb3guZmlyc3RMaW5lU3R5bGUoKSA6IGxh
eW91dEJveC5zdHlsZSgpLCBpbmtPdmVyZmxvdyk7CisgICAgICAgIHJldHVybiBpbmtPdmVyZmxv
dzsKKyAgICB9OworICAgIEFTU0VSVCghaW5saW5lQm94LmlzRmlyc3RCb3goKSk7CisgICAgYm94
ZXMuYXBwZW5kKHsgbV9saW5lSW5kZXgKKyAgICAgICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5
cGU6Ok5vblJvb3RJbmxpbmVCb3gKKyAgICAgICAgLCBsYXlvdXRCb3gKKyAgICAgICAgLCBsaW5l
UnVuLmJpZGlMZXZlbCgpCisgICAgICAgICwgaW5saW5lQm94Qm9yZGVyQm94CisgICAgICAgICwg
aW5rT3ZlcmZsb3coKQorICAgICAgICAsIHsgfQorICAgICAgICAsIHsgfQorICAgICAgICAsIGlu
bGluZUJveC5oYXNDb250ZW50KCkKKyAgICAgICAgLCBpc0ZpcnN0TGFzdEJveChpbmxpbmVCb3gp
IH0pOworCisgICAgYXV0byBpbmxpbmVCb3hTaXplID0gTGF5b3V0U2l6ZSB7IExheW91dFVuaXQ6
OmZyb21GbG9hdENlaWwoaW5saW5lQm94Qm9yZGVyQm94LndpZHRoKCkpLCBMYXlvdXRVbml0Ojpm
cm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC5oZWlnaHQoKSkgfTsKKyAgICBhdXRvIGxv
Z2ljYWxSZWN0ID0gUmVjdCB7IExheW91dFBvaW50IHsgaW5saW5lQm94Qm9yZGVyQm94LnRvcExl
ZnQoKSB9LCBpbmxpbmVCb3hTaXplIH07CisgICAgLy8gTWlkZGxlIG9yIGVuZCBvZiB0aGUgaW5s
aW5lIGJveC4gTGV0J3Mgc3RyZXRjaCB0aGUgYm94IGFzIG5lZWRlZC4KKyAgICBhdXRvJiBib3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxheW91dEJveCk7CisgICAg
YXV0byBlbmNsb3NpbmdCb3JkZXJCb3hSZWN0ID0gQm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3Qo
Ym94R2VvbWV0cnkpOworICAgIGVuY2xvc2luZ0JvcmRlckJveFJlY3QuZXhwYW5kVG9Db250YWlu
KGxvZ2ljYWxSZWN0KTsKKyAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsTGVmdChlbmNsb3NpbmdC
b3JkZXJCb3hSZWN0LmxlZnQoKSk7CisKKyAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVp
Z2h0KGVuY2xvc2luZ0JvcmRlckJveFJlY3QuaGVpZ2h0KCkgLSAoYm94R2VvbWV0cnkudmVydGlj
YWxCb3JkZXIoKSArIGJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDBfbHUp
KSk7CisgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGVuY2xvc2luZ0JvcmRlckJv
eFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9t
ZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKSk7Cit9CisKK3ZvaWQgSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRlbnQoY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGluZUJveCYgbGluZUJv
eCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgIERpc3Bs
YXlCb3hlcyYgYm94ZXMpCit7CisgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgYm94ZXMgb24gdGhl
IGN1cnJlbnQgbGluZS4gVGhpcyBpcyBtb3N0bHkgdGV4dCBhbmQgYXRvbWljIGlubGluZSBib3hl
cy4KKyAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVudC5ydW5zKSB7CisKKyAgICAg
ICAgYXV0byBkaXNwbGF5Qm94UmVjdCA9IFsmXSB7CisgICAgICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBsaW5lUnVuLmxheW91dEJveCgpOworICAgICAgICAgICAgYXV0byBsb2dpY2FsUmVjdCA9
IElubGluZVJlY3QgeyB9OworCisgICAgICAgICAgICBpZiAobGluZVJ1bi5pc1RleHQoKSB8fCBs
aW5lUnVuLmlzU29mdExpbmVCcmVhaygpKQorICAgICAgICAgICAgICAgIGxvZ2ljYWxSZWN0ID0g
bGluZUJveC5sb2dpY2FsUmVjdEZvclRleHRSdW4obGluZVJ1bik7CisgICAgICAgICAgICBlbHNl
IGlmIChsaW5lUnVuLmlzSGFyZExpbmVCcmVhaygpKQorICAgICAgICAgICAgICAgIGxvZ2ljYWxS
ZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdEZvckxpbmVCcmVha0JveChsYXlvdXRCb3gpOworICAg
ICAgICAgICAgZWxzZSBpZiAobGluZVJ1bi5pc0JveCgpKQorICAgICAgICAgICAgICAgIGxvZ2lj
YWxSZWN0ID0gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9yQXRvbWljSW5saW5lTGV2ZWxCb3go
bGF5b3V0Qm94LCBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGxpbmVSdW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IGxpbmVSdW4u
aXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3hTdGFydCgpKQorICAgICAgICAgICAgICAgIGxvZ2ljYWxS
ZWN0ID0gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9ySW5saW5lQm94KGxheW91dEJveCwgZm9y
bWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkobGF5b3V0Qm94KSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBsb2dp
Y2FsUmVjdC5tb3ZlQnkobGluZUJveExvZ2ljYWxUb3BMZWZ0KTsKKyAgICAgICAgICAgIHJldHVy
biBsb2dpY2FsUmVjdDsKKyAgICAgICAgfTsKKworICAgICAgICBpZiAobGluZVJ1bi5pc1RleHQo
KSkgeworICAgICAgICAgICAgYXBwZW5kVGV4dERpc3BsYXlCb3gobGluZVJ1biwgZGlzcGxheUJv
eFJlY3QoKSwgYm94ZXMpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGxpbmVSdW4uaXNTb2Z0TGluZUJyZWFrKCkpIHsKKyAgICAgICAgICAgIGFwcGVuZFNv
ZnRMaW5lQnJlYWtEaXNwbGF5Qm94KGxpbmVSdW4sIGRpc3BsYXlCb3hSZWN0KCksIGJveGVzKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChsaW5lUnVuLmlz
SGFyZExpbmVCcmVhaygpKSB7CisgICAgICAgICAgICBhcHBlbmRIYXJkTGluZUJyZWFrRGlzcGxh
eUJveChsaW5lUnVuLCBkaXNwbGF5Qm94UmVjdCgpLCBib3hlcyk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGluZVJ1bi5pc0JveCgpKSB7CisgICAgICAg
ICAgICBhcHBlbmRBdG9taWNJbmxpbmVMZXZlbERpc3BsYXlCb3gobGluZVJ1biwgZGlzcGxheUJv
eFJlY3QoKSwgYm94ZXMpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGxpbmVSdW4uaXNJbmxpbmVCb3hTdGFydCgpKSB7CisgICAgICAgICAgICAvLyBUaGlz
IGlubGluZSBib3ggc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMgbGluZS4KKyAgICAgICAgICAgIGFw
cGVuZElubGluZUJveERpc3BsYXlCb3gobGluZVJ1biwgbGluZUJveC5pbmxpbmVMZXZlbEJveEZv
ckxheW91dEJveChsaW5lUnVuLmxheW91dEJveCgpKSwgZGlzcGxheUJveFJlY3QoKSwgbGluZUJv
eC5oYXNDb250ZW50KCksIGJveGVzKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChsaW5lUnVuLmlzTGluZVNwYW5uaW5nSW5saW5lQm94U3RhcnQoKSkgewor
ICAgICAgICAgICAgaWYgKCFsaW5lQm94Lmhhc0NvbnRlbnQoKSkgeworICAgICAgICAgICAgICAg
IC8vIFdoZW4gYSBzcGFubmluZyBpbmxpbmUgYm94IChlLmcuIDxkaXY+dGV4dDxzcGFuPjxicj48
L3NwYW4+PC9kaXY+KSBsYW5kcyBvbiBhbiBlbXB0eSBsaW5lCisgICAgICAgICAgICAgICAgLy8g
KGVtcHR5IGhlcmUgbWVhbnMgbm8gY29udGVudCBhdCBhbGwgaW5jbHVkaW5nIGxpbmUgYnJlYWtz
LCBub3QganVzdCB2aXN1YWxseSBlbXB0eSkgdGhlbiB3ZQorICAgICAgICAgICAgICAgIC8vIGRv
bid0IGV4dGVuZCB0aGUgc3Bhbm5pbmcgbGluZSBib3ggb3ZlciB0byB0aGlzIGxpbmUgLWFsc28g
dGhlcmUgaXMgbm8gbmV4dCBsaW5lIGluIGNhc2VzIGxpa2UgdGhpcy4KKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZFNwYW5uaW5nSW5s
aW5lQm94RGlzcGxheUJveChsaW5lUnVuLCBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0
Qm94KGxpbmVSdW4ubGF5b3V0Qm94KCkpLCBkaXNwbGF5Qm94UmVjdCgpLCBib3hlcyk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQobGluZVJ1bi5pc0lu
bGluZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsKKyAgICB9
Cit9CisKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzQmlkaUNvbnRl
bnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3QgTGlu
ZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9w
TGVmdCwgRGlzcGxheUJveGVzJiBib3hlcykKIHsKICAgICAvLyBDcmVhdGUgdGhlIGlubGluZSBi
b3hlcyBvbiB0aGUgY3VycmVudCBsaW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMg
aW5saW5lIGJveGVzLgotICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRp
bmdTdGF0ZSgpOwogICAgIGF1dG8mIHJ1bnMgPSBsaW5lQ29udGVudC5ydW5zOwotICAgIGF1dG8g
Y29udGVudE5lZWRzQmlkaVJlb3JkZXJpbmcgPSAhbGluZUNvbnRlbnQudmlzdWFsT3JkZXJMaXN0
LmlzRW1wdHkoKTsKLSAgICBBU1NFUlQoIWNvbnRlbnROZWVkc0JpZGlSZW9yZGVyaW5nIHx8IGxp
bmVDb250ZW50LnZpc3VhbE9yZGVyTGlzdC5zaXplKCkgPT0gcnVucy5zaXplKCkpOworICAgIEFT
U0VSVChsaW5lQ29udGVudC52aXN1YWxPcmRlckxpc3Quc2l6ZSgpID09IHJ1bnMuc2l6ZSgpKTsK
IAogICAgIGF1dG8gcm9vdElubGluZUJveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9v
dElubGluZUJveCgpOwogICAgIGF1dG8gY29udGVudFJpZ2h0SW5WaXN1YWxPcmRlciA9IGxpbmVC
b3hMb2dpY2FsVG9wTGVmdC54KCk7CkBAIC0xMDAsMTIgKzMzOSw5IEBAIHZvaWQgSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNv
bnRlbnQoY29uCiAgICAgY29udGVudFJpZ2h0SW5WaXN1YWxPcmRlciArPSByb290SW5saW5lQm94
UmVjdC5sZWZ0KCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJ1bnMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgYXV0byB2aXN1YWxJbmRleCA9IGNvbnRlbnROZWVkc0JpZGlSZW9yZGVy
aW5nID8gbGluZUNvbnRlbnQudmlzdWFsT3JkZXJMaXN0W2ldIDogaTsKKyAgICAgICAgYXV0byB2
aXN1YWxJbmRleCA9IGxpbmVDb250ZW50LnZpc3VhbE9yZGVyTGlzdFtpXTsKICAgICAgICAgYXV0
byYgbGluZVJ1biA9IHJ1bnNbdmlzdWFsSW5kZXhdOwogICAgICAgICBhdXRvJiBsYXlvdXRCb3gg
PSBsaW5lUnVuLmxheW91dEJveCgpOwotICAgICAgICBhdXRvJiBzdHlsZSA9IFsmXSAoKSAtPiBj
b25zdCBSZW5kZXJTdHlsZSYgewotICAgICAgICAgICAgcmV0dXJuICFsaW5lSW5kZXggPyBsYXlv
dXRCb3guZmlyc3RMaW5lU3R5bGUoKSA6IGxheW91dEJveC5zdHlsZSgpOwotICAgICAgICB9KCk7
CiAKICAgICAgICAgYXV0byBkaXNwbGF5Qm94UmVjdCA9IFsmXSB7CiAgICAgICAgICAgICBhdXRv
IGxvZ2ljYWxSZWN0ID0gSW5saW5lUmVjdCB7IH07CkBAIC0xMTYsNyArMzUyLDcgQEAgdm9pZCBJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZUJveGVzQW5kVXBkYXRlR2VvbWV0cnlG
b3JMaW5lQ29udGVudChjb24KICAgICAgICAgICAgIGVsc2UgaWYgKGxpbmVSdW4uaXNIYXJkTGlu
ZUJyZWFrKCkpCiAgICAgICAgICAgICAgICAgbG9naWNhbFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxS
ZWN0Rm9yTGluZUJyZWFrQm94KGxheW91dEJveCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRy
eShsYXlvdXRCb3gpOworICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0
dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsKICAgICAgICAgICAgICAgICBpZiAo
bGluZVJ1bi5pc0JveCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gYm94
R2VvbWV0cnkubWFyZ2luU3RhcnQoKTsKICAgICAgICAgICAgICAgICAgICAgbG9naWNhbFJlY3Qg
PSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChsYXlvdXRC
b3gsIGJveEdlb21ldHJ5KTsKQEAgLTEyOCwxMCArMzY0LDYgQEAgdm9pZCBJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OmNyZWF0ZUJveGVzQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVu
dChjb24KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFjb250ZW50TmVl
ZHNCaWRpUmVvcmRlcmluZykgewotICAgICAgICAgICAgICAgIGxvZ2ljYWxSZWN0Lm1vdmVCeShs
aW5lQm94TG9naWNhbFRvcExlZnQpOwotICAgICAgICAgICAgICAgIHJldHVybiBsb2dpY2FsUmVj
dDsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxvZ2ljYWxSZWN0Lm1vdmVWZXJ0aWNhbGx5
KGxpbmVCb3hMb2dpY2FsVG9wTGVmdC55KCkpOwogICAgICAgICAgICAgLy8gVXNlIHRoZSBkaXN0
YW5jZSBmcm9tIHRoZSBsb2dpY2FsIHByZXZpb3VzIHJ1biB0byBwbGFjZSB0aGUgZGlzcGxheSBi
b3ggaG9yaXpvbnRhbGx5IGluIHZpc3VhbCB0ZXJtcy4KICAgICAgICAgICAgIGF1dG8qIGxvZ2lj
YWxQcmV2aW91c1J1biA9IHZpc3VhbEluZGV4ID8gJnJ1bnNbdmlzdWFsSW5kZXggLSAxXSA6IG51
bGxwdHI7CkBAIC0xNDUsMTE0ICszNzcsMjggQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXI6OmNyZWF0ZUJveGVzQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb24KIAog
ICAgICAgICBpZiAobGluZVJ1bi5pc1RleHQoKSkgewogICAgICAgICAgICAgYXV0byB0ZXh0UnVu
UmVjdCA9IGRpc3BsYXlCb3hSZWN0KCk7CisgICAgICAgICAgICBhcHBlbmRUZXh0RGlzcGxheUJv
eChsaW5lUnVuLCB0ZXh0UnVuUmVjdCwgYm94ZXMpOwogICAgICAgICAgICAgY29udGVudFJpZ2h0
SW5WaXN1YWxPcmRlciA9IHRleHRSdW5SZWN0LnJpZ2h0KCk7Ci0KLSAgICAgICAgICAgIGF1dG8g
aW5rT3ZlcmZsb3cgPSBbJl0gewotICAgICAgICAgICAgICAgIGF1dG8gaW5pdGlhbENvbnRhaW5n
QmxvY2tTaXplID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYXlv
dXRGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uRW5hYmxlZCgpCi0gICAgICAgICAgICAgICAg
ICAgID8gZm9ybWF0dGluZ1N0YXRlLmxheW91dFN0YXRlKCkudmlld3BvcnRTaXplKCkKLSAgICAg
ICAgICAgICAgICAgICAgOiBmb3JtYXR0aW5nU3RhdGUubGF5b3V0U3RhdGUoKS5nZW9tZXRyeUZv
ckJveChsYXlvdXRCb3guaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpKS5jb250ZW50Qm94KCkuc2l6
ZSgpOwotICAgICAgICAgICAgICAgIGF1dG8gc3Ryb2tlT3ZlcmZsb3cgPSBjZWlsZihzdHlsZS5j
b21wdXRlZFN0cm9rZVdpZHRoKGNlaWxlZEludFNpemUoaW5pdGlhbENvbnRhaW5nQmxvY2tTaXpl
KSkpOwotICAgICAgICAgICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSB0ZXh0UnVuUmVjdDsKLSAg
ICAgICAgICAgICAgICBpbmtPdmVyZmxvdy5pbmZsYXRlKHN0cm9rZU92ZXJmbG93KTsKLSAgICAg
ICAgICAgICAgICBhdXRvIGxldHRlclNwYWNpbmcgPSBzdHlsZS5mb250Q2FzY2FkZSgpLmxldHRl
clNwYWNpbmcoKTsKLSAgICAgICAgICAgICAgICBpZiAobGV0dGVyU3BhY2luZyA8IDApIHsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gTGFzdCBsZXR0ZXIncyBuZWdhdGl2ZSBzcGFjaW5nIHNocmlu
a3MgbG9naWNhbCByZWN0LiBQdXNoIGl0IHRvIGluayBvdmVyZmxvdy4KLSAgICAgICAgICAgICAg
ICAgICAgaW5rT3ZlcmZsb3cuZXhwYW5kKC1sZXR0ZXJTcGFjaW5nLCB7IH0pOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gaW5rT3ZlcmZsb3c7Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgQVNTRVJUKGxpbmVSdW4udGV4dENvbnRlbnQoKSAmJiBpczxJbmxp
bmVUZXh0Qm94PihsYXlvdXRCb3gpKTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudCA9IGRvd25j
YXN0PElubGluZVRleHRCb3g+KGxheW91dEJveCkuY29udGVudCgpOwotICAgICAgICAgICAgYXV0
byB0ZXh0ID0gbGluZVJ1bi50ZXh0Q29udGVudCgpOwotICAgICAgICAgICAgYXV0byBhZGp1c3Rl
ZENvbnRlbnRUb1JlbmRlciA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHQtPm5l
ZWRzSHlwaGVuID8gbWFrZVN0cmluZyhjb250ZW50LnN1YnN0cmluZyh0ZXh0LT5zdGFydCwgdGV4
dC0+bGVuZ3RoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpIDogU3RyaW5nKCk7Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4Ci0gICAgICAgICAgICAg
ICAgLCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6OlRleHQKLSAgICAgICAgICAgICAgICAsIGxh
eW91dEJveAotICAgICAgICAgICAgICAgICwgbGluZVJ1bi5iaWRpTGV2ZWwoKQotICAgICAgICAg
ICAgICAgICwgdGV4dFJ1blJlY3QKLSAgICAgICAgICAgICAgICAsIGlua092ZXJmbG93KCkKLSAg
ICAgICAgICAgICAgICAsIGxpbmVSdW4uZXhwYW5zaW9uKCkKLSAgICAgICAgICAgICAgICAsIElu
bGluZURpc3BsYXk6OkJveDo6VGV4dCB7IHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgsIGNvbnRl
bnQsIGFkanVzdGVkQ29udGVudFRvUmVuZGVyKCksIHRleHQtPm5lZWRzSHlwaGVuIH0gfSk7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5pc1Nv
ZnRMaW5lQnJlYWsoKSkgewotICAgICAgICAgICAgQVNTRVJUKGxpbmVSdW4udGV4dENvbnRlbnQo
KSAmJiBpczxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpKTsKLSAgICAgICAgICAgIGF1dG8gc29m
dExpbmVCcmVha1J1blJlY3QgPSBkaXNwbGF5Qm94UmVjdCgpOwotICAgICAgICAgICAgYXV0byYg
dGV4dCA9IGxpbmVSdW4udGV4dENvbnRlbnQoKTsKLSAgICAgICAgICAgIGJveGVzLmFwcGVuZCh7
IGxpbmVJbmRleAotICAgICAgICAgICAgICAgICwgSW5saW5lRGlzcGxheTo6Qm94OjpUeXBlOjpT
b2Z0TGluZUJyZWFrCi0gICAgICAgICAgICAgICAgLCBsYXlvdXRCb3gKLSAgICAgICAgICAgICAg
ICAsIGxpbmVSdW4uYmlkaUxldmVsKCkKLSAgICAgICAgICAgICAgICAsIHNvZnRMaW5lQnJlYWtS
dW5SZWN0Ci0gICAgICAgICAgICAgICAgLCBzb2Z0TGluZUJyZWFrUnVuUmVjdAotICAgICAgICAg
ICAgICAgICwgbGluZVJ1bi5leHBhbnNpb24oKQotICAgICAgICAgICAgICAgICwgSW5saW5lRGlz
cGxheTo6Qm94OjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgZG93bmNhc3Q8SW5s
aW5lVGV4dEJveD4obGF5b3V0Qm94KS5jb250ZW50KCkgfSB9KTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgYXBwZW5kU29mdExpbmVCcmVha0Rpc3BsYXlCb3gobGluZVJ1biwgZGlz
cGxheUJveFJlY3QoKSwgYm94ZXMpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGxpbmVSdW4uaXNIYXJkTGluZUJyZWFrKCkpIHsKLSAgICAgICAgICAgIC8v
IE9ubHkgaGFyZCBsaW5lYnJlYWtzIGhhdmUgYXNzb2NpYXRlZCBsYXlvdXQgYm94ZXMuCi0gICAg
ICAgICAgICBhdXRvIGxpbmVCcmVha0JveFJlY3QgPSBkaXNwbGF5Qm94UmVjdCgpOwotICAgICAg
ICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6
OkxpbmVCcmVha0JveCwgbGF5b3V0Qm94LCBsaW5lUnVuLmJpZGlMZXZlbCgpLCBsaW5lQnJlYWtC
b3hSZWN0LCBsaW5lQnJlYWtCb3hSZWN0LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7Ci0K
LSAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21l
dHJ5KGxheW91dEJveCk7Ci0gICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVm
dCh0b0xheW91dFBvaW50KGxpbmVCcmVha0JveFJlY3QudG9wTGVmdCgpKSk7Ci0gICAgICAgICAg
ICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KHRvTGF5b3V0VW5pdChsaW5lQnJlYWtC
b3hSZWN0LmhlaWdodCgpKSk7CisgICAgICAgICAgICBhcHBlbmRIYXJkTGluZUJyZWFrRGlzcGxh
eUJveChsaW5lUnVuLCBkaXNwbGF5Qm94UmVjdCgpLCBib3hlcyk7CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5pc0JveCgpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSk7CiAgICAgICAg
ICAgICBhdXRvIGJvcmRlckJveFJlY3QgPSBkaXNwbGF5Qm94UmVjdCgpOworICAgICAgICAgICAg
YXBwZW5kQXRvbWljSW5saW5lTGV2ZWxEaXNwbGF5Qm94KGxpbmVSdW4sIGJvcmRlckJveFJlY3Qs
IGJveGVzKTsKICAgICAgICAgICAgIGNvbnRlbnRSaWdodEluVmlzdWFsT3JkZXIgPSBib3JkZXJC
b3hSZWN0LnJpZ2h0KCk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQWRkIGluayBvdmVyZmxvdyBz
dXBwb3J0IGZvciBhdG9taWMgaW5saW5lIGxldmVsIGJveGVzIChlLmcuIGJveCBzaGFkb3cpLgot
ICAgICAgICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBJbmxpbmVEaXNwbGF5OjpCb3g6
OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94LCBsYXlvdXRCb3gsIGxpbmVSdW4uYmlkaUxldmVs
KCksIGJvcmRlckJveFJlY3QsIGJvcmRlckJveFJlY3QsIGxpbmVSdW4uZXhwYW5zaW9uKCksIHsg
fSB9KTsKLQotICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGlubGluZSBib3hlcyBhcmUgcmVsYXRp
dmUgdG8gdGhlIGxpbmUgYW5kIHRoZWlyIHRvcCBwb3NpdGlvbiBjYW4gYmUgbmVnYXRpdmUuCi0g
ICAgICAgICAgICAvLyBBdG9taWMgaW5saW5lIGJveGVzIGFyZSBhbGwgc2V0LiBUaGVpciBtYXJn
aW4vYm9yZGVyL2NvbnRlbnQgYm94IGdlb21ldHJpZXMgYXJlIGFscmVhZHkgY29tcHV0ZWQuIFdl
IGp1c3QgaGF2ZSB0byBwb3NpdGlvbiB0aGVtIGhlcmUuCi0gICAgICAgICAgICBmb3JtYXR0aW5n
U3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBv
aW50KGJvcmRlckJveFJlY3QudG9wTGVmdCgpKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWRqdXN0
UGFyZW50SW5saW5lQm94SW5rT3ZlcmZsb3cgPSBbJl0gewotICAgICAgICAgICAgICAgIGF1dG8m
IHBhcmVudElubGluZUJveCA9IGxheW91dEJveC5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICBp
ZiAoJnBhcmVudElubGluZUJveCA9PSAmcm9vdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFdlIGRvbid0IGNvbGxlY3QgaW5rIG92ZXJmbG93IGZvciB0aGUgcm9vdCBpbmxpbmUgYm94Lgot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faW5saW5lQm94SW5kZXhNYXAuY29udGFpbnMoJnBhcmVu
dElubGluZUJveCkpOwotICAgICAgICAgICAgICAgIGF1dG8gYm94SW5rT3ZlcmZsb3cgPSBib3Jk
ZXJCb3hSZWN0OwotICAgICAgICAgICAgICAgIGFkZEJveFNoYWRvd0lua092ZXJmbG93KHN0eWxl
LCBib3hJbmtPdmVyZmxvdyk7Ci0gICAgICAgICAgICAgICAgYm94ZXNbbV9pbmxpbmVCb3hJbmRl
eE1hcC5nZXQoJnBhcmVudElubGluZUJveCldLmFkanVzdElua092ZXJmbG93KGJveElua092ZXJm
bG93KTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhZGp1c3RQYXJlbnRJbmxpbmVCb3hJ
bmtPdmVyZmxvdygpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGxpbmVSdW4uaXNJbmxpbmVCb3hTdGFydCgpKSB7Ci0gICAgICAgICAgICBhdXRvJiBib3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpOwogICAgICAg
ICAgICAgLy8gVGhpcyBpbmxpbmUgYm94IHNob3dlZCB1cCBmaXJzdCBvbiB0aGlzIGxpbmUuCi0g
ICAgICAgICAgICBhdXRvIGlubGluZUJveEJvcmRlckJveCA9IGRpc3BsYXlCb3hSZWN0KCk7Cisg
ICAgICAgICAgICBhcHBlbmRJbmxpbmVCb3hEaXNwbGF5Qm94KGxpbmVSdW4sIGxpbmVCb3guaW5s
aW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGluZVJ1bi5sYXlvdXRCb3goKSksIGRpc3BsYXlCb3hS
ZWN0KCksIGxpbmVCb3guaGFzQ29udGVudCgpLCBib3hlcyk7CiAgICAgICAgICAgICBjb250ZW50
UmlnaHRJblZpc3VhbE9yZGVyICs9IGxpbmVSdW4ubG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAg
ICBpZiAobGluZUJveC5oYXNDb250ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGlua092
ZXJmbG93ID0gWyZdIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbmtPdmVyZmxvdyA9IGlu
bGluZUJveEJvcmRlckJveDsKLSAgICAgICAgICAgICAgICAgICAgYWRkQm94U2hhZG93SW5rT3Zl
cmZsb3coc3R5bGUsIGlua092ZXJmbG93KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu
a092ZXJmbG93OwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6
IEl0J3MgZXhwZWN0ZWQgdG8gbm90IGhhdmUgYW55IGJveGVzIG9uIGVtcHR5IGxpbmVzLiBXZSBz
aG91bGQgcmVjb25zaWRlciB0aGlzLgotICAgICAgICAgICAgICAgIG1faW5saW5lQm94SW5kZXhN
YXAuYWRkKCZsYXlvdXRCb3gsIGJveGVzLnNpemUoKSk7Ci0KLSAgICAgICAgICAgICAgICBhdXRv
JiBpbmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJv
eCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGlubGluZUJveC5pc0lubGluZUJveCgpKTsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoaW5saW5lQm94LmlzRmlyc3RCb3goKSk7Ci0gICAgICAgICAg
ICAgICAgYm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBJbmxpbmVEaXNwbGF5OjpCb3g6OlR5cGU6
Ok5vblJvb3RJbmxpbmVCb3gsIGxheW91dEJveCwgbGluZVJ1bi5iaWRpTGV2ZWwoKSwgaW5saW5l
Qm94Qm9yZGVyQm94LCBpbmtPdmVyZmxvdygpLCB7IH0sIHsgfSwgaW5saW5lQm94Lmhhc0NvbnRl
bnQoKSwgaXNGaXJzdExhc3RCb3goaW5saW5lQm94KSB9KTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgYXV0byBpbmxpbmVCb3hTaXplID0gTGF5b3V0U2l6ZSB7IExheW91dFVuaXQ6OmZy
b21GbG9hdENlaWwoaW5saW5lQm94Qm9yZGVyQm94LndpZHRoKCkpLCBMYXlvdXRVbml0Ojpmcm9t
RmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC5oZWlnaHQoKSkgfTsKLSAgICAgICAgICAgIGF1
dG8gbG9naWNhbFJlY3QgPSBSZWN0IHsgTGF5b3V0UG9pbnQgeyBpbmxpbmVCb3hCb3JkZXJCb3gu
dG9wTGVmdCgpIH0sIGlubGluZUJveFNpemUgfTsKLSAgICAgICAgICAgIGJveEdlb21ldHJ5LnNl
dExvZ2ljYWxUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7Ci0gICAgICAgICAgICBhdXRv
IGNvbnRlbnRCb3hIZWlnaHQgPSBsb2dpY2FsUmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52
ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3Io
MF9sdSkpOwotICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChjb250
ZW50Qm94SGVpZ2h0KTsKLSAgICAgICAgICAgIGF1dG8gY29udGVudEJveFdpZHRoID0gbG9naWNh
bFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9t
ZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKTsKLSAgICAgICAgICAgIGJv
eEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChjb250ZW50Qm94V2lkdGgpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxpbmVSdW4uaXNMaW5lU3Bhbm5p
bmdJbmxpbmVCb3hTdGFydCgpKSB7CkBAIC0yNjIsMzIgKzQwOCw5IEBAIHZvaWQgSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVCb3hlc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZUNv
bnRlbnQoY29uCiAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgZXh0ZW5kIHRoZSBzcGFubmluZyBs
aW5lIGJveCBvdmVyIHRvIHRoaXMgbGluZSAtYWxzbyB0aGVyZSBpcyBubyBuZXh0IGxpbmUgaW4g
Y2FzZXMgbGlrZSB0aGlzLgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgbV9pbmxpbmVCb3hJbmRleE1hcC5hZGQoJmxheW91dEJveCwgYm94ZXMu
c2l6ZSgpKTsKLSAgICAgICAgICAgIGF1dG8gaW5saW5lQm94Qm9yZGVyQm94ID0gZGlzcGxheUJv
eFJlY3QoKTsKLQotICAgICAgICAgICAgYXV0byBpbmtPdmVyZmxvdyA9IFsmXSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byBpbmtPdmVyZmxvdyA9IGlubGluZUJveEJvcmRlckJveDsKLSAgICAgICAg
ICAgICAgICBhZGRCb3hTaGFkb3dJbmtPdmVyZmxvdyhzdHlsZSwgaW5rT3ZlcmZsb3cpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBpbmtPdmVyZmxvdzsKLSAgICAgICAgICAgIH07Ci0KKyAgICAg
ICAgICAgIGFwcGVuZFNwYW5uaW5nSW5saW5lQm94RGlzcGxheUJveChsaW5lUnVuLCBsaW5lQm94
LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxpbmVSdW4ubGF5b3V0Qm94KCkpLCBkaXNwbGF5
Qm94UmVjdCgpLCBib3hlcyk7CiAgICAgICAgICAgICAvLyBUaGUgY29udGVudCByaWdodCBlZGdl
IHNob3VsZCBub3QgaW5jbHVkZSB0aGUgZW50aXJlIGlubGluZSBib3ggaGVyZSAoaW5jbHVkaW5n
IGl0cyBjb250ZW50IGFuZCByaWdodCBlZGdlKS4KICAgICAgICAgICAgIGNvbnRlbnRSaWdodElu
VmlzdWFsT3JkZXIgKz0gbGluZVJ1bi5sb2dpY2FsV2lkdGgoKTsKLQotICAgICAgICAgICAgYXV0
byYgaW5saW5lQm94ID0gbGluZUJveC5pbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRC
b3gpOwotICAgICAgICAgICAgQVNTRVJUKCFpbmxpbmVCb3guaXNGaXJzdEJveCgpKTsKLSAgICAg
ICAgICAgIGJveGVzLmFwcGVuZCh7IGxpbmVJbmRleCwgSW5saW5lRGlzcGxheTo6Qm94OjpUeXBl
OjpOb25Sb290SW5saW5lQm94LCBsYXlvdXRCb3gsIGxpbmVSdW4uYmlkaUxldmVsKCksIGlubGlu
ZUJveEJvcmRlckJveCwgaW5rT3ZlcmZsb3coKSwgeyB9LCB7IH0sIGlubGluZUJveC5oYXNDb250
ZW50KCksIGlzRmlyc3RMYXN0Qm94KGlubGluZUJveCkgfSk7Ci0KLSAgICAgICAgICAgIGF1dG8g
aW5saW5lQm94U2l6ZSA9IExheW91dFNpemUgeyBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlu
bGluZUJveEJvcmRlckJveC53aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxp
bmVCb3hCb3JkZXJCb3guaGVpZ2h0KCkpIH07Ci0gICAgICAgICAgICBhdXRvIGxvZ2ljYWxSZWN0
ID0gUmVjdCB7IExheW91dFBvaW50IHsgaW5saW5lQm94Qm9yZGVyQm94LnRvcExlZnQoKSB9LCBp
bmxpbmVCb3hTaXplIH07Ci0gICAgICAgICAgICAvLyBNaWRkbGUgb3IgZW5kIG9mIHRoZSBpbmxp
bmUgYm94LiBMZXQncyBzdHJldGNoIHRoZSBib3ggYXMgbmVlZGVkLgotICAgICAgICAgICAgYXV0
byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsK
LSAgICAgICAgICAgIGF1dG8gZW5jbG9zaW5nQm9yZGVyQm94UmVjdCA9IEJveEdlb21ldHJ5Ojpi
b3JkZXJCb3hSZWN0KGJveEdlb21ldHJ5KTsKLSAgICAgICAgICAgIGVuY2xvc2luZ0JvcmRlckJv
eFJlY3QuZXhwYW5kVG9Db250YWluKGxvZ2ljYWxSZWN0KTsKLSAgICAgICAgICAgIGJveEdlb21l
dHJ5LnNldExvZ2ljYWxMZWZ0KGVuY2xvc2luZ0JvcmRlckJveFJlY3QubGVmdCgpKTsKLQotICAg
ICAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChlbmNsb3NpbmdCb3JkZXJC
b3hSZWN0LmhlaWdodCgpIC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib3hHZW9t
ZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkpOwotICAgICAgICAgICAgYm94
R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGVuY2xvc2luZ0JvcmRlckJveFJlY3Qud2lkdGgo
KSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9u
dGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5pc0lubGluZUJveEVuZCgpKSB7CkBAIC0yOTcs
OCArNDIwLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZUJveGVz
QW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb24KICAgICAgICAgQVNTRVJUKGxpbmVS
dW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsKICAgICB9CiB9Ci0KLXZvaWQgSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzT3ZlcmZsb3duUnVuc0ZvckVsbGlwc2lzKERpc3Bs
YXlCb3hlcyYgYm94ZXMsIElubGluZUxheW91dFVuaXQgbGluZUJveExvZ2ljYWxSaWdodCwgY29u
c3Qgc2l6ZV90IGxpbmVJbmRleCkKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpw
cm9jZXNzT3ZlcmZsb3duUnVuc0ZvckVsbGlwc2lzKERpc3BsYXlCb3hlcyYgYm94ZXMsIElubGlu
ZUxheW91dFVuaXQgbGluZUJveExvZ2ljYWxSaWdodCkKIHsKICAgICBpZiAocm9vdCgpLnN0eWxl
KCkudGV4dE92ZXJmbG93KCkgIT0gVGV4dE92ZXJmbG93OjpFbGxpcHNpcykKICAgICAgICAgcmV0
dXJuOwpAQCAtMzEzLDcgKzQzNSw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
Ojpwcm9jZXNzT3ZlcmZsb3duUnVuc0ZvckVsbGlwc2lzKERpc3BsYXlCb3hlcyYKIAogICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gZWxsaXBzaXNT
dHIoJmhvcml6b250YWxFbGxpcHNpcywgMSk7CiAgICAgYXV0byBlbGxpcHNpc1J1biA9IFdlYkNv
cmU6OlRleHRSdW4geyBlbGxpcHNpc1N0ci0+c3RyaW5nKCkgfTsKLSAgICBhdXRvIGVsbGlwc2lz
V2lkdGggPSAhbGluZUluZGV4ID8gcm9vdCgpLmZpcnN0TGluZVN0eWxlKCkuZm9udENhc2NhZGUo
KS53aWR0aChlbGxpcHNpc1J1bikgOiByb290KCkuc3R5bGUoKS5mb250Q2FzY2FkZSgpLndpZHRo
KGVsbGlwc2lzUnVuKTsKKyAgICBhdXRvIGVsbGlwc2lzV2lkdGggPSAhbV9saW5lSW5kZXggPyBy
b290KCkuZmlyc3RMaW5lU3R5bGUoKS5mb250Q2FzY2FkZSgpLndpZHRoKGVsbGlwc2lzUnVuKSA6
IHJvb3QoKS5zdHlsZSgpLmZvbnRDYXNjYWRlKCkud2lkdGgoZWxsaXBzaXNSdW4pOwogICAgIGF1
dG8gZmlyc3RUcnVuY2F0ZWRCb3hJbmRleCA9IGJveGVzLnNpemUoKTsKIAogICAgIGZvciAoYXV0
byBpbmRleCA9IGJveGVzLnNpemUoKTsgaW5kZXgtLTspIHsKQEAgLTM1Miw3ICs0NzQsNyBAQCB2
b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc092ZXJmbG93blJ1bnNGb3JF
bGxpcHNpcyhEaXNwbGF5Qm94ZXMmCiAgICAgICAgIGJveGVzW2luZGV4XS5tb3ZlSG9yaXpvbnRh
bGx5KGNvbnRlbnRSaWdodCAtIGJveGVzW2luZGV4XS5sb2dpY2FsTGVmdCgpKTsKICAgICAvLyBB
bmQgYXBwZW5kIHRoZSBlbGxpcHNpcyBib3ggYXMgdGhlIHRyYWlsaW5nIGl0ZW0uCiAgICAgYXV0
byBlbGxpc3Bpc0JveFJlY3QgPSBJbmxpbmVSZWN0IHsgcm9vdElubGluZUJveFJlY3QudG9wKCks
IGNvbnRlbnRSaWdodCwgZWxsaXBzaXNXaWR0aCwgcm9vdElubGluZUJveFJlY3QuaGVpZ2h0KCkg
fTsKLSAgICBib3hlcy5hcHBlbmQoeyBsaW5lSW5kZXgKKyAgICBib3hlcy5hcHBlbmQoeyBtX2xp
bmVJbmRleAogICAgICAgICAsIElubGluZURpc3BsYXk6OkJveDo6VHlwZTo6RWxsaXBzaXMKICAg
ICAgICAgLCByb290KCkKICAgICAgICAgLCBVQklESV9ERUZBVUxUX0xUUgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAppbmRleCBkYjc3ZDg0
NjcyNGIyZDJhZGYwNWQxODE0ZTJhMDhlMzBkZmJiZDRhLi45Yjc3NDllZDhmZmFmMTBhYzkzNmU5
ZWZhYjgzOWUxNThkM2FiOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXIuaApAQCAtNDQsMTYgKzQ0LDI1IEBAIHB1YmxpYzoKICAgICBE
aXNwbGF5Qm94ZXMgYnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3Qg
TGluZUJveCYsIGNvbnN0IElubGluZVJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29uc3Qgc2l6
ZV90IGxpbmVJbmRleCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVCb3hlc0FuZFVwZGF0
ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jiwg
Y29uc3QgTGluZUJveCYsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRv
cExlZnQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgsIERpc3BsYXlCb3hlcyYpOwotICAgIHZvaWQg
cHJvY2Vzc092ZXJmbG93blJ1bnNGb3JFbGxpcHNpcyhEaXNwbGF5Qm94ZXMmLCBJbmxpbmVMYXlv
dXRVbml0IGxpbmVCb3hMb2dpY2FsUmlnaHQsIGNvbnN0IHNpemVfdCBsaW5lSW5kZXgpOworICAg
IHZvaWQgcHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVu
dCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2lj
YWxUb3BMZWZ0LCBEaXNwbGF5Qm94ZXMmKTsKKyAgICB2b2lkIHByb2Nlc3NCaWRpQ29udGVudChj
b25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBMaW5lQm94JiwgY29uc3QgSW5s
aW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgRGlzcGxheUJveGVzJik7Cisg
ICAgdm9pZCBwcm9jZXNzT3ZlcmZsb3duUnVuc0ZvckVsbGlwc2lzKERpc3BsYXlCb3hlcyYsIElu
bGluZUxheW91dFVuaXQgbGluZUJveExvZ2ljYWxSaWdodCk7CiAgICAgdm9pZCBjb2xsZWN0SW5r
T3ZlcmZsb3dGb3JJbmxpbmVCb3hlcyhjb25zdCBMaW5lQm94JiwgRGlzcGxheUJveGVzJik7CiAK
KyAgICB2b2lkIGFwcGVuZFRleHREaXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYsIGNvbnN0IElu
bGluZVJlY3QmLCBEaXNwbGF5Qm94ZXMmKTsKKyAgICB2b2lkIGFwcGVuZFNvZnRMaW5lQnJlYWtE
aXNwbGF5Qm94KGNvbnN0IExpbmU6OlJ1biYsIGNvbnN0IElubGluZVJlY3QmLCBEaXNwbGF5Qm94
ZXMmKTsKKyAgICB2b2lkIGFwcGVuZEhhcmRMaW5lQnJlYWtEaXNwbGF5Qm94KGNvbnN0IExpbmU6
OlJ1biYsIGNvbnN0IElubGluZVJlY3QmLCBEaXNwbGF5Qm94ZXMmKTsKKyAgICB2b2lkIGFwcGVu
ZEF0b21pY0lubGluZUxldmVsRGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxp
bmVSZWN0JiAsIERpc3BsYXlCb3hlcyYpOworICAgIHZvaWQgYXBwZW5kSW5saW5lQm94RGlzcGxh
eUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJbmxpbmVMZXZlbEJveCYsIGNvbnN0IElubGlu
ZVJlY3QmLCBib29sIGxpbmVoYXNDb250ZW50LCBEaXNwbGF5Qm94ZXMmKTsKKyAgICB2b2lkIGFw
cGVuZFNwYW5uaW5nSW5saW5lQm94RGlzcGxheUJveChjb25zdCBMaW5lOjpSdW4mLCBjb25zdCBJ
bmxpbmVMZXZlbEJveCYsIGNvbnN0IElubGluZVJlY3QmLCBEaXNwbGF5Qm94ZXMmKTsKKwogICAg
IGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0Nv
bnRleHRSb290OyB9CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsgfSAKIAogICAgIGNvbnN0IENvbnRh
aW5lckJveCYgbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0
YXRlJiBtX2Zvcm1hdHRpbmdTdGF0ZTsKICAgICBIYXNoTWFwPGNvbnN0IEJveCosIHNpemVfdD4g
bV9pbmxpbmVCb3hJbmRleE1hcDsKKyAgICBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07CiB9Owog
CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>