<?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>204698</bug_id>
          
          <creation_ts>2019-11-29 03:48:54 -0800</creation_ts>
          <short_desc>Reimplement some PlatformCALayer methods using GraphicsContext instead of CGContextRef</short_desc>
          <delta_ts>2019-11-30 17:07:16 -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>New Bugs</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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1594166</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-29 03:48:54 -0800</bug_when>
    <thetext>Reimplement some PlatformCALayer methods using GraphicsContext instead of CGContextRef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594167</commentid>
    <comment_count>1</comment_count>
      <attachid>384494</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-29 03:49:21 -0800</bug_when>
    <thetext>Created attachment 384494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594254</commentid>
    <comment_count>2</comment_count>
      <attachid>384523</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-29 13:57:25 -0800</bug_when>
    <thetext>Created attachment 384523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594257</commentid>
    <comment_count>3</comment_count>
      <attachid>384525</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-29 14:03:54 -0800</bug_when>
    <thetext>Created attachment 384525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594283</commentid>
    <comment_count>4</comment_count>
      <attachid>384533</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-29 16:57:42 -0800</bug_when>
    <thetext>Created attachment 384533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594312</commentid>
    <comment_count>5</comment_count>
      <attachid>384533</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-11-30 06:56:40 -0800</bug_when>
    <thetext>Comment on attachment 384533
Patch

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

&gt; Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:1239
&gt; +void PlatformCALayerCocoa::enumerateRectsBeingDrawn(GraphicsContext&amp; context, void (^block)(CGRect))

Seems like block should probably take a FloatRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594362</commentid>
    <comment_count>6</comment_count>
      <attachid>384556</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-30 16:24:13 -0800</bug_when>
    <thetext>Created attachment 384556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594373</commentid>
    <comment_count>7</comment_count>
      <attachid>384556</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-30 17:06:57 -0800</bug_when>
    <thetext>Comment on attachment 384556
Patch

Clearing flags on attachment: 384556

Committed r252962: &lt;https://trac.webkit.org/changeset/252962&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594374</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-30 17:06:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594375</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-30 17:07:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/57541634&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384494</attachid>
            <date>2019-11-29 03:49:21 -0800</date>
            <delta_ts>2019-11-29 13:57:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204698-20191129034920.patch</filename>
            <type>text/plain</type>
            <size>27118</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZlNjQ1MTZjOGI4NzEz
ZmExMWM1ODVjZDE1YjdkNjcxMTA5YzMyOC4uZjVjMzhkNTlkMTA0OGZmMzk5MmM0YTk0Mzk3MWQ4
NWMwYjRkZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTExLTI5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlaW1wbGVtZW50
IHNvbWUgUGxhdGZvcm1DQUxheWVyIG1ldGhvZHMgdXNpbmcgR3JhcGhpY3NDb250ZXh0IGluc3Rl
YWQgb2YgQ0dDb250ZXh0UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQ2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiBvcmRlciB0byBtYWtlIFBsYXRmb3JtQ0FMYXllci1sZXZlbCBEaXNwbGF5
TGlzdCByZWNvcmRpbmcgcG9zc2libGUsCisgICAgICAgIHJlaW1wbGVtZW50IGEgZmV3IG1ldGhv
ZHMgaW4gdGVybXMgb2YgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGluc3RlYWQKKyAgICAgICAg
b2YgQ0dDb250ZXh0UmVmIGRpcmVjdGx5LiBOYW1lbHksIGNvbGxlY3RSZWN0c1RvUGFpbnQsIGRy
YXdMYXllckNvbnRlbnRzLAorICAgICAgICBhbmQgZHJhd1JlcGFpbnRJbmRpY2F0b3IuCisKKyAg
ICAgICAgSW4gdGhlIGRyYXdMYXllckNvbnRlbnRzIGNhc2UsIHRoZXJlIGFyZSBvcGVyYXRpb25z
IChsaWtlIHNldHRpbmcgdGhlCisgICAgICAgIEFwcEtpdCBnbG9iYWwgZ3JhcGhpY3MgY29udGV4
dCkgdGhhdCBjYW5ub3QgYmUgZG9uZSB3aXRob3V0IGEgcGxhdGZvcm0KKyAgICAgICAgY29udGV4
dC4gSW4gdGhvc2UgY2FzZXMsIHdlIHNraXAgdGhhdCBvcGVyYXRpb24gaWYgd2UgZG9uJ3QgaGF2
ZSBhCisgICAgICAgIHBsYXRmb3JtIGNvbnRleHQuCisKKyAgICAgICAgQW55dGhpbmcgZGVwZW5k
aW5nIG9uIHRoaXMgZG93bnN0cmVhbSB3aWxsIGJyZWFrIGFuZCBuZWVkIHRvIGJlCisgICAgICAg
IGltcGxlbWVudGVkIGEgZGlmZmVyZW50IHdheSBpbiB0aGUgRGlzcGxheUxpc3QgY2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06CisgICAgICAgICgtW1dlYkxheWVy
IGRyYXdJbkNvbnRleHQ6XSk6CisKIDIwMTktMTEtMjggIEZ1amlpIEhpcm9ub3JpICA8SGlyb25v
cmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9LRVlCT0FSRF9DT0RF
X0FUVFJJQlVURSBhbmQgRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgbWFjcm9zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDUwY2ViYWM5MGRhNTg5MTU2YzMwOGQ1YTY0Y2RjMzkwNWZiYTc5MDkuLmQ5NjkzMWYw
ODZjN2YxMWE0YjAwOTU3ZDQ0YmJiMjNjNWU0MjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTktMTEtMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVpbXBsZW1lbnQgc29tZSBQbGF0Zm9ybUNBTGF5ZXIgbWV0aG9kcyB1c2luZyBH
cmFwaGljc0NvbnRleHQgaW5zdGVhZCBvZiBDR0NvbnRleHRSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKwogMjAxOS0xMS0yOCAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0tF
WUJPQVJEX0NPREVfQVRUUklCVVRFIGFuZCBFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSBt
YWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMDg3OTE0NWIxM2M1N2Q2YzIwN2JiZjQ5MjY5ZmZmMmZkMzAzYWM1ZS4u
MjA5MDM2ZjkyNTlhN2QwOGY5YjdlZDNjYTM5ZGFmNWI0MjE4ZWUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ3OCw3
ICs0NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CiAKICAgICBlbnVtIEluY2x1ZGVEZXZpY2VTY2FsZSB7IERlZmluaXRlbHlJbmNsdWRlRGV2
aWNlU2NhbGUsIFBvc3NpYmx5SW5jbHVkZURldmljZVNjYWxlIH07Ci0gICAgQWZmaW5lVHJhbnNm
b3JtIGdldENUTShJbmNsdWRlRGV2aWNlU2NhbGUgaW5jbHVkZVNjYWxlID0gUG9zc2libHlJbmNs
dWRlRGV2aWNlU2NhbGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9y
bSBnZXRDVE0oSW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSA9IFBvc3NpYmx5SW5jbHVk
ZURldmljZVNjYWxlKSBjb25zdDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXBwbGllcyB0aGUg
ZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4dCwgbWFraW5nIHRoZSBjb250ZXh0IGNh
cGFibGUgb2YKICAgICAvLyBhY3RpbmcgYXMgYSBiYXNlLWxldmVsIGNvbnRleHQgZm9yIGEgSGlE
UEkgZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAyMTk5NTI3Y2RkZTRjZWJjNjM5YWIx
NzY2YTY0ODJhOGM1NTBhNjhhLi5kNWIwMzI3Y2YwNGRiNzg0ZTgyMzMxMzA3NzdhMjI0ZTQxNTIz
NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTc5LDI3ICs3OSwzNyBAQCBib29sIFBsYXRmb3JtQ0FM
YXllcjo6Y2FuSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0CiAgICAgICAgIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZTo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOwogfQogCi12b2lk
IFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBpbnQgcmVwYWludENvdW50LCBD
R0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpk
cmF3UmVwYWludEluZGljYXRvcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUGxh
dGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIGludCByZXBhaW50Q291bnQsIENvbG9yIGN1
c3RvbUJhY2tncm91bmRDb2xvcikKIHsKLSAgICBjaGFyIHRleHRbMTZdOyAvLyB0aGF0J3MgYSBs
b3Qgb2YgcmVwYWludHMKLSAgICBzbnByaW50Zih0ZXh0LCBzaXplb2YodGV4dCksICIlZCIsIHJl
cGFpbnRDb3VudCk7Ci0gICAgCi0gICAgRmxvYXRSZWN0IGluZGljYXRvckJveCA9IHBsYXRmb3Jt
Q0FMYXllci0+Ym91bmRzKCk7XAotICAgIGluZGljYXRvckJveC5zZXRMb2NhdGlvbiggeyAxLCAx
IH0gKTsKLSAgICBpbmRpY2F0b3JCb3guc2V0U2l6ZShGbG9hdFNpemUoMTIgKyAxMCAqIHN0cmxl
bih0ZXh0KSwgMjcpKTsKLQotICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKLSAgICAKLSAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCAwLjVmKTsKLSAgICBD
R0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY29udGV4dCwgaW5kaWNhdG9y
Qm94LCAwKTsKLSAgICAKLSAgICBpZiAoY3VzdG9tQmFja2dyb3VuZENvbG9yKQotICAgICAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY3VzdG9tQmFja2dyb3VuZENv
bG9yKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0
LCAwLCAwLjVmLCAwLjI1ZiwgMSk7Ci0gICAgCisgICAgY29uc3QgZmxvYXQgdmVydGljYWxNYXJn
aW4gPSAyLjU7CisgICAgY29uc3QgZmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDU7CisgICAgY29u
c3QgdW5zaWduZWQgZm9udFNpemUgPSAyMjsKKyAgICBjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29s
b3IoMC41ZiwgMC4yNWYsIDEuMGYsIDEuMGYpOworICAgIGNvbnN0IENvbG9yIGFjY2VsZXJhdGVk
Q29udGV4dExhYmVsQ29sb3IoMS4wZiwgMC5mLCAwLmYsIDEuMGYpOworICAgIGNvbnN0IENvbG9y
IHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAxLjBmKTsK
KyAgICBjb25zdCBDb2xvciBsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29sb3IoMC5mLCAwLmYsIDAu
ZiwgMC43NWYpOworICAgIGNvbnN0IENvbG9yIGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IoMC5mLCAw
LmYsIDAuZiwgMC42NWYpOworCisgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZzo6bnVtYmVyKHJl
cGFpbnRDb3VudCkpOworCisgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b247CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOworCisgICAgRm9udENhc2NhZGUgY2Fz
Y2FkZShXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGNhc2NhZGUudXBkYXRlKG51bGxw
dHIpOworCisgICAgZmxvYXQgdGV4dFdpZHRoID0gY2FzY2FkZS53aWR0aCh0ZXh0UnVuKTsKKwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQp
OworCisgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMC41Zik7CisK
KyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGN1c3RvbUJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkgPyBjdXN0b21CYWNrZ3JvdW5kQ29sb3IgOiBiYWNrZ3JvdW5kQ29sb3IpOworICAg
IEZsb2F0UmVjdCBpbmRpY2F0b3JCb3goMSwgMSwgaG9yaXpvbnRhbE1hcmdpbiAqIDIgKyB0ZXh0
V2lkdGgsIHZlcnRpY2FsTWFyZ2luICogMiArIGZvbnRTaXplKTsKICAgICBpZiAocGxhdGZvcm1D
QUxheWVyLT5pc09wYXF1ZSgpKQotICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBp
bmRpY2F0b3JCb3gpOworICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoaW5kaWNhdG9y
Qm94KTsKICAgICBlbHNlIHsKICAgICAgICAgUGF0aCBib3VuZHNQYXRoOwogICAgICAgICBib3Vu
ZHNQYXRoLm1vdmVUbyhpbmRpY2F0b3JCb3gubWF4WE1pbllDb3JuZXIoKSk7CkBAIC0xMTEsMzIg
KzEyMSwyNCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllcgogICAgICAgICBib3VuZHNQYXRoLmFk
ZExpbmVUbyhGbG9hdFBvaW50KGluZGljYXRvckJveC54KCkgKyBjb3JuZXJDaHVuaywgaW5kaWNh
dG9yQm94LnkoKSkpOwogICAgICAgICBib3VuZHNQYXRoLmNsb3NlU3VicGF0aCgpOwogCi0gICAg
ICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgYm91bmRzUGF0aC5wbGF0Zm9ybVBhdGgoKSk7
Ci0gICAgICAgIENHQ29udGV4dEZpbGxQYXRoKGNvbnRleHQpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuZmlsbFBhdGgoYm91bmRzUGF0aCk7CiAgICAgfQogCiAgICAgaWYgKHBsYXRmb3JtQ0FM
YXllci0+b3duZXIoKS0+aXNVc2luZ0Rpc3BsYXlMaXN0RHJhd2luZyhwbGF0Zm9ybUNBTGF5ZXIp
KSB7Ci0gICAgICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIDAsIDAsIDAs
IDAuNjUpOwotICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMik7Ci0gICAg
ICAgIENHQ29udGV4dFN0cm9rZVJlY3QoY29udGV4dCwgaW5kaWNhdG9yQm94KTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc3Ryb2tlUmVjdChpbmRpY2F0b3JCb3gsIDIpOwogICAg
IH0KIAotICAgIENHRmxvYXQgc3Ryb2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplID0gMDsK
LSAgICBDb2xvciBzdHJva2VDb2xvcjsKLQogICAgIGlmICghcGxhdGZvcm1DQUxheWVyLT5pc09w
YXF1ZSgpICYmIHBsYXRmb3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4
dCgpICYmIHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpIHsKLSAgICAgICAg
c3Ryb2tlQ29sb3IgPSBDb2xvcigwLCAwLCAwLCAyMDApOwotICAgICAgICBzdHJva2VXaWR0aEFz
UGVyY2VudGFnZU9mRm9udFNpemUgPSAtNC41OyAvLyBOZWdhdGl2ZSBtZWFucyAic3Ryb2tlIGFu
ZCBmaWxsIjsgc2VlIGRvY3MgZm9yIGtDVFN0cm9rZVdpZHRoQXR0cmlidXRlTmFtZS4KKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmVhckdseXBoTWFza091dGxpbmVD
b2xvcik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoNC41KTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwg
fCBUZXh0TW9kZVN0cm9rZSk7CiAgICAgfQogCi0gICAgaWYgKHBsYXRmb3JtQ0FMYXllci0+YWNj
ZWxlcmF0ZXNEcmF3aW5nKCkpCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250
ZXh0LCAxLCAwLCAwLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxD
b2xvcihjb250ZXh0LCAxLCAxLCAxLCAxKTsKLSAgICAKLSAgICBwbGF0Zm9ybUNBTGF5ZXItPmRy
YXdUZXh0QXRQb2ludChjb250ZXh0LCBpbmRpY2F0b3JCb3gueCgpICsgNSwgaW5kaWNhdG9yQm94
LnkoKSArIDIyLCBDR1NpemVNYWtlKDEsIC0xKSwgMjIsIHRleHQsIHN0cmxlbih0ZXh0KSwgc3Ry
b2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplLCBzdHJva2VDb2xvcik7Ci0gICAgCi0gICAg
Q0dDb250ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoY29udGV4dCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpID8g
YWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvciA6IHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxD
b2xvcik7CisKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd1RleHQoY2FzY2FkZSwgdGV4dFJ1biwg
RmxvYXRQb2ludChpbmRpY2F0b3JCb3gueCgpICsgaG9yaXpvbnRhbE1hcmdpbiwgaW5kaWNhdG9y
Qm94LnkoKSArIGZvbnRTaXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpmbGlwQ29udGV4dChDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dGbG9hdCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IGViYzEwMGMwNmFm
MzNiZDNiNmNiZmUyODA5ZGUzOWYyYmRiNTNhYjguLjVkOWYwMWU4MjRjMzc2ZGYzYTIyNDkxM2Q5
NzAyMzUzNjc0ODRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgog
ICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Q
b29sKExheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgSW50U2l6ZSk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXdu
KENHQ29udGV4dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihHcmFwaGljc0NvbnRleHQmLCB2b2lkICheYmxv
Y2spKENHUmVjdCkpID0gMDsKICNlbmRpZgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdl
YkxheWVyTWF4UmVjdHNUb1BhaW50ID0gNTsKQEAgLTI4MSw5ICsyODEsOSBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBWZWN0b3I8RmxvYXRSZWN0LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gUmVw
YWludFJlY3RMaXN0OwogICAgICAgICAKICAgICAvLyBGdW5jdGlvbnMgYWxsb3dzIHVzIHRvIHNo
YXJlIGltcGxlbWVudGF0aW9uIGFjcm9zcyBXZWJUaWxlZExheWVyIGFuZCBXZWJMYXllcgotICAg
IHN0YXRpYyBSZXBhaW50UmVjdExpc3QgY29sbGVjdFJlY3RzVG9QYWludChDR0NvbnRleHRSZWYs
IFBsYXRmb3JtQ0FMYXllciopOwotICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKENH
Q29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0eVJlY3Rz
LCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcik7Ci0gICAgc3RhdGljIHZvaWQgZHJhd1JlcGFp
bnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENv
dW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CisgICAgc3RhdGljIFJlcGFp
bnRSZWN0TGlzdCBjb2xsZWN0UmVjdHNUb1BhaW50KEdyYXBoaWNzQ29udGV4dCYsIFBsYXRmb3Jt
Q0FMYXllciopOworICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIFBsYXRmb3JtQ0FMYXllciosIFJlcGFpbnRSZWN0TGlzdCYsIEdyYXBoaWNzTGF5ZXJQ
YWludEJlaGF2aW9yKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3UmVwYWludEluZGljYXRvcihHcmFw
aGljc0NvbnRleHQmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENvdW50LCBDb2xvciBj
dXN0b21CYWNrZ3JvdW5kQ29sb3IgPSB7IH0pOwogICAgIHN0YXRpYyBDR1JlY3QgZnJhbWVGb3JM
YXllcihjb25zdCBQbGF0Zm9ybUxheWVyKik7CiAKICAgICB2b2lkIG1vdmVUb0xheWVyUG9vbCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3Bw
CmluZGV4IDQ5NmEzMmRmMjc2NWM3MTk2NGNkMDMyYjMyOTExNDZhZGQ2NDYzMWEuLjdkOGIwZWY5
ZTY1YmQ3YWU0YjhkZjc2YWY3NzlmMzJjNTllODdlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTcyOSwxMyArNzI5LDEzIEBA
IHZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1sYXll
ck9yaWdpbi54KCksIC1sYXllck9yaWdpbi55KCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKG1f
c2NhbGUpOwogCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IGRpcnR5
UmVjdHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAgUGxhdGZvcm1DQUxheWVy
OjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAmbV9jb250cm9s
bGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzLCBsYXllclBhaW50QmVoYXZpb3IpOworICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBkaXJ0eVJlY3RzID0gUGxhdGZvcm1D
QUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIHBsYXRmb3JtQ0FMYXllcik7Cisg
ICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgJm1fY29u
dHJvbGxlci5yb290TGF5ZXIoKSwgZGlydHlSZWN0cywgbGF5ZXJQYWludEJlaGF2aW9yKTsKICAg
ICB9CiAKICAgICBpbnQgcmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVw
YWludENvdW50KHBsYXRmb3JtQ0FMYXllcik7CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5
ZXIoKS5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAg
ICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3Io
bV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkpKTsKKyAgICAgICAgUGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBwbGF0Zm9ybUNBTGF5ZXIsIHJl
cGFpbnRDb3VudCwgbV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkpOwogCiAgICAg
aWYgKG1fY29udHJvbGxlci5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVQYXJ0KHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24o
KS54KCksIHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24oKS55KCksIHBsYXRmb3JtQ0FMYXllci0+
Ym91bmRzKCkuc2l6ZSgpLndpZHRoKCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgp
LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4IDVkOTY2OWI3
YzYwOGEzNGVmODQxYWQ5ZGU2ZDkzYjNiN2FmZTlhMmIuLjgyMjg4OGE1MzA1YWYwNTUwZDkyYjNh
ZTZhNDI3YmY1YWQyYjZmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAt
MTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0
ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oR3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAo
XmJsb2NrKShDR1JlY3QpKSBvdmVycmlkZTsKIAogICAgIHVuc2lnbmVkIGJhY2tpbmdTdG9yZUJ5
dGVzUGVyUGl4ZWwoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQppbmRleCA0NjU3NDI4MGIxYzhhMmE1NTY4YzU4ZmQ0YjkxYTM4YzBiMzNkMTkxLi4x
ZGE4NDc0NmVlNGEzNGUwMzNiMWUwNzFiYjJkODFjZDY5OWM0OTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldEFuY2hvclBvaW50T25NYWluVGhyZWFkKEZsb2F0UG9pbnQzRCB2YWx1ZSkKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1QbGF0Zm9ybUNBTGF5ZXI6OlJlcGFp
bnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKQorUGxhdGZvcm1D
QUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1Bh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIpCiB7CiAgICAgX19ibG9jayBkb3VibGUgdG90YWxSZWN0QXJlYSA9IDA7CiAgICAgX19i
bG9jayB1bnNpZ25lZCByZWN0Q291bnQgPSAwOwpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgUGxhdGZv
cm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNU
b1BhaW50KENHQ29udGV4dFIKICAgICAgICAgZGlydHlSZWN0cy5hcHBlbmQocmVjdCk7CiAgICAg
fSk7CiAgICAgCi0gICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlwQm91
bmRpbmdCb3goY29udGV4dCk7CisgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBjb250ZXh0LmNs
aXBCb3VuZHMoKTsKICAgICBkb3VibGUgY2xpcEFyZWEgPSBjbGlwQm91bmRzLndpZHRoKCkgKiBj
bGlwQm91bmRzLmhlaWdodCgpOwogICAgIAogICAgIGlmIChyZWN0Q291bnQgPj0gd2ViTGF5ZXJN
YXhSZWN0c1RvUGFpbnQgfHwgdG90YWxSZWN0QXJlYSA+PSBjbGlwQXJlYSAqIHdlYkxheWVyV2Fz
dGVkU3BhY2VUaHJlc2hvbGQpIHsKQEAgLTExNDQsNyArMTE0NCw3IEBAIFBsYXRmb3JtQ0FMYXll
cjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChD
R0NvbnRleHRSCiAgICAgcmV0dXJuIGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0
cywgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IgbGF5ZXJQYWludEJlaGF2aW9yKQordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgUmVw
YWludFJlY3RMaXN0JiBkaXJ0eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvciBsYXll
clBhaW50QmVoYXZpb3IpCiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBs
YXllckNvbnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJD
b250ZW50cykKQEAgLTExNTMsNjIgKzExNTMsNjIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRy
YXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUMK
ICAgICBpZiAoIWxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclJlcGFpbnRDb3VudChwbGF0
Zm9ybUNBTGF5ZXIpKQogICAgICAgICBsYXllclBhaW50QmVoYXZpb3IgfD0gR3JhcGhpY3NMYXll
clBhaW50Rmlyc3RUaWxlUGFpbnQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdL
U2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKLSNlbmRpZgotICAgIAotICAgIENH
Q29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0gICAgCisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzYXZlcihncmFwaGljc0NvbnRleHQpOworCiAgICAgLy8gV2UgbmV2ZXIgdXNlIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXAgb24gTWFjLgogICAgIEFT
U0VSVChsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BE
b3duKTsKLSAgICAKKworICAgIGlmIChncmFwaGljc0NvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0
KCkpIHsKKyAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQucGxh
dGZvcm1Db250ZXh0KCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGb250QW50aWFs
aWFzaW5nU3RhdGVTYXZlciBmb250QW50aWFsaWFzaW5nU3RhdGUoY29udGV4dCwgW3BsYXRmb3Jt
Q0FMYXllci0+cGxhdGZvcm1MYXllcigpIGlzT3BhcXVlXSk7Ci0gICAgZm9udEFudGlhbGlhc2lu
Z1N0YXRlLnNldHVwKFtXQUtXaW5kb3cgaGFzTGFuZHNjYXBlT3JpZW50YXRpb25dKTsKKyAgICAg
ICAgV0tTZXRDdXJyZW50R3JhcGhpY3NDb250ZXh0KGNvbnRleHQpOworCisgICAgICAgIEZvbnRB
bnRpYWxpYXNpbmdTdGF0ZVNhdmVyIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZShjb250ZXh0LCBbcGxh
dGZvcm1DQUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgaXNPcGFxdWVdKTsKKyAgICAgICAgZm9udEFu
dGlhbGlhc2luZ1N0YXRlLnNldHVwKFtXQUtXaW5kb3cgaGFzTGFuZHNjYXBlT3JpZW50YXRpb25d
KTsKICNlbHNlCi0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKLSAg
ICAKLSAgICAvLyBTZXQgdXAgYW4gTlNHcmFwaGljc0NvbnRleHQgZm9yIHRoZSBjb250ZXh0LCBz
byB0aGF0IHBhcnRzIG9mIEFwcEtpdCB0aGF0IHJlbHkgb24KLSAgICAvLyB0aGUgY3VycmVudCBO
U0dyYXBoaWNzQ29udGV4dCAoZS5nLiBOU0NlbGwgZHJhd2luZykgZ2V0IHRoZSByaWdodCBvbmUu
Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBOU0dyYXBoaWNz
Q29udGV4dCogbGF5ZXJDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4
dFdpdGhHcmFwaGljc1BvcnQ6Y29udGV4dCBmbGlwcGVkOllFU107Ci0gICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRD
b250ZXh0OmxheWVyQ29udGV4dF07CisgICAgICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzYXZlR3Jh
cGhpY3NTdGF0ZV07CisKKyAgICAgICAgLy8gU2V0IHVwIGFuIE5TR3JhcGhpY3NDb250ZXh0IGZv
ciB0aGUgY29udGV4dCwgc28gdGhhdCBwYXJ0cyBvZiBBcHBLaXQgdGhhdCByZWx5IG9uCisgICAg
ICAgIC8vIHRoZSBjdXJyZW50IE5TR3JhcGhpY3NDb250ZXh0IChlLmcuIE5TQ2VsbCBkcmF3aW5n
KSBnZXQgdGhlIHJpZ2h0IG9uZS4KKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KKyAgICAgICAgTlNHcmFwaGljc0NvbnRleHQqIGxheWVyQ29udGV4dCA9IFtOU0dy
YXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNvbnRleHQgZmxp
cHBlZDpZRVNdOworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAg
ICAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OmxheWVyQ29udGV4dF07
CiAjZW5kaWYKKyAgICB9CiAgICAgCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3Jh
cGhpY3NDb250ZXh0KGNvbnRleHQpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0SXNDQUxh
eWVyQ29udGV4dCh0cnVlKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldElzQWNjZWxlcmF0
ZWRDb250ZXh0KHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpOwotICAgICAg
ICAKKwogICAgICAgICBpZiAoIWxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRz
T3BhcXVlKCkgJiYgIXBsYXRmb3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2Vk
VGV4dCgpICYmIEZvbnRDYXNjYWRlOjppc1N1YnBpeGVsQW50aWFsaWFzaW5nQXZhaWxhYmxlKCkp
IHsKICAgICAgICAgICAgIC8vIFR1cm4gb2ZmIGZvbnQgc21vb3RoaW5nIHRvIGltcHJvdmUgdGhl
IGFwcGVhcmFuY2Ugb2YgdGV4dCByZW5kZXJlZCBvbnRvIGEgdHJhbnNwYXJlbnQgYmFja2dyb3Vu
ZC4KICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyhmYWxz
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIC8v
IEl0J3MgaW1wb3J0YW50IHRvIGdldCB0aGUgY2xpcCBmcm9tIHRoZSBjb250ZXh0LCBiZWNhdXNl
IGl0IG1heSBiZSBzaWduaWZpY2FudGx5CiAgICAgICAgIC8vIHNtYWxsZXIgdGhhbiB0aGUgbGF5
ZXIgYm91bmRzIChlLmcuIHRpbGVkIGxheWVycykKLSAgICAgICAgVGhlbWVNYWM6OnNldEZvY3Vz
UmluZ0NsaXBSZWN0KENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KSk7CisgICAg
ICAgIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVjdChncmFwaGljc0NvbnRleHQuY2xpcEJv
dW5kcygpKTsKICNlbmRpZgotICAgICAgICAKKwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJl
Y3QgOiBkaXJ0eVJlY3RzKSB7CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4
dC5jbGlwKHJlY3QpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxheWVyQ29udGVudHMt
PnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMocGxhdGZvcm1DQUxheWVyLCBncmFwaGljc0Nv
bnRleHQsIHJlY3QsIGxheWVyUGFpbnRCZWhhdmlvcik7CiAgICAgICAgIH0KLSAgICAgICAgCisK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICBmb250QW50aWFsaWFzaW5nU3RhdGUu
cmVzdG9yZSgpOwogI2Vsc2UKICAgICAgICAgVGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBSZWN0
KEZsb2F0UmVjdCgpKTsKLSAgICAgICAgCisKICAgICAgICAgW05TR3JhcGhpY3NDb250ZXh0IHJl
c3RvcmVHcmFwaGljc1N0YXRlXTsKICNlbmRpZgogICAgIH0KIAotICAgIENHQ29udGV4dFJlc3Rv
cmVHU3RhdGUoY29udGV4dCk7CisgICAgc2F2ZXIucmVzdG9yZSgpOwogCiAgICAgLy8gUmUtZmV0
Y2ggdGhlIGxheWVyIG93bmVyLCBzaW5jZSA8cmRhcjovL3Byb2JsZW0vOTEyNTE1MT4gaW5kaWNh
dGVzIHRoYXQgaXQgbWlnaHQgaGF2ZSBiZWVuIGRlc3Ryb3llZCBkdXJpbmcgcGFpbnRpbmcuCiAg
ICAgbGF5ZXJDb250ZW50cyA9IHBsYXRmb3JtQ0FMYXllci0+b3duZXIoKTsKQEAgLTEyMTksNyAr
MTIxOSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRl
eHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DCiAgICAgaW50IHJlcGFpbnRDb3VudCA9
IGxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChwbGF0
Zm9ybUNBTGF5ZXIpOwogCiAgICAgaWYgKCFwbGF0Zm9ybUNBTGF5ZXItPnVzZXNUaWxlZEJhY2tp
bmdMYXllcigpICYmIGxheWVyQ29udGVudHMgJiYgbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxh
eWVyU2hvd1JlcGFpbnRDb3VudGVyKHBsYXRmb3JtQ0FMYXllcikpCi0gICAgICAgIGRyYXdSZXBh
aW50SW5kaWNhdG9yKGNvbnRleHQsIHBsYXRmb3JtQ0FMYXllciwgcmVwYWludENvdW50LCBudWxs
cHRyKTsKKyAgICAgICAgZHJhd1JlcGFpbnRJbmRpY2F0b3IoZ3JhcGhpY3NDb250ZXh0LCBwbGF0
Zm9ybUNBTGF5ZXIsIHJlcGFpbnRDb3VudCk7CiB9CiAKIENHUmVjdCBQbGF0Zm9ybUNBTGF5ZXI6
OmZyYW1lRm9yTGF5ZXIoY29uc3QgUGxhdGZvcm1MYXllciogdGlsZUxheWVyKQpAQCAtMTIzMiwx
NSArMTIzMiwxNSBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
Y3JlYXRlQ29tcGF0aWJsZUxheWVyKFBsYXRmb3JtQ0FMYXllcgogICAgIHJldHVybiBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKGxheWVyVHlwZSwgY2xpZW50KTsKIH0KIAotdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBj
b250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCit2b2lkIFBsYXRmb3JtQ0FMYXllckNvY29h
OjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCB2b2lk
ICheYmxvY2spKENHUmVjdCkpCiB7CiAgICAgQ0dTUmVnaW9uT2JqIHJlZ2lvbiA9IChDR1NSZWdp
b25PYmopW21fbGF5ZXIgcmVnaW9uQmVpbmdEcmF3bl07CiAgICAgaWYgKCFyZWdpb24pIHsKLSAg
ICAgICAgYmxvY2soQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpKTsKKyAgICAg
ICAgYmxvY2soY29udGV4dC5jbGlwQm91bmRzKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNm
b3JtSW52ZXJ0KENHQ29udGV4dEdldENUTShjb250ZXh0KSk7CisgICAgQ0dBZmZpbmVUcmFuc2Zv
cm0gaW52ZXJzZVRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KGNvbnRleHQuZ2V0
Q1RNKCkpOwogICAgIENHU1JlZ2lvbkVudW1lcmF0b3JPYmogZW51bWVyYXRvciA9IENHU1JlZ2lv
bkVudW1lcmF0b3IocmVnaW9uKTsKICAgICBjb25zdCBDR1JlY3QqIG5leHRSZWN0OwogICAgIHdo
aWxlICgobmV4dFJlY3QgPSBDR1NOZXh0UmVjdChlbnVtZXJhdG9yKSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKaW5kZXggZDZhN2MxNjhmMGU0NDFmZDdkMjkwZmM0ZmUzMTM2MGM1ODVk
NTY4NC4uMjE0ZTM5MTdkNTUzZjg0ZjM0ZGQ5OWYwNjZlOThlY2NlNWMwOTdiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXll
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBQbGF0Zm9ybUNBTGF5ZXIq
IFBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKHZvaWQqIHBsYXRmb3JtTGF5ZXIpCiAg
ICAgcmV0dXJuIGxheWVySW50ZXJuID8gbGF5ZXJJbnRlcm4tPm93bmVyKCkgOiBudWxscHRyOwog
fQogCi1QbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNv
bGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqKQorUGxhdGZv
cm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNU
b1BhaW50KEdyYXBoaWNzQ29udGV4dCYsIFBsYXRmb3JtQ0FMYXllciopCiB7CiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBhY3R1YWxseSBjb2xsZWN0IHJlY3RzIHRvIHVzZSBpbnN0ZWFkIG9mIGRl
ZmF1bHRpbmcgdG8gV2luZG93cycKICAgICAvLyBub3JtYWwgZHJhd2luZyBwYXRoLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IDgw
ODgwNGIyZjg1ZmZhZWUyYjQwMTI3N2UyMzc5YjhjY2UyMzZiYzcuLjY1ZTg3ODIwNjNlYjkwNTQ5
ZjgwY2FmYjViYjkxMjMzYWI2MjNjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KQEAgLTUxLDggKzUxLDkgQEAgLSAodm9pZClkcmF3
SW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAogewogICAgIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXll
cigoX19icmlkZ2Ugdm9pZCopc2VsZik7CiAgICAgaWYgKGxheWVyKSB7Ci0gICAgICAgIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IHJlY3RzVG9QYWludCA9IFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChjb250ZXh0LCBsYXllcik7
Ci0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29u
dGV4dCwgbGF5ZXIsIHJlY3RzVG9QYWludCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludFNuYXBzaG90dGluZyA6IFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJQYWludE5vcm1hbCk7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCBncmFw
aGljc0NvbnRleHQoY29udGV4dCk7CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6
UmVwYWludFJlY3RMaXN0IHJlY3RzVG9QYWludCA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6
Y29sbGVjdFJlY3RzVG9QYWludChncmFwaGljc0NvbnRleHQsIGxheWVyKTsKKyAgICAgICAgV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhncmFwaGljc0NvbnRleHQs
IGxheWVyLCByZWN0c1RvUGFpbnQsIHNlbGYuaXNSZW5kZXJpbmdJbkNvbnRleHQgPyBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyUGFpbnRTbmFwc2hvdHRpbmcgOiBXZWJDb3JlOjpHcmFwaGljc0xheWVy
UGFpbnROb3JtYWwpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRl
eCBhOTllOWM1ZjNhMzhjNmEyMDViN2JjZWI1MDhiMDFiY2U5MWY4N2IxLi5mNWYxM2I4MjYwZmRi
MjBkYjY4YjYwZWJjNjc4M2ZmODBlM2FmMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
aApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlJik7CiAKLSAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihD
R0NvbnRleHRSZWYsIHZvaWQgKF4pKENHUmVjdCkpOworICAgIHZvaWQgZW51bWVyYXRlUmVjdHNC
ZWluZ0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIHZvaWQgKF4pKENHUmVjdCkpOwog
CiAgICAgYm9vbCBoYXNGcm9udEJ1ZmZlcigpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCmluZGV4IGI1Y2FkZDFkZjZjYThlNDAzNGVhMjRkMDhjMzNmMDNmYzdhMWJi
OWIuLjQ0MDYxMDBmY2Y3OTgxZDM0ZWFiZDc3ZGY5MDE4ODU5MjMxMDEwNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTM1MywxMyArMzUzLDEzIEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVXZWJMYXllcjoKICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKLSAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0
cywgZmxhZ3MpOworICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNv
bnRlbnRzKGNvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywgZmxhZ3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFy
a1N5c3RlbUJhY2tkcm9wTGF5ZXI6CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllcjoKICAgICAgICAgLy8gRklYTUU6IFRo
ZXNlIGhhdmUgYSBtb3JlIGNvbXBsaWNhdGVkIGxheWVyIGhpZXJhcmNoeS4gV2UgbmVlZCB0byBw
YWludCBpbnRvCiAgICAgICAgIC8vIGEgY2hpbGQgbGF5ZXIgaW4gb3JkZXIgdG8gc2VlIHRoZSBy
ZW5kZXJlZCByZXN1bHRzLgotICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdM
YXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBmbGFncyk7
CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29u
dGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoKICAgICBj
YXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBA
IC0zODIsOSArMzgyLDkgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29u
dGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEMKICAgICBtX2Zyb250Q29u
dGV4dFBlbmRpbmdGbHVzaCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiB9CiAKLXZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRl
eHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQordm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQogewotICAgIENHQWZmaW5lVHJh
bnNmb3JtIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRl
eHRHZXRDVE0oY29udGV4dCkpOworICAgIENHQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zv
cm0gPSBDR0FmZmluZVRyYW5zZm9ybUludmVydChjb250ZXh0LmdldENUTSgpKTsKIAogICAgIC8v
IFdlIGRvbid0IHdhbnQgdG8gdW4tYXBwbHkgdGhlIGZsaXBwaW5nIG9yIGNvbnRlbnRzU2NhbGUs
CiAgICAgLy8gYmVjYXVzZSB0aGV5J3JlIG5vdCBhcHBsaWVkIHRvIHJlcGFpbnQgcmVjdHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDQ2
ZThhYTA5OTg2NDVhOGNlNWQyZDdiOTU3Zjk5YWZkYzM4ZjQ2ODEuLmU3NjA4YmYxNTQyNDQxZmVh
NWEzMTcxZDEyN2EyYWYwNzdhMmI3ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC04OTEsNyArODkxLDcgQEAgUmVmPFBsYXRmb3JtQ0FM
YXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGVDb21wYXRpYmxlTGF5ZXIoUGxhdGZv
cm1DQUxheWUKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJU
eXBlLCBjbGllbnQsICptX2NvbnRleHQpOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90
ZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkIChe
YmxvY2spKENHUmVjdCkpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW51bWVyYXRlUmVj
dHNCZWluZ0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgdm9pZCAoXmJs
b2NrKShDR1JlY3QpKQogewogICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUtPmVudW1lcmF0
ZVJlY3RzQmVpbmdEcmF3bihjb250ZXh0LCBibG9jayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggYzMxOThhMGJhNzg3MGYyOGZhMmUwOTg1
YTE5ZjU2MDQ2MzQ0YzIyMC4uNGVhMWVmYzJiMWI2ZGM0YjJiNWZiY2M2MGYxZjE5ZWMzZjU3ZDE2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAt
MTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0
ZUNvbXBhdGlibGVMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dS
ZWN0KSkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdWludDMyX3QgaG9zdGluZ0NvbnRleHRJRCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384523</attachid>
            <date>2019-11-29 13:57:25 -0800</date>
            <delta_ts>2019-11-29 14:03:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204698-20191129135724.patch</filename>
            <type>text/plain</type>
            <size>27999</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZlNjQ1MTZjOGI4NzEz
ZmExMWM1ODVjZDE1YjdkNjcxMTA5YzMyOC4uZjVjMzhkNTlkMTA0OGZmMzk5MmM0YTk0Mzk3MWQ4
NWMwYjRkZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTExLTI5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlaW1wbGVtZW50
IHNvbWUgUGxhdGZvcm1DQUxheWVyIG1ldGhvZHMgdXNpbmcgR3JhcGhpY3NDb250ZXh0IGluc3Rl
YWQgb2YgQ0dDb250ZXh0UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQ2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiBvcmRlciB0byBtYWtlIFBsYXRmb3JtQ0FMYXllci1sZXZlbCBEaXNwbGF5
TGlzdCByZWNvcmRpbmcgcG9zc2libGUsCisgICAgICAgIHJlaW1wbGVtZW50IGEgZmV3IG1ldGhv
ZHMgaW4gdGVybXMgb2YgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGluc3RlYWQKKyAgICAgICAg
b2YgQ0dDb250ZXh0UmVmIGRpcmVjdGx5LiBOYW1lbHksIGNvbGxlY3RSZWN0c1RvUGFpbnQsIGRy
YXdMYXllckNvbnRlbnRzLAorICAgICAgICBhbmQgZHJhd1JlcGFpbnRJbmRpY2F0b3IuCisKKyAg
ICAgICAgSW4gdGhlIGRyYXdMYXllckNvbnRlbnRzIGNhc2UsIHRoZXJlIGFyZSBvcGVyYXRpb25z
IChsaWtlIHNldHRpbmcgdGhlCisgICAgICAgIEFwcEtpdCBnbG9iYWwgZ3JhcGhpY3MgY29udGV4
dCkgdGhhdCBjYW5ub3QgYmUgZG9uZSB3aXRob3V0IGEgcGxhdGZvcm0KKyAgICAgICAgY29udGV4
dC4gSW4gdGhvc2UgY2FzZXMsIHdlIHNraXAgdGhhdCBvcGVyYXRpb24gaWYgd2UgZG9uJ3QgaGF2
ZSBhCisgICAgICAgIHBsYXRmb3JtIGNvbnRleHQuCisKKyAgICAgICAgQW55dGhpbmcgZGVwZW5k
aW5nIG9uIHRoaXMgZG93bnN0cmVhbSB3aWxsIGJyZWFrIGFuZCBuZWVkIHRvIGJlCisgICAgICAg
IGltcGxlbWVudGVkIGEgZGlmZmVyZW50IHdheSBpbiB0aGUgRGlzcGxheUxpc3QgY2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06CisgICAgICAgICgtW1dlYkxheWVy
IGRyYXdJbkNvbnRleHQ6XSk6CisKIDIwMTktMTEtMjggIEZ1amlpIEhpcm9ub3JpICA8SGlyb25v
cmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9LRVlCT0FSRF9DT0RF
X0FUVFJJQlVURSBhbmQgRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgbWFjcm9zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDUwY2ViYWM5MGRhNTg5MTU2YzMwOGQ1YTY0Y2RjMzkwNWZiYTc5MDkuLmQ5NjkzMWYw
ODZjN2YxMWE0YjAwOTU3ZDQ0YmJiMjNjNWU0MjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTktMTEtMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVpbXBsZW1lbnQgc29tZSBQbGF0Zm9ybUNBTGF5ZXIgbWV0aG9kcyB1c2luZyBH
cmFwaGljc0NvbnRleHQgaW5zdGVhZCBvZiBDR0NvbnRleHRSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKwogMjAxOS0xMS0yOCAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0tF
WUJPQVJEX0NPREVfQVRUUklCVVRFIGFuZCBFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSBt
YWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMDg3OTE0NWIxM2M1N2Q2YzIwN2JiZjQ5MjY5ZmZmMmZkMzAzYWM1ZS4u
MjA5MDM2ZjkyNTlhN2QwOGY5YjdlZDNjYTM5ZGFmNWI0MjE4ZWUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ3OCw3
ICs0NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CiAKICAgICBlbnVtIEluY2x1ZGVEZXZpY2VTY2FsZSB7IERlZmluaXRlbHlJbmNsdWRlRGV2
aWNlU2NhbGUsIFBvc3NpYmx5SW5jbHVkZURldmljZVNjYWxlIH07Ci0gICAgQWZmaW5lVHJhbnNm
b3JtIGdldENUTShJbmNsdWRlRGV2aWNlU2NhbGUgaW5jbHVkZVNjYWxlID0gUG9zc2libHlJbmNs
dWRlRGV2aWNlU2NhbGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9y
bSBnZXRDVE0oSW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSA9IFBvc3NpYmx5SW5jbHVk
ZURldmljZVNjYWxlKSBjb25zdDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXBwbGllcyB0aGUg
ZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4dCwgbWFraW5nIHRoZSBjb250ZXh0IGNh
cGFibGUgb2YKICAgICAvLyBhY3RpbmcgYXMgYSBiYXNlLWxldmVsIGNvbnRleHQgZm9yIGEgSGlE
UEkgZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAyMTk5NTI3Y2RkZTRjZWJjNjM5YWIx
NzY2YTY0ODJhOGM1NTBhNjhhLi5kNWIwMzI3Y2YwNGRiNzg0ZTgyMzMxMzA3NzdhMjI0ZTQxNTIz
NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTc5LDI3ICs3OSwzNyBAQCBib29sIFBsYXRmb3JtQ0FM
YXllcjo6Y2FuSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0CiAgICAgICAgIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZTo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOwogfQogCi12b2lk
IFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBpbnQgcmVwYWludENvdW50LCBD
R0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpk
cmF3UmVwYWludEluZGljYXRvcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUGxh
dGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIGludCByZXBhaW50Q291bnQsIENvbG9yIGN1
c3RvbUJhY2tncm91bmRDb2xvcikKIHsKLSAgICBjaGFyIHRleHRbMTZdOyAvLyB0aGF0J3MgYSBs
b3Qgb2YgcmVwYWludHMKLSAgICBzbnByaW50Zih0ZXh0LCBzaXplb2YodGV4dCksICIlZCIsIHJl
cGFpbnRDb3VudCk7Ci0gICAgCi0gICAgRmxvYXRSZWN0IGluZGljYXRvckJveCA9IHBsYXRmb3Jt
Q0FMYXllci0+Ym91bmRzKCk7XAotICAgIGluZGljYXRvckJveC5zZXRMb2NhdGlvbiggeyAxLCAx
IH0gKTsKLSAgICBpbmRpY2F0b3JCb3guc2V0U2l6ZShGbG9hdFNpemUoMTIgKyAxMCAqIHN0cmxl
bih0ZXh0KSwgMjcpKTsKLQotICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKLSAgICAKLSAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCAwLjVmKTsKLSAgICBD
R0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY29udGV4dCwgaW5kaWNhdG9y
Qm94LCAwKTsKLSAgICAKLSAgICBpZiAoY3VzdG9tQmFja2dyb3VuZENvbG9yKQotICAgICAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY3VzdG9tQmFja2dyb3VuZENv
bG9yKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0
LCAwLCAwLjVmLCAwLjI1ZiwgMSk7Ci0gICAgCisgICAgY29uc3QgZmxvYXQgdmVydGljYWxNYXJn
aW4gPSAyLjU7CisgICAgY29uc3QgZmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDU7CisgICAgY29u
c3QgdW5zaWduZWQgZm9udFNpemUgPSAyMjsKKyAgICBjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29s
b3IoMC41ZiwgMC4yNWYsIDEuMGYsIDEuMGYpOworICAgIGNvbnN0IENvbG9yIGFjY2VsZXJhdGVk
Q29udGV4dExhYmVsQ29sb3IoMS4wZiwgMC5mLCAwLmYsIDEuMGYpOworICAgIGNvbnN0IENvbG9y
IHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAxLjBmKTsK
KyAgICBjb25zdCBDb2xvciBsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29sb3IoMC5mLCAwLmYsIDAu
ZiwgMC43NWYpOworICAgIGNvbnN0IENvbG9yIGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IoMC5mLCAw
LmYsIDAuZiwgMC42NWYpOworCisgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZzo6bnVtYmVyKHJl
cGFpbnRDb3VudCkpOworCisgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b247CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOworCisgICAgRm9udENhc2NhZGUgY2Fz
Y2FkZShXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGNhc2NhZGUudXBkYXRlKG51bGxw
dHIpOworCisgICAgZmxvYXQgdGV4dFdpZHRoID0gY2FzY2FkZS53aWR0aCh0ZXh0UnVuKTsKKwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQp
OworCisgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMC41Zik7CisK
KyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGN1c3RvbUJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkgPyBjdXN0b21CYWNrZ3JvdW5kQ29sb3IgOiBiYWNrZ3JvdW5kQ29sb3IpOworICAg
IEZsb2F0UmVjdCBpbmRpY2F0b3JCb3goMSwgMSwgaG9yaXpvbnRhbE1hcmdpbiAqIDIgKyB0ZXh0
V2lkdGgsIHZlcnRpY2FsTWFyZ2luICogMiArIGZvbnRTaXplKTsKICAgICBpZiAocGxhdGZvcm1D
QUxheWVyLT5pc09wYXF1ZSgpKQotICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBp
bmRpY2F0b3JCb3gpOworICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoaW5kaWNhdG9y
Qm94KTsKICAgICBlbHNlIHsKICAgICAgICAgUGF0aCBib3VuZHNQYXRoOwogICAgICAgICBib3Vu
ZHNQYXRoLm1vdmVUbyhpbmRpY2F0b3JCb3gubWF4WE1pbllDb3JuZXIoKSk7CkBAIC0xMTEsMzIg
KzEyMSwyNCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllcgogICAgICAgICBib3VuZHNQYXRoLmFk
ZExpbmVUbyhGbG9hdFBvaW50KGluZGljYXRvckJveC54KCkgKyBjb3JuZXJDaHVuaywgaW5kaWNh
dG9yQm94LnkoKSkpOwogICAgICAgICBib3VuZHNQYXRoLmNsb3NlU3VicGF0aCgpOwogCi0gICAg
ICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgYm91bmRzUGF0aC5wbGF0Zm9ybVBhdGgoKSk7
Ci0gICAgICAgIENHQ29udGV4dEZpbGxQYXRoKGNvbnRleHQpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuZmlsbFBhdGgoYm91bmRzUGF0aCk7CiAgICAgfQogCiAgICAgaWYgKHBsYXRmb3JtQ0FM
YXllci0+b3duZXIoKS0+aXNVc2luZ0Rpc3BsYXlMaXN0RHJhd2luZyhwbGF0Zm9ybUNBTGF5ZXIp
KSB7Ci0gICAgICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIDAsIDAsIDAs
IDAuNjUpOwotICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMik7Ci0gICAg
ICAgIENHQ29udGV4dFN0cm9rZVJlY3QoY29udGV4dCwgaW5kaWNhdG9yQm94KTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc3Ryb2tlUmVjdChpbmRpY2F0b3JCb3gsIDIpOwogICAg
IH0KIAotICAgIENHRmxvYXQgc3Ryb2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplID0gMDsK
LSAgICBDb2xvciBzdHJva2VDb2xvcjsKLQogICAgIGlmICghcGxhdGZvcm1DQUxheWVyLT5pc09w
YXF1ZSgpICYmIHBsYXRmb3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4
dCgpICYmIHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpIHsKLSAgICAgICAg
c3Ryb2tlQ29sb3IgPSBDb2xvcigwLCAwLCAwLCAyMDApOwotICAgICAgICBzdHJva2VXaWR0aEFz
UGVyY2VudGFnZU9mRm9udFNpemUgPSAtNC41OyAvLyBOZWdhdGl2ZSBtZWFucyAic3Ryb2tlIGFu
ZCBmaWxsIjsgc2VlIGRvY3MgZm9yIGtDVFN0cm9rZVdpZHRoQXR0cmlidXRlTmFtZS4KKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmVhckdseXBoTWFza091dGxpbmVD
b2xvcik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoNC41KTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwg
fCBUZXh0TW9kZVN0cm9rZSk7CiAgICAgfQogCi0gICAgaWYgKHBsYXRmb3JtQ0FMYXllci0+YWNj
ZWxlcmF0ZXNEcmF3aW5nKCkpCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250
ZXh0LCAxLCAwLCAwLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxD
b2xvcihjb250ZXh0LCAxLCAxLCAxLCAxKTsKLSAgICAKLSAgICBwbGF0Zm9ybUNBTGF5ZXItPmRy
YXdUZXh0QXRQb2ludChjb250ZXh0LCBpbmRpY2F0b3JCb3gueCgpICsgNSwgaW5kaWNhdG9yQm94
LnkoKSArIDIyLCBDR1NpemVNYWtlKDEsIC0xKSwgMjIsIHRleHQsIHN0cmxlbih0ZXh0KSwgc3Ry
b2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplLCBzdHJva2VDb2xvcik7Ci0gICAgCi0gICAg
Q0dDb250ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoY29udGV4dCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpID8g
YWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvciA6IHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxD
b2xvcik7CisKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd1RleHQoY2FzY2FkZSwgdGV4dFJ1biwg
RmxvYXRQb2ludChpbmRpY2F0b3JCb3gueCgpICsgaG9yaXpvbnRhbE1hcmdpbiwgaW5kaWNhdG9y
Qm94LnkoKSArIGZvbnRTaXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpmbGlwQ29udGV4dChDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dGbG9hdCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IGViYzEwMGMwNmFm
MzNiZDNiNmNiZmUyODA5ZGUzOWYyYmRiNTNhYjguLjVkOWYwMWU4MjRjMzc2ZGYzYTIyNDkxM2Q5
NzAyMzUzNjc0ODRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgog
ICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Q
b29sKExheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgSW50U2l6ZSk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXdu
KENHQ29udGV4dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihHcmFwaGljc0NvbnRleHQmLCB2b2lkICheYmxv
Y2spKENHUmVjdCkpID0gMDsKICNlbmRpZgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdl
YkxheWVyTWF4UmVjdHNUb1BhaW50ID0gNTsKQEAgLTI4MSw5ICsyODEsOSBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBWZWN0b3I8RmxvYXRSZWN0LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gUmVw
YWludFJlY3RMaXN0OwogICAgICAgICAKICAgICAvLyBGdW5jdGlvbnMgYWxsb3dzIHVzIHRvIHNo
YXJlIGltcGxlbWVudGF0aW9uIGFjcm9zcyBXZWJUaWxlZExheWVyIGFuZCBXZWJMYXllcgotICAg
IHN0YXRpYyBSZXBhaW50UmVjdExpc3QgY29sbGVjdFJlY3RzVG9QYWludChDR0NvbnRleHRSZWYs
IFBsYXRmb3JtQ0FMYXllciopOwotICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKENH
Q29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0eVJlY3Rz
LCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcik7Ci0gICAgc3RhdGljIHZvaWQgZHJhd1JlcGFp
bnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENv
dW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CisgICAgc3RhdGljIFJlcGFp
bnRSZWN0TGlzdCBjb2xsZWN0UmVjdHNUb1BhaW50KEdyYXBoaWNzQ29udGV4dCYsIFBsYXRmb3Jt
Q0FMYXllciopOworICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIFBsYXRmb3JtQ0FMYXllciosIFJlcGFpbnRSZWN0TGlzdCYsIEdyYXBoaWNzTGF5ZXJQ
YWludEJlaGF2aW9yKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3UmVwYWludEluZGljYXRvcihHcmFw
aGljc0NvbnRleHQmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENvdW50LCBDb2xvciBj
dXN0b21CYWNrZ3JvdW5kQ29sb3IgPSB7IH0pOwogICAgIHN0YXRpYyBDR1JlY3QgZnJhbWVGb3JM
YXllcihjb25zdCBQbGF0Zm9ybUxheWVyKik7CiAKICAgICB2b2lkIG1vdmVUb0xheWVyUG9vbCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3Bw
CmluZGV4IDQ5NmEzMmRmMjc2NWM3MTk2NGNkMDMyYjMyOTExNDZhZGQ2NDYzMWEuLjdkOGIwZWY5
ZTY1YmQ3YWU0YjhkZjc2YWY3NzlmMzJjNTllODdlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTcyOSwxMyArNzI5LDEzIEBA
IHZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1sYXll
ck9yaWdpbi54KCksIC1sYXllck9yaWdpbi55KCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKG1f
c2NhbGUpOwogCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IGRpcnR5
UmVjdHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAgUGxhdGZvcm1DQUxheWVy
OjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAmbV9jb250cm9s
bGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzLCBsYXllclBhaW50QmVoYXZpb3IpOworICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBkaXJ0eVJlY3RzID0gUGxhdGZvcm1D
QUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIHBsYXRmb3JtQ0FMYXllcik7Cisg
ICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgJm1fY29u
dHJvbGxlci5yb290TGF5ZXIoKSwgZGlydHlSZWN0cywgbGF5ZXJQYWludEJlaGF2aW9yKTsKICAg
ICB9CiAKICAgICBpbnQgcmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVw
YWludENvdW50KHBsYXRmb3JtQ0FMYXllcik7CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5
ZXIoKS5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAg
ICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3Io
bV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkpKTsKKyAgICAgICAgUGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBwbGF0Zm9ybUNBTGF5ZXIsIHJl
cGFpbnRDb3VudCwgbV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkpOwogCiAgICAg
aWYgKG1fY29udHJvbGxlci5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVQYXJ0KHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24o
KS54KCksIHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24oKS55KCksIHBsYXRmb3JtQ0FMYXllci0+
Ym91bmRzKCkuc2l6ZSgpLndpZHRoKCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgp
LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4IDVkOTY2OWI3
YzYwOGEzNGVmODQxYWQ5ZGU2ZDkzYjNiN2FmZTlhMmIuLjgyMjg4OGE1MzA1YWYwNTUwZDkyYjNh
ZTZhNDI3YmY1YWQyYjZmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAt
MTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0
ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oR3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAo
XmJsb2NrKShDR1JlY3QpKSBvdmVycmlkZTsKIAogICAgIHVuc2lnbmVkIGJhY2tpbmdTdG9yZUJ5
dGVzUGVyUGl4ZWwoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQppbmRleCA0NjU3NDI4MGIxYzhhMmE1NTY4YzU4ZmQ0YjkxYTM4YzBiMzNkMTkxLi5j
OWY3ODA1ODk4MjliMjFkZWNiODA4NjRkM2RkZmQyZjYyYzZkYTA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldEFuY2hvclBvaW50T25NYWluVGhyZWFkKEZsb2F0UG9pbnQzRCB2YWx1ZSkKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1QbGF0Zm9ybUNBTGF5ZXI6OlJlcGFp
bnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKQorUGxhdGZvcm1D
QUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1Bh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIpCiB7CiAgICAgX19ibG9jayBkb3VibGUgdG90YWxSZWN0QXJlYSA9IDA7CiAgICAgX19i
bG9jayB1bnNpZ25lZCByZWN0Q291bnQgPSAwOwpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgUGxhdGZv
cm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNU
b1BhaW50KENHQ29udGV4dFIKICAgICAgICAgZGlydHlSZWN0cy5hcHBlbmQocmVjdCk7CiAgICAg
fSk7CiAgICAgCi0gICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlwQm91
bmRpbmdCb3goY29udGV4dCk7CisgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBjb250ZXh0LmNs
aXBCb3VuZHMoKTsKICAgICBkb3VibGUgY2xpcEFyZWEgPSBjbGlwQm91bmRzLndpZHRoKCkgKiBj
bGlwQm91bmRzLmhlaWdodCgpOwogICAgIAogICAgIGlmIChyZWN0Q291bnQgPj0gd2ViTGF5ZXJN
YXhSZWN0c1RvUGFpbnQgfHwgdG90YWxSZWN0QXJlYSA+PSBjbGlwQXJlYSAqIHdlYkxheWVyV2Fz
dGVkU3BhY2VUaHJlc2hvbGQpIHsKQEAgLTExNDQsNyArMTE0NCw3IEBAIFBsYXRmb3JtQ0FMYXll
cjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChD
R0NvbnRleHRSCiAgICAgcmV0dXJuIGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0
cywgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IgbGF5ZXJQYWludEJlaGF2aW9yKQordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgUmVw
YWludFJlY3RMaXN0JiBkaXJ0eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvciBsYXll
clBhaW50QmVoYXZpb3IpCiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBs
YXllckNvbnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJD
b250ZW50cykKQEAgLTExNTMsNjIgKzExNTMsNjYgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRy
YXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUMK
ICAgICBpZiAoIWxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclJlcGFpbnRDb3VudChwbGF0
Zm9ybUNBTGF5ZXIpKQogICAgICAgICBsYXllclBhaW50QmVoYXZpb3IgfD0gR3JhcGhpY3NMYXll
clBhaW50Rmlyc3RUaWxlUGFpbnQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdL
U2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKLSNlbmRpZgotICAgIAotICAgIENH
Q29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0gICAgCisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzYXZlcihncmFwaGljc0NvbnRleHQpOworCiAgICAgLy8gV2UgbmV2ZXIgdXNlIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXAgb24gTWFjLgogICAgIEFT
U0VSVChsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BE
b3duKTsKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRm9udEFudGlhbGlh
c2luZ1N0YXRlU2F2ZXIgZm9udEFudGlhbGlhc2luZ1N0YXRlKGNvbnRleHQsIFtwbGF0Zm9ybUNB
TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBpc09wYXF1ZV0pOwotICAgIGZvbnRBbnRpYWxpYXNpbmdT
dGF0ZS5zZXR1cChbV0FLV2luZG93IGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXSk7CisgICAgV1RG
OjpPcHRpb25hbDxGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlcj4gZm9udEFudGlhbGlhc2luZ1N0
YXRlOworI2VuZGlmCisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQo
KSkgeworICAgICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBXS1NldEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoY29udGV4dCk7CisKKyAgICAgICAgZm9udEFudGlhbGlhc2lu
Z1N0YXRlID0geyBjb250ZXh0LCBbcGxhdGZvcm1DQUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgaXNP
cGFxdWVdIH07CisgICAgICAgIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZS0+c2V0dXAoW1dBS1dpbmRv
dyBoYXNMYW5kc2NhcGVPcmllbnRhdGlvbl0pOwogI2Vsc2UKLSAgICBbTlNHcmFwaGljc0NvbnRl
eHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwotICAgIAotICAgIC8vIFNldCB1cCBhbiBOU0dyYXBoaWNz
Q29udGV4dCBmb3IgdGhlIGNvbnRleHQsIHNvIHRoYXQgcGFydHMgb2YgQXBwS2l0IHRoYXQgcmVs
eSBvbgotICAgIC8vIHRoZSBjdXJyZW50IE5TR3JhcGhpY3NDb250ZXh0IChlLmcuIE5TQ2VsbCBk
cmF3aW5nKSBnZXQgdGhlIHJpZ2h0IG9uZS4KLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgotICAgIE5TR3JhcGhpY3NDb250ZXh0KiBsYXllckNvbnRleHQgPSBbTlNHcmFw
aGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpjb250ZXh0IGZsaXBw
ZWQ6WUVTXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbTlNH
cmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bGF5ZXJDb250ZXh0XTsKKyAgICAgICAg
W05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKKworICAgICAgICAvLyBTZXQg
dXAgYW4gTlNHcmFwaGljc0NvbnRleHQgZm9yIHRoZSBjb250ZXh0LCBzbyB0aGF0IHBhcnRzIG9m
IEFwcEtpdCB0aGF0IHJlbHkgb24KKyAgICAgICAgLy8gdGhlIGN1cnJlbnQgTlNHcmFwaGljc0Nv
bnRleHQgKGUuZy4gTlNDZWxsIGRyYXdpbmcpIGdldCB0aGUgcmlnaHQgb25lLgorICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICBOU0dyYXBoaWNzQ29u
dGV4dCogbGF5ZXJDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdp
dGhHcmFwaGljc1BvcnQ6Y29udGV4dCBmbGlwcGVkOllFU107CisgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3Vy
cmVudENvbnRleHQ6bGF5ZXJDb250ZXh0XTsKICNlbmRpZgorICAgIH0KICAgICAKICAgICB7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoY29udGV4dCk7CiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRJc0NBTGF5ZXJDb250ZXh0KHRydWUpOwogICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0SXNBY2NlbGVyYXRlZENvbnRleHQocGxhdGZvcm1DQUxheWVyLT5hY2Nl
bGVyYXRlc0RyYXdpbmcoKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghbGF5ZXJDb250ZW50
cy0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFxdWUoKSAmJiAhcGxhdGZvcm1DQUxheWVyLT5z
dXBwb3J0c1N1YnBpeGVsQW50aWFsaWFzZWRUZXh0KCkgJiYgRm9udENhc2NhZGU6OmlzU3VicGl4
ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKSkgewogICAgICAgICAgICAgLy8gVHVybiBvZmYgZm9u
dCBzbW9vdGhpbmcgdG8gaW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0ZXh0IHJlbmRlcmVkIG9u
dG8gYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldFNob3VsZFNtb290aEZvbnRzKGZhbHNlKTsKICAgICAgICAgfQotICAgICAgICAKKwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAgICAgLy8gSXQncyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBjbGlw
IGZyb20gdGhlIGNvbnRleHQsIGJlY2F1c2UgaXQgbWF5IGJlIHNpZ25pZmljYW50bHkKICAgICAg
ICAgLy8gc21hbGxlciB0aGFuIHRoZSBsYXllciBib3VuZHMgKGUuZy4gdGlsZWQgbGF5ZXJzKQot
ICAgICAgICBUaGVtZU1hYzo6c2V0Rm9jdXNSaW5nQ2xpcFJlY3QoQ0dDb250ZXh0R2V0Q2xpcEJv
dW5kaW5nQm94KGNvbnRleHQpKTsKKyAgICAgICAgVGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBS
ZWN0KGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRzKCkpOwogI2VuZGlmCi0gICAgICAgIAorCiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IGRpcnR5UmVjdHMpIHsKICAgICAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNsaXAocmVjdCk7Ci0gICAgICAgICAgICAKKwog
ICAgICAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhw
bGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4dCwgcmVjdCwgbGF5ZXJQYWludEJlaGF2aW9y
KTsKICAgICAgICAgfQotICAgICAgICAKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
ICAgIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZS5yZXN0b3JlKCk7CisgICAgICAgIGlmIChmb250QW50
aWFsaWFzaW5nU3RhdGUpCisgICAgICAgICAgICBmb250QW50aWFsaWFzaW5nU3RhdGUtPnJlc3Rv
cmUoKTsKICNlbHNlCiAgICAgICAgIFRoZW1lTWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVjdChGbG9h
dFJlY3QoKSk7Ci0gICAgICAgIAorCiAgICAgICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3Jl
R3JhcGhpY3NTdGF0ZV07CiAjZW5kaWYKICAgICB9CiAKLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0
YXRlKGNvbnRleHQpOworICAgIHNhdmVyLnJlc3RvcmUoKTsKIAogICAgIC8vIFJlLWZldGNoIHRo
ZSBsYXllciBvd25lciwgc2luY2UgPHJkYXI6Ly9wcm9ibGVtLzkxMjUxNTE+IGluZGljYXRlcyB0
aGF0IGl0IG1pZ2h0IGhhdmUgYmVlbiBkZXN0cm95ZWQgZHVyaW5nIHBhaW50aW5nLgogICAgIGxh
eWVyQ29udGVudHMgPSBwbGF0Zm9ybUNBTGF5ZXItPm93bmVyKCk7CkBAIC0xMjE5LDcgKzEyMjMs
NyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQwogICAgIGludCByZXBhaW50Q291bnQgPSBsYXll
ckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQocGxhdGZvcm1D
QUxheWVyKTsKIAogICAgIGlmICghcGxhdGZvcm1DQUxheWVyLT51c2VzVGlsZWRCYWNraW5nTGF5
ZXIoKSAmJiBsYXllckNvbnRlbnRzICYmIGxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclNo
b3dSZXBhaW50Q291bnRlcihwbGF0Zm9ybUNBTGF5ZXIpKQotICAgICAgICBkcmF3UmVwYWludElu
ZGljYXRvcihjb250ZXh0LCBwbGF0Zm9ybUNBTGF5ZXIsIHJlcGFpbnRDb3VudCwgbnVsbHB0cik7
CisgICAgICAgIGRyYXdSZXBhaW50SW5kaWNhdG9yKGdyYXBoaWNzQ29udGV4dCwgcGxhdGZvcm1D
QUxheWVyLCByZXBhaW50Q291bnQpOwogfQogCiBDR1JlY3QgUGxhdGZvcm1DQUxheWVyOjpmcmFt
ZUZvckxheWVyKGNvbnN0IFBsYXRmb3JtTGF5ZXIqIHRpbGVMYXllcikKQEAgLTEyMzIsMTUgKzEy
MzYsMTUgQEAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0
ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZXIKICAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OmNyZWF0ZShsYXllclR5cGUsIGNsaWVudCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1D
QUxheWVyQ29jb2E6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYgY29udGV4
dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6ZW51
bWVyYXRlUmVjdHNCZWluZ0RyYXduKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgdm9pZCAoXmJs
b2NrKShDR1JlY3QpKQogewogICAgIENHU1JlZ2lvbk9iaiByZWdpb24gPSAoQ0dTUmVnaW9uT2Jq
KVttX2xheWVyIHJlZ2lvbkJlaW5nRHJhd25dOwogICAgIGlmICghcmVnaW9uKSB7Ci0gICAgICAg
IGJsb2NrKENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KSk7CisgICAgICAgIGJs
b2NrKGNvbnRleHQuY2xpcEJvdW5kcygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IENHQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUlu
dmVydChDR0NvbnRleHRHZXRDVE0oY29udGV4dCkpOworICAgIENHQWZmaW5lVHJhbnNmb3JtIGlu
dmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUludmVydChjb250ZXh0LmdldENUTSgp
KTsKICAgICBDR1NSZWdpb25FbnVtZXJhdG9yT2JqIGVudW1lcmF0b3IgPSBDR1NSZWdpb25FbnVt
ZXJhdG9yKHJlZ2lvbik7CiAgICAgY29uc3QgQ0dSZWN0KiBuZXh0UmVjdDsKICAgICB3aGlsZSAo
KG5leHRSZWN0ID0gQ0dTTmV4dFJlY3QoZW51bWVyYXRvcikpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uY3BwCmluZGV4IGQ2YTdjMTY4ZjBlNDQxZmQ3ZDI5MGZjNGZlMzEzNjBjNTg1ZDU2ODQu
LmYyZmRmNTJmMzgyMGNhMmE5NjI5ZTBmYjI0MDVjODg5OTIxOGY4ZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgUGxhdGZvcm1DQUxheWVyKiBQbGF0
Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcih2b2lkKiBwbGF0Zm9ybUxheWVyKQogICAgIHJl
dHVybiBsYXllckludGVybiA/IGxheWVySW50ZXJuLT5vd25lcigpIDogbnVsbHB0cjsKIH0KIAot
UGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0
UmVjdHNUb1BhaW50KENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKikKK1BsYXRmb3JtQ0FM
YXllcjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWlu
dChHcmFwaGljc0NvbnRleHQmLCBQbGF0Zm9ybUNBTGF5ZXIqKQogewogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYWN0dWFsbHkgY29sbGVjdCByZWN0cyB0byB1c2UgaW5zdGVhZCBvZiBkZWZhdWx0
aW5nIHRvIFdpbmRvd3MnCiAgICAgLy8gbm9ybWFsIGRyYXdpbmcgcGF0aC4KQEAgLTEwOSw5ICsx
MDksOSBAQCBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6
OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0UgogICAgIHJldHVybiBkaXJ0eVJlY3RzOwog
fQogCi12b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBSZXBh
aW50UmVjdExpc3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBSZXBhaW50UmVjdExpc3QmLCBH
cmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKIHsKLSAgICBpbnRlcm4ocGxhdGZvcm1DQUxheWVy
KS0+ZGlzcGxheUNhbGxiYWNrKHBsYXRmb3JtQ0FMYXllci0+cGxhdGZvcm1MYXllcigpLCBjb250
ZXh0KTsKKyAgICBpbnRlcm4ocGxhdGZvcm1DQUxheWVyKS0+ZGlzcGxheUNhbGxiYWNrKHBsYXRm
b3JtQ0FMYXllci0+cGxhdGZvcm1MYXllcigpLCBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsK
IH0KIAogQ0dSZWN0IFBsYXRmb3JtQ0FMYXllcjo6ZnJhbWVGb3JMYXllcihjb25zdCBQbGF0Zm9y
bUxheWVyKiB0aWxlTGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvV2ViTGF5ZXIubW0KaW5kZXggODA4ODA0YjJmODVmZmFlZTJiNDAxMjc3ZTIzNzliOGNj
ZTIzNmJjNy4uNjVlODc4MjA2M2ViOTA1NDlmODBjYWZiNWJiOTEyMzNhYjYyM2M5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAt
NTEsOCArNTEsOSBAQCAtICh2b2lkKWRyYXdJbkNvbnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0
CiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBsYXllciA9IFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKChfX2JyaWRnZSB2b2lkKilzZWxmKTsKICAgICBp
ZiAobGF5ZXIpIHsKLSAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVj
dExpc3QgcmVjdHNUb1BhaW50ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVj
dHNUb1BhaW50KGNvbnRleHQsIGxheWVyKTsKLSAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBsYXllciwgcmVjdHNUb1BhaW50LCBzZWxm
LmlzUmVuZGVyaW5nSW5Db250ZXh0ID8gV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50U25hcHNo
b3R0aW5nIDogV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50Tm9ybWFsKTsKKyAgICAgICAgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKKyAgICAgICAg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgcmVjdHNUb1BhaW50ID0g
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGdyYXBoaWNzQ29u
dGV4dCwgbGF5ZXIpOworICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXll
ckNvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgbGF5ZXIsIHJlY3RzVG9QYWludCwgc2VsZi5pc1Jl
bmRlcmluZ0luQ29udGV4dCA/IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludFNuYXBzaG90dGlu
ZyA6IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludE5vcm1hbCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IGE5OWU5YzVmM2EzOGM2YTIwNWI3YmNlYjUwOGIw
MWJjZTkxZjg3YjEuLmY1ZjEzYjgyNjBmZGIyMGRiNjhiNjBlYmM2NzgzZmY4MGUzYWYyNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoSVBDOjpEZWNvZGVyJiwgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKIAotICAgIHZvaWQg
ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiwgdm9pZCAoXikoQ0dSZWN0KSk7
CisgICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Jiwgdm9pZCAoXikoQ0dSZWN0KSk7CiAKICAgICBib29sIGhhc0Zyb250QnVmZmVyKCkgY29u
c3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggYjVjYWRkMWRmNmNh
OGU0MDM0ZWEyNGQwOGMzM2YwM2ZjN2ExYmI5Yi4uNDQwNjEwMGZjZjc5ODFkMzRlYWJkNzdkZjkw
MTg4NTkyMzEwMTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtMzUzLDEz
ICszNTMsMTMgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEMKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOgogICAgIGNh
c2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVCYWNrZHJvcExheWVyOgotICAg
ICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNnQ29udGV4
dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBmbGFncyk7CisgICAgICAgIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgbV9sYXllciwgbV9wYWlu
dGluZ1JlY3RzLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjoKICAgICBjYXNl
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExh
eWVyOgogICAgICAgICAvLyBGSVhNRTogVGhlc2UgaGF2ZSBhIG1vcmUgY29tcGxpY2F0ZWQgbGF5
ZXIgaGllcmFyY2h5LiBXZSBuZWVkIHRvIHBhaW50IGludG8KICAgICAgICAgLy8gYSBjaGlsZCBs
YXllciBpbiBvcmRlciB0byBzZWUgdGhlIHJlbmRlcmVkIHJlc3VsdHMuCi0gICAgICAgIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY2dDb250ZXh0LCBtX2xheWVy
LCBtX3BhaW50aW5nUmVjdHMsIGZsYWdzKTsKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBtX2xheWVyLCBtX3BhaW50aW5nUmVjdHMs
IGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUxheWVyOgogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTM4Miw5ICszODIsOSBAQCB2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgQwogICAgIG1fZnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNoID0gY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKTsKIH0KIAotdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW51bWVy
YXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENH
UmVjdCkpCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnVtZXJhdGVSZWN0c0JlaW5n
RHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCB2b2lkICheYmxvY2spKENH
UmVjdCkpCiB7Ci0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZm9ybSA9IENHQWZm
aW5lVHJhbnNmb3JtSW52ZXJ0KENHQ29udGV4dEdldENUTShjb250ZXh0KSk7CisgICAgQ0dBZmZp
bmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KGNv
bnRleHQuZ2V0Q1RNKCkpOwogCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byB1bi1hcHBseSB0aGUg
ZmxpcHBpbmcgb3IgY29udGVudHNTY2FsZSwKICAgICAvLyBiZWNhdXNlIHRoZXkncmUgbm90IGFw
cGxpZWQgdG8gcmVwYWludCByZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKaW5kZXggNDZlOGFhMDk5ODY0NWE4Y2U1ZDJkN2I5NTdmOTlhZmRj
MzhmNDY4MS4uZTc2MDhiZjE1NDI0NDFmZWE1YTMxNzFkMTI3YTJhZjA3N2EyYjdlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTg5MSw3
ICs4OTEsNyBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNy
ZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZQogICAgIHJldHVybiBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OmNyZWF0ZShsYXllclR5cGUsIGNsaWVudCwgKm1fY29udGV4dCk7CiB9CiAK
LXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dD
b250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkKK3ZvaWQgUGxhdGZvcm1D
QUxheWVyUmVtb3RlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCiB7CiAgICAgbV9wcm9wZXJ0
aWVzLmJhY2tpbmdTdG9yZS0+ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKGNvbnRleHQsIGJsb2Nr
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRl
eCBjMzE5OGEwYmE3ODcwZjI4ZmEyZTA5ODVhMTlmNTYwNDYzNDRjMjIwLi40ZWExZWZjMmIxYjZk
YzRiMmI1ZmJjYzYwZjFmMTllYzNmNTdkMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGljOgogCiAgICAg
UmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlQ29tcGF0aWJsZUxheWVyKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29u
dGV4dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSBvdmVycmlkZTsKKyAgICB2b2lkIGVudW1l
cmF0ZVJlY3RzQmVpbmdEcmF3bihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCB2b2lkICheYmxv
Y2spKENHUmVjdCkpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB1aW50MzJfdCBob3N0aW5nQ29u
dGV4dElEKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384525</attachid>
            <date>2019-11-29 14:03:54 -0800</date>
            <delta_ts>2019-11-29 16:57:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204698-20191129140354.patch</filename>
            <type>text/plain</type>
            <size>28026</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZlNjQ1MTZjOGI4NzEz
ZmExMWM1ODVjZDE1YjdkNjcxMTA5YzMyOC4uZjVjMzhkNTlkMTA0OGZmMzk5MmM0YTk0Mzk3MWQ4
NWMwYjRkZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTExLTI5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlaW1wbGVtZW50
IHNvbWUgUGxhdGZvcm1DQUxheWVyIG1ldGhvZHMgdXNpbmcgR3JhcGhpY3NDb250ZXh0IGluc3Rl
YWQgb2YgQ0dDb250ZXh0UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQ2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiBvcmRlciB0byBtYWtlIFBsYXRmb3JtQ0FMYXllci1sZXZlbCBEaXNwbGF5
TGlzdCByZWNvcmRpbmcgcG9zc2libGUsCisgICAgICAgIHJlaW1wbGVtZW50IGEgZmV3IG1ldGhv
ZHMgaW4gdGVybXMgb2YgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGluc3RlYWQKKyAgICAgICAg
b2YgQ0dDb250ZXh0UmVmIGRpcmVjdGx5LiBOYW1lbHksIGNvbGxlY3RSZWN0c1RvUGFpbnQsIGRy
YXdMYXllckNvbnRlbnRzLAorICAgICAgICBhbmQgZHJhd1JlcGFpbnRJbmRpY2F0b3IuCisKKyAg
ICAgICAgSW4gdGhlIGRyYXdMYXllckNvbnRlbnRzIGNhc2UsIHRoZXJlIGFyZSBvcGVyYXRpb25z
IChsaWtlIHNldHRpbmcgdGhlCisgICAgICAgIEFwcEtpdCBnbG9iYWwgZ3JhcGhpY3MgY29udGV4
dCkgdGhhdCBjYW5ub3QgYmUgZG9uZSB3aXRob3V0IGEgcGxhdGZvcm0KKyAgICAgICAgY29udGV4
dC4gSW4gdGhvc2UgY2FzZXMsIHdlIHNraXAgdGhhdCBvcGVyYXRpb24gaWYgd2UgZG9uJ3QgaGF2
ZSBhCisgICAgICAgIHBsYXRmb3JtIGNvbnRleHQuCisKKyAgICAgICAgQW55dGhpbmcgZGVwZW5k
aW5nIG9uIHRoaXMgZG93bnN0cmVhbSB3aWxsIGJyZWFrIGFuZCBuZWVkIHRvIGJlCisgICAgICAg
IGltcGxlbWVudGVkIGEgZGlmZmVyZW50IHdheSBpbiB0aGUgRGlzcGxheUxpc3QgY2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06CisgICAgICAgICgtW1dlYkxheWVy
IGRyYXdJbkNvbnRleHQ6XSk6CisKIDIwMTktMTEtMjggIEZ1amlpIEhpcm9ub3JpICA8SGlyb25v
cmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9LRVlCT0FSRF9DT0RF
X0FUVFJJQlVURSBhbmQgRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgbWFjcm9zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDUwY2ViYWM5MGRhNTg5MTU2YzMwOGQ1YTY0Y2RjMzkwNWZiYTc5MDkuLmQ5NjkzMWYw
ODZjN2YxMWE0YjAwOTU3ZDQ0YmJiMjNjNWU0MjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTktMTEtMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVpbXBsZW1lbnQgc29tZSBQbGF0Zm9ybUNBTGF5ZXIgbWV0aG9kcyB1c2luZyBH
cmFwaGljc0NvbnRleHQgaW5zdGVhZCBvZiBDR0NvbnRleHRSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKwogMjAxOS0xMS0yOCAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0tF
WUJPQVJEX0NPREVfQVRUUklCVVRFIGFuZCBFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSBt
YWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMDg3OTE0NWIxM2M1N2Q2YzIwN2JiZjQ5MjY5ZmZmMmZkMzAzYWM1ZS4u
MjA5MDM2ZjkyNTlhN2QwOGY5YjdlZDNjYTM5ZGFmNWI0MjE4ZWUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ3OCw3
ICs0NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CiAKICAgICBlbnVtIEluY2x1ZGVEZXZpY2VTY2FsZSB7IERlZmluaXRlbHlJbmNsdWRlRGV2
aWNlU2NhbGUsIFBvc3NpYmx5SW5jbHVkZURldmljZVNjYWxlIH07Ci0gICAgQWZmaW5lVHJhbnNm
b3JtIGdldENUTShJbmNsdWRlRGV2aWNlU2NhbGUgaW5jbHVkZVNjYWxlID0gUG9zc2libHlJbmNs
dWRlRGV2aWNlU2NhbGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9y
bSBnZXRDVE0oSW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSA9IFBvc3NpYmx5SW5jbHVk
ZURldmljZVNjYWxlKSBjb25zdDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXBwbGllcyB0aGUg
ZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4dCwgbWFraW5nIHRoZSBjb250ZXh0IGNh
cGFibGUgb2YKICAgICAvLyBhY3RpbmcgYXMgYSBiYXNlLWxldmVsIGNvbnRleHQgZm9yIGEgSGlE
UEkgZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAyMTk5NTI3Y2RkZTRjZWJjNjM5YWIx
NzY2YTY0ODJhOGM1NTBhNjhhLi5kNWIwMzI3Y2YwNGRiNzg0ZTgyMzMxMzA3NzdhMjI0ZTQxNTIz
NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTc5LDI3ICs3OSwzNyBAQCBib29sIFBsYXRmb3JtQ0FM
YXllcjo6Y2FuSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0CiAgICAgICAgIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZTo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOwogfQogCi12b2lk
IFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBpbnQgcmVwYWludENvdW50LCBD
R0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpk
cmF3UmVwYWludEluZGljYXRvcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUGxh
dGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIGludCByZXBhaW50Q291bnQsIENvbG9yIGN1
c3RvbUJhY2tncm91bmRDb2xvcikKIHsKLSAgICBjaGFyIHRleHRbMTZdOyAvLyB0aGF0J3MgYSBs
b3Qgb2YgcmVwYWludHMKLSAgICBzbnByaW50Zih0ZXh0LCBzaXplb2YodGV4dCksICIlZCIsIHJl
cGFpbnRDb3VudCk7Ci0gICAgCi0gICAgRmxvYXRSZWN0IGluZGljYXRvckJveCA9IHBsYXRmb3Jt
Q0FMYXllci0+Ym91bmRzKCk7XAotICAgIGluZGljYXRvckJveC5zZXRMb2NhdGlvbiggeyAxLCAx
IH0gKTsKLSAgICBpbmRpY2F0b3JCb3guc2V0U2l6ZShGbG9hdFNpemUoMTIgKyAxMCAqIHN0cmxl
bih0ZXh0KSwgMjcpKTsKLQotICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKLSAgICAKLSAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCAwLjVmKTsKLSAgICBD
R0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY29udGV4dCwgaW5kaWNhdG9y
Qm94LCAwKTsKLSAgICAKLSAgICBpZiAoY3VzdG9tQmFja2dyb3VuZENvbG9yKQotICAgICAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY3VzdG9tQmFja2dyb3VuZENv
bG9yKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0
LCAwLCAwLjVmLCAwLjI1ZiwgMSk7Ci0gICAgCisgICAgY29uc3QgZmxvYXQgdmVydGljYWxNYXJn
aW4gPSAyLjU7CisgICAgY29uc3QgZmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDU7CisgICAgY29u
c3QgdW5zaWduZWQgZm9udFNpemUgPSAyMjsKKyAgICBjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29s
b3IoMC41ZiwgMC4yNWYsIDEuMGYsIDEuMGYpOworICAgIGNvbnN0IENvbG9yIGFjY2VsZXJhdGVk
Q29udGV4dExhYmVsQ29sb3IoMS4wZiwgMC5mLCAwLmYsIDEuMGYpOworICAgIGNvbnN0IENvbG9y
IHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAxLjBmKTsK
KyAgICBjb25zdCBDb2xvciBsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29sb3IoMC5mLCAwLmYsIDAu
ZiwgMC43NWYpOworICAgIGNvbnN0IENvbG9yIGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IoMC5mLCAw
LmYsIDAuZiwgMC42NWYpOworCisgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZzo6bnVtYmVyKHJl
cGFpbnRDb3VudCkpOworCisgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b247CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOworCisgICAgRm9udENhc2NhZGUgY2Fz
Y2FkZShXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGNhc2NhZGUudXBkYXRlKG51bGxw
dHIpOworCisgICAgZmxvYXQgdGV4dFdpZHRoID0gY2FzY2FkZS53aWR0aCh0ZXh0UnVuKTsKKwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQp
OworCisgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMC41Zik7CisK
KyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGN1c3RvbUJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkgPyBjdXN0b21CYWNrZ3JvdW5kQ29sb3IgOiBiYWNrZ3JvdW5kQ29sb3IpOworICAg
IEZsb2F0UmVjdCBpbmRpY2F0b3JCb3goMSwgMSwgaG9yaXpvbnRhbE1hcmdpbiAqIDIgKyB0ZXh0
V2lkdGgsIHZlcnRpY2FsTWFyZ2luICogMiArIGZvbnRTaXplKTsKICAgICBpZiAocGxhdGZvcm1D
QUxheWVyLT5pc09wYXF1ZSgpKQotICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBp
bmRpY2F0b3JCb3gpOworICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoaW5kaWNhdG9y
Qm94KTsKICAgICBlbHNlIHsKICAgICAgICAgUGF0aCBib3VuZHNQYXRoOwogICAgICAgICBib3Vu
ZHNQYXRoLm1vdmVUbyhpbmRpY2F0b3JCb3gubWF4WE1pbllDb3JuZXIoKSk7CkBAIC0xMTEsMzIg
KzEyMSwyNCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllcgogICAgICAgICBib3VuZHNQYXRoLmFk
ZExpbmVUbyhGbG9hdFBvaW50KGluZGljYXRvckJveC54KCkgKyBjb3JuZXJDaHVuaywgaW5kaWNh
dG9yQm94LnkoKSkpOwogICAgICAgICBib3VuZHNQYXRoLmNsb3NlU3VicGF0aCgpOwogCi0gICAg
ICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgYm91bmRzUGF0aC5wbGF0Zm9ybVBhdGgoKSk7
Ci0gICAgICAgIENHQ29udGV4dEZpbGxQYXRoKGNvbnRleHQpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuZmlsbFBhdGgoYm91bmRzUGF0aCk7CiAgICAgfQogCiAgICAgaWYgKHBsYXRmb3JtQ0FM
YXllci0+b3duZXIoKS0+aXNVc2luZ0Rpc3BsYXlMaXN0RHJhd2luZyhwbGF0Zm9ybUNBTGF5ZXIp
KSB7Ci0gICAgICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIDAsIDAsIDAs
IDAuNjUpOwotICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMik7Ci0gICAg
ICAgIENHQ29udGV4dFN0cm9rZVJlY3QoY29udGV4dCwgaW5kaWNhdG9yQm94KTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc3Ryb2tlUmVjdChpbmRpY2F0b3JCb3gsIDIpOwogICAg
IH0KIAotICAgIENHRmxvYXQgc3Ryb2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplID0gMDsK
LSAgICBDb2xvciBzdHJva2VDb2xvcjsKLQogICAgIGlmICghcGxhdGZvcm1DQUxheWVyLT5pc09w
YXF1ZSgpICYmIHBsYXRmb3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4
dCgpICYmIHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpIHsKLSAgICAgICAg
c3Ryb2tlQ29sb3IgPSBDb2xvcigwLCAwLCAwLCAyMDApOwotICAgICAgICBzdHJva2VXaWR0aEFz
UGVyY2VudGFnZU9mRm9udFNpemUgPSAtNC41OyAvLyBOZWdhdGl2ZSBtZWFucyAic3Ryb2tlIGFu
ZCBmaWxsIjsgc2VlIGRvY3MgZm9yIGtDVFN0cm9rZVdpZHRoQXR0cmlidXRlTmFtZS4KKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmVhckdseXBoTWFza091dGxpbmVD
b2xvcik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoNC41KTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwg
fCBUZXh0TW9kZVN0cm9rZSk7CiAgICAgfQogCi0gICAgaWYgKHBsYXRmb3JtQ0FMYXllci0+YWNj
ZWxlcmF0ZXNEcmF3aW5nKCkpCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250
ZXh0LCAxLCAwLCAwLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxD
b2xvcihjb250ZXh0LCAxLCAxLCAxLCAxKTsKLSAgICAKLSAgICBwbGF0Zm9ybUNBTGF5ZXItPmRy
YXdUZXh0QXRQb2ludChjb250ZXh0LCBpbmRpY2F0b3JCb3gueCgpICsgNSwgaW5kaWNhdG9yQm94
LnkoKSArIDIyLCBDR1NpemVNYWtlKDEsIC0xKSwgMjIsIHRleHQsIHN0cmxlbih0ZXh0KSwgc3Ry
b2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplLCBzdHJva2VDb2xvcik7Ci0gICAgCi0gICAg
Q0dDb250ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoY29udGV4dCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpID8g
YWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvciA6IHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxD
b2xvcik7CisKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd1RleHQoY2FzY2FkZSwgdGV4dFJ1biwg
RmxvYXRQb2ludChpbmRpY2F0b3JCb3gueCgpICsgaG9yaXpvbnRhbE1hcmdpbiwgaW5kaWNhdG9y
Qm94LnkoKSArIGZvbnRTaXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpmbGlwQ29udGV4dChDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dGbG9hdCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IGViYzEwMGMwNmFm
MzNiZDNiNmNiZmUyODA5ZGUzOWYyYmRiNTNhYjguLjVkOWYwMWU4MjRjMzc2ZGYzYTIyNDkxM2Q5
NzAyMzUzNjc0ODRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgog
ICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Q
b29sKExheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgSW50U2l6ZSk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXdu
KENHQ29udGV4dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihHcmFwaGljc0NvbnRleHQmLCB2b2lkICheYmxv
Y2spKENHUmVjdCkpID0gMDsKICNlbmRpZgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdl
YkxheWVyTWF4UmVjdHNUb1BhaW50ID0gNTsKQEAgLTI4MSw5ICsyODEsOSBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBWZWN0b3I8RmxvYXRSZWN0LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gUmVw
YWludFJlY3RMaXN0OwogICAgICAgICAKICAgICAvLyBGdW5jdGlvbnMgYWxsb3dzIHVzIHRvIHNo
YXJlIGltcGxlbWVudGF0aW9uIGFjcm9zcyBXZWJUaWxlZExheWVyIGFuZCBXZWJMYXllcgotICAg
IHN0YXRpYyBSZXBhaW50UmVjdExpc3QgY29sbGVjdFJlY3RzVG9QYWludChDR0NvbnRleHRSZWYs
IFBsYXRmb3JtQ0FMYXllciopOwotICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKENH
Q29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0eVJlY3Rz
LCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcik7Ci0gICAgc3RhdGljIHZvaWQgZHJhd1JlcGFp
bnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENv
dW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CisgICAgc3RhdGljIFJlcGFp
bnRSZWN0TGlzdCBjb2xsZWN0UmVjdHNUb1BhaW50KEdyYXBoaWNzQ29udGV4dCYsIFBsYXRmb3Jt
Q0FMYXllciopOworICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIFBsYXRmb3JtQ0FMYXllciosIFJlcGFpbnRSZWN0TGlzdCYsIEdyYXBoaWNzTGF5ZXJQ
YWludEJlaGF2aW9yKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3UmVwYWludEluZGljYXRvcihHcmFw
aGljc0NvbnRleHQmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENvdW50LCBDb2xvciBj
dXN0b21CYWNrZ3JvdW5kQ29sb3IgPSB7IH0pOwogICAgIHN0YXRpYyBDR1JlY3QgZnJhbWVGb3JM
YXllcihjb25zdCBQbGF0Zm9ybUxheWVyKik7CiAKICAgICB2b2lkIG1vdmVUb0xheWVyUG9vbCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3Bw
CmluZGV4IDQ5NmEzMmRmMjc2NWM3MTk2NGNkMDMyYjMyOTExNDZhZGQ2NDYzMWEuLjdkOGIwZWY5
ZTY1YmQ3YWU0YjhkZjc2YWY3NzlmMzJjNTllODdlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTcyOSwxMyArNzI5LDEzIEBA
IHZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1sYXll
ck9yaWdpbi54KCksIC1sYXllck9yaWdpbi55KCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKG1f
c2NhbGUpOwogCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IGRpcnR5
UmVjdHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAgUGxhdGZvcm1DQUxheWVy
OjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAmbV9jb250cm9s
bGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzLCBsYXllclBhaW50QmVoYXZpb3IpOworICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBkaXJ0eVJlY3RzID0gUGxhdGZvcm1D
QUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIHBsYXRmb3JtQ0FMYXllcik7Cisg
ICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgJm1fY29u
dHJvbGxlci5yb290TGF5ZXIoKSwgZGlydHlSZWN0cywgbGF5ZXJQYWludEJlaGF2aW9yKTsKICAg
ICB9CiAKICAgICBpbnQgcmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVw
YWludENvdW50KHBsYXRmb3JtQ0FMYXllcik7CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5
ZXIoKS5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAg
ICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3Io
bV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkpKTsKKyAgICAgICAgUGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBwbGF0Zm9ybUNBTGF5ZXIsIHJl
cGFpbnRDb3VudCwgbV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkpOwogCiAgICAg
aWYgKG1fY29udHJvbGxlci5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVQYXJ0KHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24o
KS54KCksIHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24oKS55KCksIHBsYXRmb3JtQ0FMYXllci0+
Ym91bmRzKCkuc2l6ZSgpLndpZHRoKCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgp
LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4IDVkOTY2OWI3
YzYwOGEzNGVmODQxYWQ5ZGU2ZDkzYjNiN2FmZTlhMmIuLjgyMjg4OGE1MzA1YWYwNTUwZDkyYjNh
ZTZhNDI3YmY1YWQyYjZmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAt
MTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0
ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oR3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAo
XmJsb2NrKShDR1JlY3QpKSBvdmVycmlkZTsKIAogICAgIHVuc2lnbmVkIGJhY2tpbmdTdG9yZUJ5
dGVzUGVyUGl4ZWwoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQppbmRleCA0NjU3NDI4MGIxYzhhMmE1NTY4YzU4ZmQ0YjkxYTM4YzBiMzNkMTkxLi42
ZjMyODliMDkwNDliOTJkMjViMTVmZWFkYTQ4ODVhYWI3YmRjYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldEFuY2hvclBvaW50T25NYWluVGhyZWFkKEZsb2F0UG9pbnQzRCB2YWx1ZSkKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1QbGF0Zm9ybUNBTGF5ZXI6OlJlcGFp
bnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKQorUGxhdGZvcm1D
QUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1Bh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIpCiB7CiAgICAgX19ibG9jayBkb3VibGUgdG90YWxSZWN0QXJlYSA9IDA7CiAgICAgX19i
bG9jayB1bnNpZ25lZCByZWN0Q291bnQgPSAwOwpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgUGxhdGZv
cm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNU
b1BhaW50KENHQ29udGV4dFIKICAgICAgICAgZGlydHlSZWN0cy5hcHBlbmQocmVjdCk7CiAgICAg
fSk7CiAgICAgCi0gICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlwQm91
bmRpbmdCb3goY29udGV4dCk7CisgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBjb250ZXh0LmNs
aXBCb3VuZHMoKTsKICAgICBkb3VibGUgY2xpcEFyZWEgPSBjbGlwQm91bmRzLndpZHRoKCkgKiBj
bGlwQm91bmRzLmhlaWdodCgpOwogICAgIAogICAgIGlmIChyZWN0Q291bnQgPj0gd2ViTGF5ZXJN
YXhSZWN0c1RvUGFpbnQgfHwgdG90YWxSZWN0QXJlYSA+PSBjbGlwQXJlYSAqIHdlYkxheWVyV2Fz
dGVkU3BhY2VUaHJlc2hvbGQpIHsKQEAgLTExNDQsNyArMTE0NCw3IEBAIFBsYXRmb3JtQ0FMYXll
cjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChD
R0NvbnRleHRSCiAgICAgcmV0dXJuIGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0
cywgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IgbGF5ZXJQYWludEJlaGF2aW9yKQordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgUmVw
YWludFJlY3RMaXN0JiBkaXJ0eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvciBsYXll
clBhaW50QmVoYXZpb3IpCiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBs
YXllckNvbnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJD
b250ZW50cykKQEAgLTExNTMsNjIgKzExNTMsNjYgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRy
YXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUMK
ICAgICBpZiAoIWxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclJlcGFpbnRDb3VudChwbGF0
Zm9ybUNBTGF5ZXIpKQogICAgICAgICBsYXllclBhaW50QmVoYXZpb3IgfD0gR3JhcGhpY3NMYXll
clBhaW50Rmlyc3RUaWxlUGFpbnQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdL
U2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKLSNlbmRpZgotICAgIAotICAgIENH
Q29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0gICAgCisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzYXZlcihncmFwaGljc0NvbnRleHQpOworCiAgICAgLy8gV2UgbmV2ZXIgdXNlIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXAgb24gTWFjLgogICAgIEFT
U0VSVChsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BE
b3duKTsKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRm9udEFudGlhbGlh
c2luZ1N0YXRlU2F2ZXIgZm9udEFudGlhbGlhc2luZ1N0YXRlKGNvbnRleHQsIFtwbGF0Zm9ybUNB
TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBpc09wYXF1ZV0pOwotICAgIGZvbnRBbnRpYWxpYXNpbmdT
dGF0ZS5zZXR1cChbV0FLV2luZG93IGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXSk7CisgICAgV1RG
OjpPcHRpb25hbDxGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlcj4gZm9udEFudGlhbGlhc2luZ1N0
YXRlOworI2VuZGlmCisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQo
KSkgeworICAgICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBXS1NldEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoY29udGV4dCk7CisKKyAgICAgICAgZm9udEFudGlhbGlhc2lu
Z1N0YXRlID0gRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIgeyBjb250ZXh0LCBbcGxhdGZvcm1D
QUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgaXNPcGFxdWVdIH07CisgICAgICAgIGZvbnRBbnRpYWxp
YXNpbmdTdGF0ZS0+c2V0dXAoW1dBS1dpbmRvdyBoYXNMYW5kc2NhcGVPcmllbnRhdGlvbl0pOwog
I2Vsc2UKLSAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwotICAgIAot
ICAgIC8vIFNldCB1cCBhbiBOU0dyYXBoaWNzQ29udGV4dCBmb3IgdGhlIGNvbnRleHQsIHNvIHRo
YXQgcGFydHMgb2YgQXBwS2l0IHRoYXQgcmVseSBvbgotICAgIC8vIHRoZSBjdXJyZW50IE5TR3Jh
cGhpY3NDb250ZXh0IChlLmcuIE5TQ2VsbCBkcmF3aW5nKSBnZXQgdGhlIHJpZ2h0IG9uZS4KLSAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIE5TR3JhcGhpY3NDb250
ZXh0KiBsYXllckNvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0
aEdyYXBoaWNzUG9ydDpjb250ZXh0IGZsaXBwZWQ6WUVTXTsKLSAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRl
eHQ6bGF5ZXJDb250ZXh0XTsKKyAgICAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGlj
c1N0YXRlXTsKKworICAgICAgICAvLyBTZXQgdXAgYW4gTlNHcmFwaGljc0NvbnRleHQgZm9yIHRo
ZSBjb250ZXh0LCBzbyB0aGF0IHBhcnRzIG9mIEFwcEtpdCB0aGF0IHJlbHkgb24KKyAgICAgICAg
Ly8gdGhlIGN1cnJlbnQgTlNHcmFwaGljc0NvbnRleHQgKGUuZy4gTlNDZWxsIGRyYXdpbmcpIGdl
dCB0aGUgcmlnaHQgb25lLgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgorICAgICAgICBOU0dyYXBoaWNzQ29udGV4dCogbGF5ZXJDb250ZXh0ID0gW05TR3JhcGhp
Y3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y29udGV4dCBmbGlwcGVk
OllFU107CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAg
ICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bGF5ZXJDb250ZXh0XTsKICNl
bmRpZgorICAgIH0KICAgICAKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGlj
c0NvbnRleHQoY29udGV4dCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRJc0NBTGF5ZXJD
b250ZXh0KHRydWUpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0SXNBY2NlbGVyYXRlZENv
bnRleHQocGxhdGZvcm1DQUxheWVyLT5hY2NlbGVyYXRlc0RyYXdpbmcoKSk7Ci0gICAgICAgIAor
CiAgICAgICAgIGlmICghbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFx
dWUoKSAmJiAhcGxhdGZvcm1DQUxheWVyLT5zdXBwb3J0c1N1YnBpeGVsQW50aWFsaWFzZWRUZXh0
KCkgJiYgRm9udENhc2NhZGU6OmlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKSkgewog
ICAgICAgICAgICAgLy8gVHVybiBvZmYgZm9udCBzbW9vdGhpbmcgdG8gaW1wcm92ZSB0aGUgYXBw
ZWFyYW5jZSBvZiB0ZXh0IHJlbmRlcmVkIG9udG8gYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZFNtb290aEZvbnRzKGZhbHNlKTsK
ICAgICAgICAgfQotICAgICAgICAKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgLy8gSXQn
cyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBjbGlwIGZyb20gdGhlIGNvbnRleHQsIGJlY2F1c2UgaXQg
bWF5IGJlIHNpZ25pZmljYW50bHkKICAgICAgICAgLy8gc21hbGxlciB0aGFuIHRoZSBsYXllciBi
b3VuZHMgKGUuZy4gdGlsZWQgbGF5ZXJzKQotICAgICAgICBUaGVtZU1hYzo6c2V0Rm9jdXNSaW5n
Q2xpcFJlY3QoQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpKTsKKyAgICAgICAg
VGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBSZWN0KGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRz
KCkpOwogI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6
IGRpcnR5UmVjdHMpIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXAocmVjdCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxh
dGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4
dCwgcmVjdCwgbGF5ZXJQYWludEJlaGF2aW9yKTsKICAgICAgICAgfQotICAgICAgICAKKwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZS5yZXN0
b3JlKCk7CisgICAgICAgIGlmIChmb250QW50aWFsaWFzaW5nU3RhdGUpCisgICAgICAgICAgICBm
b250QW50aWFsaWFzaW5nU3RhdGUtPnJlc3RvcmUoKTsKICNlbHNlCiAgICAgICAgIFRoZW1lTWFj
OjpzZXRGb2N1c1JpbmdDbGlwUmVjdChGbG9hdFJlY3QoKSk7Ci0gICAgICAgIAorCiAgICAgICAg
IFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07CiAjZW5kaWYKICAgICB9
CiAKLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworICAgIHNhdmVyLnJlc3Rv
cmUoKTsKIAogICAgIC8vIFJlLWZldGNoIHRoZSBsYXllciBvd25lciwgc2luY2UgPHJkYXI6Ly9w
cm9ibGVtLzkxMjUxNTE+IGluZGljYXRlcyB0aGF0IGl0IG1pZ2h0IGhhdmUgYmVlbiBkZXN0cm95
ZWQgZHVyaW5nIHBhaW50aW5nLgogICAgIGxheWVyQ29udGVudHMgPSBwbGF0Zm9ybUNBTGF5ZXIt
Pm93bmVyKCk7CkBAIC0xMjE5LDcgKzEyMjMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJh
d0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQwog
ICAgIGludCByZXBhaW50Q291bnQgPSBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJJbmNy
ZW1lbnRSZXBhaW50Q291bnQocGxhdGZvcm1DQUxheWVyKTsKIAogICAgIGlmICghcGxhdGZvcm1D
QUxheWVyLT51c2VzVGlsZWRCYWNraW5nTGF5ZXIoKSAmJiBsYXllckNvbnRlbnRzICYmIGxheWVy
Q29udGVudHMtPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihwbGF0Zm9ybUNBTGF5
ZXIpKQotICAgICAgICBkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBwbGF0Zm9ybUNBTGF5
ZXIsIHJlcGFpbnRDb3VudCwgbnVsbHB0cik7CisgICAgICAgIGRyYXdSZXBhaW50SW5kaWNhdG9y
KGdyYXBoaWNzQ29udGV4dCwgcGxhdGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQpOwogfQogCiBD
R1JlY3QgUGxhdGZvcm1DQUxheWVyOjpmcmFtZUZvckxheWVyKGNvbnN0IFBsYXRmb3JtTGF5ZXIq
IHRpbGVMYXllcikKQEAgLTEyMzIsMTUgKzEyMzYsMTUgQEAgUmVmPFBsYXRmb3JtQ0FMYXllcj4g
UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5
ZXIKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZShsYXllclR5cGUsIGNs
aWVudCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bihDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQogewogICAgIENHU1JlZ2lv
bk9iaiByZWdpb24gPSAoQ0dTUmVnaW9uT2JqKVttX2xheWVyIHJlZ2lvbkJlaW5nRHJhd25dOwog
ICAgIGlmICghcmVnaW9uKSB7Ci0gICAgICAgIGJsb2NrKENHQ29udGV4dEdldENsaXBCb3VuZGlu
Z0JveChjb250ZXh0KSk7CisgICAgICAgIGJsb2NrKGNvbnRleHQuY2xpcEJvdW5kcygpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENHQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRDVE0oY29udGV4dCkp
OworICAgIENHQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybUludmVydChjb250ZXh0LmdldENUTSgpKTsKICAgICBDR1NSZWdpb25FbnVtZXJhdG9yT2Jq
IGVudW1lcmF0b3IgPSBDR1NSZWdpb25FbnVtZXJhdG9yKHJlZ2lvbik7CiAgICAgY29uc3QgQ0dS
ZWN0KiBuZXh0UmVjdDsKICAgICB3aGlsZSAoKG5leHRSZWN0ID0gQ0dTTmV4dFJlY3QoZW51bWVy
YXRvcikpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IGQ2YTdjMTY4ZjBlNDQx
ZmQ3ZDI5MGZjNGZlMzEzNjBjNTg1ZDU2ODQuLmYyZmRmNTJmMzgyMGNhMmE5NjI5ZTBmYjI0MDVj
ODg5OTIxOGY4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xMDEsNyArMTAx
LDcgQEAgUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcih2
b2lkKiBwbGF0Zm9ybUxheWVyKQogICAgIHJldHVybiBsYXllckludGVybiA/IGxheWVySW50ZXJu
LT5vd25lcigpIDogbnVsbHB0cjsKIH0KIAotUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExp
c3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KENHQ29udGV4dFJlZiwgUGxh
dGZvcm1DQUxheWVyKikKK1BsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3Jt
Q0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChHcmFwaGljc0NvbnRleHQmLCBQbGF0Zm9ybUNB
TGF5ZXIqKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWN0dWFsbHkgY29sbGVjdCByZWN0
cyB0byB1c2UgaW5zdGVhZCBvZiBkZWZhdWx0aW5nIHRvIFdpbmRvd3MnCiAgICAgLy8gbm9ybWFs
IGRyYXdpbmcgcGF0aC4KQEAgLTEwOSw5ICsxMDksOSBAQCBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFp
bnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0
UgogICAgIHJldHVybiBkaXJ0eVJlY3RzOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJh
d0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciogcGxhdGZvcm1DQUxheWVyLCBSZXBhaW50UmVjdExpc3QmLCBHcmFwaGljc0xheWVyUGFp
bnRCZWhhdmlvcikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1D
QUxheWVyLCBSZXBhaW50UmVjdExpc3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKIHsK
LSAgICBpbnRlcm4ocGxhdGZvcm1DQUxheWVyKS0+ZGlzcGxheUNhbGxiYWNrKHBsYXRmb3JtQ0FM
YXllci0+cGxhdGZvcm1MYXllcigpLCBjb250ZXh0KTsKKyAgICBpbnRlcm4ocGxhdGZvcm1DQUxh
eWVyKS0+ZGlzcGxheUNhbGxiYWNrKHBsYXRmb3JtQ0FMYXllci0+cGxhdGZvcm1MYXllcigpLCBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAogQ0dSZWN0IFBsYXRmb3JtQ0FMYXllcjo6
ZnJhbWVGb3JMYXllcihjb25zdCBQbGF0Zm9ybUxheWVyKiB0aWxlTGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KaW5kZXggODA4ODA0
YjJmODVmZmFlZTJiNDAxMjc3ZTIzNzliOGNjZTIzNmJjNy4uNjVlODc4MjA2M2ViOTA1NDlmODBj
YWZiNWJiOTEyMzNhYjYyM2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9XZWJMYXllci5tbQpAQCAtNTEsOCArNTEsOSBAQCAtICh2b2lkKWRyYXdJbkNv
bnRleHQ6KENHQ29udGV4dFJlZiljb250ZXh0CiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyKiBsYXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKChf
X2JyaWRnZSB2b2lkKilzZWxmKTsKICAgICBpZiAobGF5ZXIpIHsKLSAgICAgICAgV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgcmVjdHNUb1BhaW50ID0gV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIGxheWVyKTsKLSAg
ICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0
LCBsYXllciwgcmVjdHNUb1BhaW50LCBzZWxmLmlzUmVuZGVyaW5nSW5Db250ZXh0ID8gV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclBhaW50U25hcHNob3R0aW5nIDogV2ViQ29yZTo6R3JhcGhpY3NMYXll
clBhaW50Tm9ybWFsKTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNz
Q29udGV4dChjb250ZXh0KTsKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpSZXBh
aW50UmVjdExpc3QgcmVjdHNUb1BhaW50ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjb2xs
ZWN0UmVjdHNUb1BhaW50KGdyYXBoaWNzQ29udGV4dCwgbGF5ZXIpOworICAgICAgICBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgbGF5
ZXIsIHJlY3RzVG9QYWludCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJQYWludFNuYXBzaG90dGluZyA6IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWlu
dE5vcm1hbCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IGE5
OWU5YzVmM2EzOGM2YTIwNWI3YmNlYjUwOGIwMWJjZTkxZjg3YjEuLmY1ZjEzYjgyNjBmZGIyMGRi
NjhiNjBlYmM2NzgzZmY4MGUzYWYyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBA
IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBj
b25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUmKTsKIAotICAgIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29u
dGV4dFJlZiwgdm9pZCAoXikoQ0dSZWN0KSk7CisgICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5n
RHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAoXikoQ0dSZWN0KSk7CiAKICAg
ICBib29sIGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0KaW5kZXggYjVjYWRkMWRmNmNhOGU0MDM0ZWEyNGQwOGMzM2YwM2ZjN2ExYmI5Yi4u
NDQwNjEwMGZjZjc5ODFkMzRlYWJkNzdkZjkwMTg4NTkyMzEwMTA0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbQpAQCAtMzUzLDEzICszNTMsMTMgQEAgdm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIEMKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVdlYkxheWVyOgogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGVCYWNrZHJvcExheWVyOgotICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OmRyYXdMYXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBm
bGFncyk7CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVu
dHMoY29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBmbGFncyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lz
dGVtQmFja2Ryb3BMYXllcjoKICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyOgogICAgICAgICAvLyBGSVhNRTogVGhlc2Ug
aGF2ZSBhIG1vcmUgY29tcGxpY2F0ZWQgbGF5ZXIgaGllcmFyY2h5LiBXZSBuZWVkIHRvIHBhaW50
IGludG8KICAgICAgICAgLy8gYSBjaGlsZCBsYXllciBpbiBvcmRlciB0byBzZWUgdGhlIHJlbmRl
cmVkIHJlc3VsdHMuCi0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVy
Q29udGVudHMoY2dDb250ZXh0LCBtX2xheWVyLCBtX3BhaW50aW5nUmVjdHMsIGZsYWdzKTsKKyAg
ICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0
LCBtX2xheWVyLCBtX3BhaW50aW5nUmVjdHMsIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgogICAgIGNhc2Ug
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTM4
Miw5ICszODIsOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQwogICAgIG1fZnJvbnRDb250ZXh0
UGVuZGluZ0ZsdXNoID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAotdm9pZCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJl
ZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCit2b2lkIFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCiB7Ci0gICAgQ0dBZmZpbmVUcmFuc2Zv
cm0gaW52ZXJzZVRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KENHQ29udGV4dEdl
dENUTShjb250ZXh0KSk7CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZm9ybSA9
IENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KGNvbnRleHQuZ2V0Q1RNKCkpOwogCiAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0byB1bi1hcHBseSB0aGUgZmxpcHBpbmcgb3IgY29udGVudHNTY2FsZSwKICAg
ICAvLyBiZWNhdXNlIHRoZXkncmUgbm90IGFwcGxpZWQgdG8gcmVwYWludCByZWN0cy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNDZlOGFh
MDk5ODY0NWE4Y2U1ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MS4uZTc2MDhiZjE1NDI0NDFmZWE1YTMx
NzFkMTI3YTJhZjA3N2EyYjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3Jt
Q0FMYXllclJlbW90ZS5jcHAKQEAgLTg5MSw3ICs4OTEsNyBAQCBSZWY8UGxhdGZvcm1DQUxheWVy
PiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNB
TGF5ZQogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShsYXllclR5cGUs
IGNsaWVudCwgKm1fY29udGV4dCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpl
bnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9j
aykoQ0dSZWN0KSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnVtZXJhdGVSZWN0c0Jl
aW5nRHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCB2b2lkICheYmxvY2sp
KENHUmVjdCkpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZW51bWVyYXRlUmVj
dHNCZWluZ0RyYXduKGNvbnRleHQsIGJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCBjMzE5OGEwYmE3ODcwZjI4ZmEyZTA5ODVhMTlm
NTYwNDYzNDRjMjIwLi40ZWExZWZjMmIxYjZkYzRiMmI1ZmJjYzYwZjFmMTllYzNmNTdkMTZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xODQs
NyArMTg0LDcgQEAgcHVibGljOgogCiAgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlQ29t
cGF0aWJsZUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZW51
bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3Qp
KSBvdmVycmlkZTsKKyAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmLCB2b2lkICheYmxvY2spKENHUmVjdCkpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCB1aW50MzJfdCBob3N0aW5nQ29udGV4dElEKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384533</attachid>
            <date>2019-11-29 16:57:42 -0800</date>
            <delta_ts>2019-11-30 16:24:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204698-20191129165741.patch</filename>
            <type>text/plain</type>
            <size>28932</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZlNjQ1MTZjOGI4NzEz
ZmExMWM1ODVjZDE1YjdkNjcxMTA5YzMyOC4uZjVjMzhkNTlkMTA0OGZmMzk5MmM0YTk0Mzk3MWQ4
NWMwYjRkZThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTExLTI5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlaW1wbGVtZW50
IHNvbWUgUGxhdGZvcm1DQUxheWVyIG1ldGhvZHMgdXNpbmcgR3JhcGhpY3NDb250ZXh0IGluc3Rl
YWQgb2YgQ0dDb250ZXh0UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQ2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiBvcmRlciB0byBtYWtlIFBsYXRmb3JtQ0FMYXllci1sZXZlbCBEaXNwbGF5
TGlzdCByZWNvcmRpbmcgcG9zc2libGUsCisgICAgICAgIHJlaW1wbGVtZW50IGEgZmV3IG1ldGhv
ZHMgaW4gdGVybXMgb2YgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGluc3RlYWQKKyAgICAgICAg
b2YgQ0dDb250ZXh0UmVmIGRpcmVjdGx5LiBOYW1lbHksIGNvbGxlY3RSZWN0c1RvUGFpbnQsIGRy
YXdMYXllckNvbnRlbnRzLAorICAgICAgICBhbmQgZHJhd1JlcGFpbnRJbmRpY2F0b3IuCisKKyAg
ICAgICAgSW4gdGhlIGRyYXdMYXllckNvbnRlbnRzIGNhc2UsIHRoZXJlIGFyZSBvcGVyYXRpb25z
IChsaWtlIHNldHRpbmcgdGhlCisgICAgICAgIEFwcEtpdCBnbG9iYWwgZ3JhcGhpY3MgY29udGV4
dCkgdGhhdCBjYW5ub3QgYmUgZG9uZSB3aXRob3V0IGEgcGxhdGZvcm0KKyAgICAgICAgY29udGV4
dC4gSW4gdGhvc2UgY2FzZXMsIHdlIHNraXAgdGhhdCBvcGVyYXRpb24gaWYgd2UgZG9uJ3QgaGF2
ZSBhCisgICAgICAgIHBsYXRmb3JtIGNvbnRleHQuCisKKyAgICAgICAgQW55dGhpbmcgZGVwZW5k
aW5nIG9uIHRoaXMgZG93bnN0cmVhbSB3aWxsIGJyZWFrIGFuZCBuZWVkIHRvIGJlCisgICAgICAg
IGltcGxlbWVudGVkIGEgZGlmZmVyZW50IHdheSBpbiB0aGUgRGlzcGxheUxpc3QgY2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlR3JpZDo6
cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllckNvY29hOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW06CisgICAgICAgICgtW1dlYkxheWVy
IGRyYXdJbkNvbnRleHQ6XSk6CisKIDIwMTktMTEtMjggIEZ1amlpIEhpcm9ub3JpICA8SGlyb25v
cmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJMRV9LRVlCT0FSRF9DT0RF
X0FUVFJJQlVURSBhbmQgRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgbWFjcm9zCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDUwY2ViYWM5MGRhNTg5MTU2YzMwOGQ1YTY0Y2RjMzkwNWZiYTc5MDkuLmQ5NjkzMWYw
ODZjN2YxMWE0YjAwOTU3ZDQ0YmJiMjNjNWU0MjY0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTktMTEtMjkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVpbXBsZW1lbnQgc29tZSBQbGF0Zm9ybUNBTGF5ZXIgbWV0aG9kcyB1c2luZyBH
cmFwaGljc0NvbnRleHQgaW5zdGVhZCBvZiBDR0NvbnRleHRSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY5OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKwogMjAxOS0xMS0yOCAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0tF
WUJPQVJEX0NPREVfQVRUUklCVVRFIGFuZCBFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSBt
YWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKaW5kZXggMDg3OTE0NWIxM2M1N2Q2YzIwN2JiZjQ5MjY5ZmZmMmZkMzAzYWM1ZS4u
MjA5MDM2ZjkyNTlhN2QwOGY5YjdlZDNjYTM5ZGFmNWI0MjE4ZWUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQ3OCw3
ICs0NzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CiAKICAgICBlbnVtIEluY2x1ZGVEZXZpY2VTY2FsZSB7IERlZmluaXRlbHlJbmNsdWRlRGV2
aWNlU2NhbGUsIFBvc3NpYmx5SW5jbHVkZURldmljZVNjYWxlIH07Ci0gICAgQWZmaW5lVHJhbnNm
b3JtIGdldENUTShJbmNsdWRlRGV2aWNlU2NhbGUgaW5jbHVkZVNjYWxlID0gUG9zc2libHlJbmNs
dWRlRGV2aWNlU2NhbGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEFmZmluZVRyYW5zZm9y
bSBnZXRDVE0oSW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSA9IFBvc3NpYmx5SW5jbHVk
ZURldmljZVNjYWxlKSBjb25zdDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gYXBwbGllcyB0aGUg
ZGV2aWNlIHNjYWxlIGZhY3RvciB0byB0aGUgY29udGV4dCwgbWFraW5nIHRoZSBjb250ZXh0IGNh
cGFibGUgb2YKICAgICAvLyBhY3RpbmcgYXMgYSBiYXNlLWxldmVsIGNvbnRleHQgZm9yIGEgSGlE
UEkgZW52aXJvbm1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAppbmRleCAyMTk5NTI3Y2RkZTRjZWJjNjM5YWIx
NzY2YTY0ODJhOGM1NTBhNjhhLi5kNWIwMzI3Y2YwNGRiNzg0ZTgyMzMxMzA3NzdhMjI0ZTQxNTIz
NzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5jcHAKQEAgLTc5LDI3ICs3OSwzNyBAQCBib29sIFBsYXRmb3JtQ0FM
YXllcjo6Y2FuSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0CiAgICAgICAgIHx8IG1fbGF5ZXJUeXBl
ID09IExheWVyVHlwZTo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxheWVyOwogfQogCi12b2lk
IFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmIGNvbnRl
eHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBpbnQgcmVwYWludENvdW50LCBD
R0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpk
cmF3UmVwYWludEluZGljYXRvcihHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgUGxh
dGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIGludCByZXBhaW50Q291bnQsIENvbG9yIGN1
c3RvbUJhY2tncm91bmRDb2xvcikKIHsKLSAgICBjaGFyIHRleHRbMTZdOyAvLyB0aGF0J3MgYSBs
b3Qgb2YgcmVwYWludHMKLSAgICBzbnByaW50Zih0ZXh0LCBzaXplb2YodGV4dCksICIlZCIsIHJl
cGFpbnRDb3VudCk7Ci0gICAgCi0gICAgRmxvYXRSZWN0IGluZGljYXRvckJveCA9IHBsYXRmb3Jt
Q0FMYXllci0+Ym91bmRzKCk7XAotICAgIGluZGljYXRvckJveC5zZXRMb2NhdGlvbiggeyAxLCAx
IH0gKTsKLSAgICBpbmRpY2F0b3JCb3guc2V0U2l6ZShGbG9hdFNpemUoMTIgKyAxMCAqIHN0cmxl
bih0ZXh0KSwgMjcpKTsKLQotICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKLSAgICAKLSAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0LCAwLjVmKTsKLSAgICBD
R0NvbnRleHRCZWdpblRyYW5zcGFyZW5jeUxheWVyV2l0aFJlY3QoY29udGV4dCwgaW5kaWNhdG9y
Qm94LCAwKTsKLSAgICAKLSAgICBpZiAoY3VzdG9tQmFja2dyb3VuZENvbG9yKQotICAgICAgICBD
R0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY29udGV4dCwgY3VzdG9tQmFja2dyb3VuZENv
bG9yKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250ZXh0
LCAwLCAwLjVmLCAwLjI1ZiwgMSk7Ci0gICAgCisgICAgY29uc3QgZmxvYXQgdmVydGljYWxNYXJn
aW4gPSAyLjU7CisgICAgY29uc3QgZmxvYXQgaG9yaXpvbnRhbE1hcmdpbiA9IDU7CisgICAgY29u
c3QgdW5zaWduZWQgZm9udFNpemUgPSAyMjsKKyAgICBjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29s
b3IoMC41ZiwgMC4yNWYsIDEuMGYsIDEuMGYpOworICAgIGNvbnN0IENvbG9yIGFjY2VsZXJhdGVk
Q29udGV4dExhYmVsQ29sb3IoMS4wZiwgMC5mLCAwLmYsIDEuMGYpOworICAgIGNvbnN0IENvbG9y
IHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvcigxLjBmLCAxLjBmLCAxLjBmLCAxLjBmKTsK
KyAgICBjb25zdCBDb2xvciBsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29sb3IoMC5mLCAwLmYsIDAu
ZiwgMC43NWYpOworICAgIGNvbnN0IENvbG9yIGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IoMC5mLCAw
LmYsIDAuZiwgMC42NWYpOworCisgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZzo6bnVtYmVyKHJl
cGFpbnRDb3VudCkpOworCisgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRp
b247CisgICAgZm9udERlc2NyaXB0aW9uLnNldE9uZUZhbWlseSgiSGVsdmV0aWNhIik7CisgICAg
Zm9udERlc2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoZm9udFNpemUpOworICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZm9udFNpemUpOworCisgICAgRm9udENhc2NhZGUgY2Fz
Y2FkZShXVEZNb3ZlKGZvbnREZXNjcmlwdGlvbikpOworICAgIGNhc2NhZGUudXBkYXRlKG51bGxw
dHIpOworCisgICAgZmxvYXQgdGV4dFdpZHRoID0gY2FzY2FkZS53aWR0aCh0ZXh0UnVuKTsKKwor
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQp
OworCisgICAgZ3JhcGhpY3NDb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMC41Zik7CisK
KyAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENvbG9yKGN1c3RvbUJhY2tncm91bmRDb2xvci5p
c1ZhbGlkKCkgPyBjdXN0b21CYWNrZ3JvdW5kQ29sb3IgOiBiYWNrZ3JvdW5kQ29sb3IpOworICAg
IEZsb2F0UmVjdCBpbmRpY2F0b3JCb3goMSwgMSwgaG9yaXpvbnRhbE1hcmdpbiAqIDIgKyB0ZXh0
V2lkdGgsIHZlcnRpY2FsTWFyZ2luICogMiArIGZvbnRTaXplKTsKICAgICBpZiAocGxhdGZvcm1D
QUxheWVyLT5pc09wYXF1ZSgpKQotICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBp
bmRpY2F0b3JCb3gpOworICAgICAgICBncmFwaGljc0NvbnRleHQuZmlsbFJlY3QoaW5kaWNhdG9y
Qm94KTsKICAgICBlbHNlIHsKICAgICAgICAgUGF0aCBib3VuZHNQYXRoOwogICAgICAgICBib3Vu
ZHNQYXRoLm1vdmVUbyhpbmRpY2F0b3JCb3gubWF4WE1pbllDb3JuZXIoKSk7CkBAIC0xMTEsMzIg
KzEyMSwyNCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllcgogICAgICAgICBib3VuZHNQYXRoLmFk
ZExpbmVUbyhGbG9hdFBvaW50KGluZGljYXRvckJveC54KCkgKyBjb3JuZXJDaHVuaywgaW5kaWNh
dG9yQm94LnkoKSkpOwogICAgICAgICBib3VuZHNQYXRoLmNsb3NlU3VicGF0aCgpOwogCi0gICAg
ICAgIENHQ29udGV4dEFkZFBhdGgoY29udGV4dCwgYm91bmRzUGF0aC5wbGF0Zm9ybVBhdGgoKSk7
Ci0gICAgICAgIENHQ29udGV4dEZpbGxQYXRoKGNvbnRleHQpOworICAgICAgICBncmFwaGljc0Nv
bnRleHQuZmlsbFBhdGgoYm91bmRzUGF0aCk7CiAgICAgfQogCiAgICAgaWYgKHBsYXRmb3JtQ0FM
YXllci0+b3duZXIoKS0+aXNVc2luZ0Rpc3BsYXlMaXN0RHJhd2luZyhwbGF0Zm9ybUNBTGF5ZXIp
KSB7Ci0gICAgICAgIENHQ29udGV4dFNldFJHQlN0cm9rZUNvbG9yKGNvbnRleHQsIDAsIDAsIDAs
IDAuNjUpOwotICAgICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgoY29udGV4dCwgMik7Ci0gICAg
ICAgIENHQ29udGV4dFN0cm9rZVJlY3QoY29udGV4dCwgaW5kaWNhdG9yQm94KTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGRpc3BsYXlMaXN0Qm9yZGVyQ29sb3IpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQuc3Ryb2tlUmVjdChpbmRpY2F0b3JCb3gsIDIpOwogICAg
IH0KIAotICAgIENHRmxvYXQgc3Ryb2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplID0gMDsK
LSAgICBDb2xvciBzdHJva2VDb2xvcjsKLQogICAgIGlmICghcGxhdGZvcm1DQUxheWVyLT5pc09w
YXF1ZSgpICYmIHBsYXRmb3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4
dCgpICYmIHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpIHsKLSAgICAgICAg
c3Ryb2tlQ29sb3IgPSBDb2xvcigwLCAwLCAwLCAyMDApOwotICAgICAgICBzdHJva2VXaWR0aEFz
UGVyY2VudGFnZU9mRm9udFNpemUgPSAtNC41OyAvLyBOZWdhdGl2ZSBtZWFucyAic3Ryb2tlIGFu
ZCBmaWxsIjsgc2VlIGRvY3MgZm9yIGtDVFN0cm9rZVdpZHRoQXR0cmlidXRlTmFtZS4KKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnNldFN0cm9rZUNvbG9yKGxpbmVhckdseXBoTWFza091dGxpbmVD
b2xvcik7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoNC41KTsK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFRleHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwg
fCBUZXh0TW9kZVN0cm9rZSk7CiAgICAgfQogCi0gICAgaWYgKHBsYXRmb3JtQ0FMYXllci0+YWNj
ZWxlcmF0ZXNEcmF3aW5nKCkpCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxDb2xvcihjb250
ZXh0LCAxLCAwLCAwLCAxKTsKLSAgICBlbHNlCi0gICAgICAgIENHQ29udGV4dFNldFJHQkZpbGxD
b2xvcihjb250ZXh0LCAxLCAxLCAxLCAxKTsKLSAgICAKLSAgICBwbGF0Zm9ybUNBTGF5ZXItPmRy
YXdUZXh0QXRQb2ludChjb250ZXh0LCBpbmRpY2F0b3JCb3gueCgpICsgNSwgaW5kaWNhdG9yQm94
LnkoKSArIDIyLCBDR1NpemVNYWtlKDEsIC0xKSwgMjIsIHRleHQsIHN0cmxlbih0ZXh0KSwgc3Ry
b2tlV2lkdGhBc1BlcmNlbnRhZ2VPZkZvbnRTaXplLCBzdHJva2VDb2xvcik7Ci0gICAgCi0gICAg
Q0dDb250ZXh0RW5kVHJhbnNwYXJlbmN5TGF5ZXIoY29udGV4dCk7CisgICAgZ3JhcGhpY3NDb250
ZXh0LnNldEZpbGxDb2xvcihwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpID8g
YWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxDb2xvciA6IHVuYWNjZWxlcmF0ZWRDb250ZXh0TGFiZWxD
b2xvcik7CisKKyAgICBncmFwaGljc0NvbnRleHQuZHJhd1RleHQoY2FzY2FkZSwgdGV4dFJ1biwg
RmxvYXRQb2ludChpbmRpY2F0b3JCb3gueCgpICsgaG9yaXpvbnRhbE1hcmdpbiwgaW5kaWNhdG9y
Qm94LnkoKSArIGZvbnRTaXplKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpmbGlwQ29udGV4dChDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ0dGbG9hdCBoZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCmluZGV4IGViYzEwMGMwNmFm
MzNiZDNiNmNiZmUyODA5ZGUzOWYyYmRiNTNhYjguLjVkOWYwMWU4MjRjMzc2ZGYzYTIyNDkxM2Q5
NzAyMzUzNjc0ODRhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgog
ICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZUNvbXBhdGlibGVMYXllck9yVGFrZUZyb21Q
b29sKExheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgSW50U2l6ZSk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXdu
KENHQ29udGV4dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihHcmFwaGljc0NvbnRleHQmLCB2b2lkICheYmxv
Y2spKENHUmVjdCkpID0gMDsKICNlbmRpZgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHdl
YkxheWVyTWF4UmVjdHNUb1BhaW50ID0gNTsKQEAgLTI4MSw5ICsyODEsOSBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBWZWN0b3I8RmxvYXRSZWN0LCB3ZWJMYXllck1heFJlY3RzVG9QYWludD4gUmVw
YWludFJlY3RMaXN0OwogICAgICAgICAKICAgICAvLyBGdW5jdGlvbnMgYWxsb3dzIHVzIHRvIHNo
YXJlIGltcGxlbWVudGF0aW9uIGFjcm9zcyBXZWJUaWxlZExheWVyIGFuZCBXZWJMYXllcgotICAg
IHN0YXRpYyBSZXBhaW50UmVjdExpc3QgY29sbGVjdFJlY3RzVG9QYWludChDR0NvbnRleHRSZWYs
IFBsYXRmb3JtQ0FMYXllciopOwotICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKENH
Q29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgUmVwYWludFJlY3RMaXN0JiBkaXJ0eVJlY3Rz
LCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcik7Ci0gICAgc3RhdGljIHZvaWQgZHJhd1JlcGFp
bnRJbmRpY2F0b3IoQ0dDb250ZXh0UmVmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENv
dW50LCBDR0NvbG9yUmVmIGN1c3RvbUJhY2tncm91bmRDb2xvcik7CisgICAgc3RhdGljIFJlcGFp
bnRSZWN0TGlzdCBjb2xsZWN0UmVjdHNUb1BhaW50KEdyYXBoaWNzQ29udGV4dCYsIFBsYXRmb3Jt
Q0FMYXllciopOworICAgIHN0YXRpYyB2b2lkIGRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIFBsYXRmb3JtQ0FMYXllciosIFJlcGFpbnRSZWN0TGlzdCYsIEdyYXBoaWNzTGF5ZXJQ
YWludEJlaGF2aW9yKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3UmVwYWludEluZGljYXRvcihHcmFw
aGljc0NvbnRleHQmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBpbnQgcmVwYWludENvdW50LCBDb2xvciBj
dXN0b21CYWNrZ3JvdW5kQ29sb3IgPSB7IH0pOwogICAgIHN0YXRpYyBDR1JlY3QgZnJhbWVGb3JM
YXllcihjb25zdCBQbGF0Zm9ybUxheWVyKik7CiAKICAgICB2b2lkIG1vdmVUb0xheWVyUG9vbCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3Bw
CmluZGV4IDQ5NmEzMmRmMjc2NWM3MTk2NGNkMDMyYjMyOTExNDZhZGQ2NDYzMWEuLjdkOGIwZWY5
ZTY1YmQ3YWU0YjhkZjc2YWY3NzlmMzJjNTllODdlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKQEAgLTcyOSwxMyArNzI5LDEzIEBA
IHZvaWQgVGlsZUdyaWQ6OnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxh
eWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIEdyCiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1sYXll
ck9yaWdpbi54KCksIC1sYXllck9yaWdpbi55KCkpOwogICAgICAgICBjb250ZXh0LnNjYWxlKG1f
c2NhbGUpOwogCi0gICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IGRpcnR5
UmVjdHMgPSBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyKTsKLSAgICAgICAgUGxhdGZvcm1DQUxheWVy
OjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCAmbV9jb250cm9s
bGVyLnJvb3RMYXllcigpLCBkaXJ0eVJlY3RzLCBsYXllclBhaW50QmVoYXZpb3IpOworICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBkaXJ0eVJlY3RzID0gUGxhdGZvcm1D
QUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIHBsYXRmb3JtQ0FMYXllcik7Cisg
ICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgJm1fY29u
dHJvbGxlci5yb290TGF5ZXIoKSwgZGlydHlSZWN0cywgbGF5ZXJQYWludEJlaGF2aW9yKTsKICAg
ICB9CiAKICAgICBpbnQgcmVwYWludENvdW50ID0gcGxhdGZvcm1DQUxheWVySW5jcmVtZW50UmVw
YWludENvdW50KHBsYXRmb3JtQ0FMYXllcik7CiAgICAgaWYgKG1fY29udHJvbGxlci5yb290TGF5
ZXIoKS5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoMCkpCi0gICAg
ICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgcGxhdGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQsIGNhY2hlZENHQ29sb3Io
bV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkpKTsKKyAgICAgICAgUGxhdGZvcm1D
QUxheWVyOjpkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBwbGF0Zm9ybUNBTGF5ZXIsIHJl
cGFpbnRDb3VudCwgbV9jb250cm9sbGVyLnRpbGVEZWJ1Z0JvcmRlckNvbG9yKCkpOwogCiAgICAg
aWYgKG1fY29udHJvbGxlci5zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKCkpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVQYXJ0KHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24o
KS54KCksIHBsYXRmb3JtQ0FMYXllci0+cG9zaXRpb24oKS55KCksIHBsYXRmb3JtQ0FMYXllci0+
Ym91bmRzKCkuc2l6ZSgpLndpZHRoKCksIHBsYXRmb3JtQ0FMYXllci0+Ym91bmRzKCkuc2l6ZSgp
LmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCmluZGV4IDVkOTY2OWI3
YzYwOGEzNGVmODQxYWQ5ZGU2ZDkzYjNiN2FmZTlhMmIuLjgyMjg4OGE1MzA1YWYwNTUwZDkyYjNh
ZTZhNDI3YmY1YWQyYjZmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaApAQCAt
MTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0
ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oR3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAo
XmJsb2NrKShDR1JlY3QpKSBvdmVycmlkZTsKIAogICAgIHVuc2lnbmVkIGJhY2tpbmdTdG9yZUJ5
dGVzUGVyUGl4ZWwoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQppbmRleCA0NjU3NDI4MGIxYzhhMmE1NTY4YzU4ZmQ0YjkxYTM4YzBiMzNkMTkxLi42
ZjMyODliMDkwNDliOTJkMjViMTVmZWFkYTQ4ODVhYWI3YmRjYzBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5tbQpAQCAtMTExOSw3ICsxMTE5LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXI6OnNldEFuY2hvclBvaW50T25NYWluVGhyZWFkKEZsb2F0UG9pbnQzRCB2YWx1ZSkKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1QbGF0Zm9ybUNBTGF5ZXI6OlJlcGFp
bnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKQorUGxhdGZvcm1D
QUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1Bh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNB
TGF5ZXIpCiB7CiAgICAgX19ibG9jayBkb3VibGUgdG90YWxSZWN0QXJlYSA9IDA7CiAgICAgX19i
bG9jayB1bnNpZ25lZCByZWN0Q291bnQgPSAwOwpAQCAtMTEzMyw3ICsxMTMzLDcgQEAgUGxhdGZv
cm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNU
b1BhaW50KENHQ29udGV4dFIKICAgICAgICAgZGlydHlSZWN0cy5hcHBlbmQocmVjdCk7CiAgICAg
fSk7CiAgICAgCi0gICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBDR0NvbnRleHRHZXRDbGlwQm91
bmRpbmdCb3goY29udGV4dCk7CisgICAgRmxvYXRSZWN0IGNsaXBCb3VuZHMgPSBjb250ZXh0LmNs
aXBCb3VuZHMoKTsKICAgICBkb3VibGUgY2xpcEFyZWEgPSBjbGlwQm91bmRzLndpZHRoKCkgKiBj
bGlwQm91bmRzLmhlaWdodCgpOwogICAgIAogICAgIGlmIChyZWN0Q291bnQgPj0gd2ViTGF5ZXJN
YXhSZWN0c1RvUGFpbnQgfHwgdG90YWxSZWN0QXJlYSA+PSBjbGlwQXJlYSAqIHdlYkxheWVyV2Fz
dGVkU3BhY2VUaHJlc2hvbGQpIHsKQEAgLTExNDQsNyArMTE0NCw3IEBAIFBsYXRmb3JtQ0FMYXll
cjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChD
R0NvbnRleHRSCiAgICAgcmV0dXJuIGRpcnR5UmVjdHM7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0
cywgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IgbGF5ZXJQYWludEJlaGF2aW9yKQordm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhp
Y3NDb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgUmVw
YWludFJlY3RMaXN0JiBkaXJ0eVJlY3RzLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvciBsYXll
clBhaW50QmVoYXZpb3IpCiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBs
YXllckNvbnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25lcigpOwogICAgIGlmICghbGF5ZXJD
b250ZW50cykKQEAgLTExNTMsNjIgKzExNTMsNjYgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRy
YXdMYXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUMK
ICAgICBpZiAoIWxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllclJlcGFpbnRDb3VudChwbGF0
Zm9ybUNBTGF5ZXIpKQogICAgICAgICBsYXllclBhaW50QmVoYXZpb3IgfD0gR3JhcGhpY3NMYXll
clBhaW50Rmlyc3RUaWxlUGFpbnQ7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdL
U2V0Q3VycmVudEdyYXBoaWNzQ29udGV4dChjb250ZXh0KTsKLSNlbmRpZgotICAgIAotICAgIENH
Q29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0gICAgCisgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzYXZlcihncmFwaGljc0NvbnRleHQpOworCiAgICAgLy8gV2UgbmV2ZXIgdXNlIENv
bXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6Qm90dG9tVXAgb24gTWFjLgogICAgIEFT
U0VSVChsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09yaWVudGF0aW9uKCkg
PT0gR3JhcGhpY3NMYXllcjo6Q29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVudGF0aW9uOjpUb3BE
b3duKTsKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRm9udEFudGlhbGlh
c2luZ1N0YXRlU2F2ZXIgZm9udEFudGlhbGlhc2luZ1N0YXRlKGNvbnRleHQsIFtwbGF0Zm9ybUNB
TGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBpc09wYXF1ZV0pOwotICAgIGZvbnRBbnRpYWxpYXNpbmdT
dGF0ZS5zZXR1cChbV0FLV2luZG93IGhhc0xhbmRzY2FwZU9yaWVudGF0aW9uXSk7CisgICAgV1RG
OjpPcHRpb25hbDxGb250QW50aWFsaWFzaW5nU3RhdGVTYXZlcj4gZm9udEFudGlhbGlhc2luZ1N0
YXRlOworI2VuZGlmCisgICAgaWYgKGdyYXBoaWNzQ29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQo
KSkgeworICAgICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IGdyYXBoaWNzQ29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKTsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICAgICBXS1NldEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoY29udGV4dCk7CisKKyAgICAgICAgZm9udEFudGlhbGlhc2lu
Z1N0YXRlID0gRm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXIgeyBjb250ZXh0LCBbcGxhdGZvcm1D
QUxheWVyLT5wbGF0Zm9ybUxheWVyKCkgaXNPcGFxdWVdIH07CisgICAgICAgIGZvbnRBbnRpYWxp
YXNpbmdTdGF0ZS0+c2V0dXAoW1dBS1dpbmRvdyBoYXNMYW5kc2NhcGVPcmllbnRhdGlvbl0pOwog
I2Vsc2UKLSAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwotICAgIAot
ICAgIC8vIFNldCB1cCBhbiBOU0dyYXBoaWNzQ29udGV4dCBmb3IgdGhlIGNvbnRleHQsIHNvIHRo
YXQgcGFydHMgb2YgQXBwS2l0IHRoYXQgcmVseSBvbgotICAgIC8vIHRoZSBjdXJyZW50IE5TR3Jh
cGhpY3NDb250ZXh0IChlLmcuIE5TQ2VsbCBkcmF3aW5nKSBnZXQgdGhlIHJpZ2h0IG9uZS4KLSAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIE5TR3JhcGhpY3NDb250
ZXh0KiBsYXllckNvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0
aEdyYXBoaWNzUG9ydDpjb250ZXh0IGZsaXBwZWQ6WUVTXTsKLSAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKLSAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRl
eHQ6bGF5ZXJDb250ZXh0XTsKKyAgICAgICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGlj
c1N0YXRlXTsKKworICAgICAgICAvLyBTZXQgdXAgYW4gTlNHcmFwaGljc0NvbnRleHQgZm9yIHRo
ZSBjb250ZXh0LCBzbyB0aGF0IHBhcnRzIG9mIEFwcEtpdCB0aGF0IHJlbHkgb24KKyAgICAgICAg
Ly8gdGhlIGN1cnJlbnQgTlNHcmFwaGljc0NvbnRleHQgKGUuZy4gTlNDZWxsIGRyYXdpbmcpIGdl
dCB0aGUgcmlnaHQgb25lLgorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgorICAgICAgICBOU0dyYXBoaWNzQ29udGV4dCogbGF5ZXJDb250ZXh0ID0gW05TR3JhcGhp
Y3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y29udGV4dCBmbGlwcGVk
OllFU107CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgICAg
ICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bGF5ZXJDb250ZXh0XTsKICNl
bmRpZgorICAgIH0KICAgICAKICAgICB7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGlj
c0NvbnRleHQoY29udGV4dCk7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRJc0NBTGF5ZXJD
b250ZXh0KHRydWUpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0SXNBY2NlbGVyYXRlZENv
bnRleHQocGxhdGZvcm1DQUxheWVyLT5hY2NlbGVyYXRlc0RyYXdpbmcoKSk7Ci0gICAgICAgIAor
CiAgICAgICAgIGlmICghbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcGFx
dWUoKSAmJiAhcGxhdGZvcm1DQUxheWVyLT5zdXBwb3J0c1N1YnBpeGVsQW50aWFsaWFzZWRUZXh0
KCkgJiYgRm9udENhc2NhZGU6OmlzU3VicGl4ZWxBbnRpYWxpYXNpbmdBdmFpbGFibGUoKSkgewog
ICAgICAgICAgICAgLy8gVHVybiBvZmYgZm9udCBzbW9vdGhpbmcgdG8gaW1wcm92ZSB0aGUgYXBw
ZWFyYW5jZSBvZiB0ZXh0IHJlbmRlcmVkIG9udG8gYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgog
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNob3VsZFNtb290aEZvbnRzKGZhbHNlKTsK
ICAgICAgICAgfQotICAgICAgICAKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgLy8gSXQn
cyBpbXBvcnRhbnQgdG8gZ2V0IHRoZSBjbGlwIGZyb20gdGhlIGNvbnRleHQsIGJlY2F1c2UgaXQg
bWF5IGJlIHNpZ25pZmljYW50bHkKICAgICAgICAgLy8gc21hbGxlciB0aGFuIHRoZSBsYXllciBi
b3VuZHMgKGUuZy4gdGlsZWQgbGF5ZXJzKQotICAgICAgICBUaGVtZU1hYzo6c2V0Rm9jdXNSaW5n
Q2xpcFJlY3QoQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5nQm94KGNvbnRleHQpKTsKKyAgICAgICAg
VGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBSZWN0KGdyYXBoaWNzQ29udGV4dC5jbGlwQm91bmRz
KCkpOwogI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6
IGRpcnR5UmVjdHMpIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihncmFwaGljc0NvbnRleHQpOwogICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmNs
aXAocmVjdCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgbGF5ZXJDb250ZW50cy0+cGxh
dGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhwbGF0Zm9ybUNBTGF5ZXIsIGdyYXBoaWNzQ29udGV4
dCwgcmVjdCwgbGF5ZXJQYWludEJlaGF2aW9yKTsKICAgICAgICAgfQotICAgICAgICAKKwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZS5yZXN0
b3JlKCk7CisgICAgICAgIGlmIChmb250QW50aWFsaWFzaW5nU3RhdGUpCisgICAgICAgICAgICBm
b250QW50aWFsaWFzaW5nU3RhdGUtPnJlc3RvcmUoKTsKICNlbHNlCiAgICAgICAgIFRoZW1lTWFj
OjpzZXRGb2N1c1JpbmdDbGlwUmVjdChGbG9hdFJlY3QoKSk7Ci0gICAgICAgIAorCiAgICAgICAg
IFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07CiAjZW5kaWYKICAgICB9
CiAKLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOworICAgIHNhdmVyLnJlc3Rv
cmUoKTsKIAogICAgIC8vIFJlLWZldGNoIHRoZSBsYXllciBvd25lciwgc2luY2UgPHJkYXI6Ly9w
cm9ibGVtLzkxMjUxNTE+IGluZGljYXRlcyB0aGF0IGl0IG1pZ2h0IGhhdmUgYmVlbiBkZXN0cm95
ZWQgZHVyaW5nIHBhaW50aW5nLgogICAgIGxheWVyQ29udGVudHMgPSBwbGF0Zm9ybUNBTGF5ZXIt
Pm93bmVyKCk7CkBAIC0xMjE5LDcgKzEyMjMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJh
d0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQwog
ICAgIGludCByZXBhaW50Q291bnQgPSBsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJJbmNy
ZW1lbnRSZXBhaW50Q291bnQocGxhdGZvcm1DQUxheWVyKTsKIAogICAgIGlmICghcGxhdGZvcm1D
QUxheWVyLT51c2VzVGlsZWRCYWNraW5nTGF5ZXIoKSAmJiBsYXllckNvbnRlbnRzICYmIGxheWVy
Q29udGVudHMtPnBsYXRmb3JtQ0FMYXllclNob3dSZXBhaW50Q291bnRlcihwbGF0Zm9ybUNBTGF5
ZXIpKQotICAgICAgICBkcmF3UmVwYWludEluZGljYXRvcihjb250ZXh0LCBwbGF0Zm9ybUNBTGF5
ZXIsIHJlcGFpbnRDb3VudCwgbnVsbHB0cik7CisgICAgICAgIGRyYXdSZXBhaW50SW5kaWNhdG9y
KGdyYXBoaWNzQ29udGV4dCwgcGxhdGZvcm1DQUxheWVyLCByZXBhaW50Q291bnQpOwogfQogCiBD
R1JlY3QgUGxhdGZvcm1DQUxheWVyOjpmcmFtZUZvckxheWVyKGNvbnN0IFBsYXRmb3JtTGF5ZXIq
IHRpbGVMYXllcikKQEAgLTEyMzIsMTUgKzEyMzYsMTUgQEAgUmVmPFBsYXRmb3JtQ0FMYXllcj4g
UGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5
ZXIKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZShsYXllclR5cGUsIGNs
aWVudCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyQ29jb2E6OmVudW1lcmF0ZVJlY3RzQmVp
bmdEcmF3bihDR0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQordm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQogewogICAgIENHU1JlZ2lv
bk9iaiByZWdpb24gPSAoQ0dTUmVnaW9uT2JqKVttX2xheWVyIHJlZ2lvbkJlaW5nRHJhd25dOwog
ICAgIGlmICghcmVnaW9uKSB7Ci0gICAgICAgIGJsb2NrKENHQ29udGV4dEdldENsaXBCb3VuZGlu
Z0JveChjb250ZXh0KSk7CisgICAgICAgIGJsb2NrKGNvbnRleHQuY2xpcEJvdW5kcygpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIENHQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFu
c2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUludmVydChDR0NvbnRleHRHZXRDVE0oY29udGV4dCkp
OworICAgIENHQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5z
Zm9ybUludmVydChjb250ZXh0LmdldENUTSgpKTsKICAgICBDR1NSZWdpb25FbnVtZXJhdG9yT2Jq
IGVudW1lcmF0b3IgPSBDR1NSZWdpb25FbnVtZXJhdG9yKHJlZ2lvbik7CiAgICAgY29uc3QgQ0dS
ZWN0KiBuZXh0UmVjdDsKICAgICB3aGlsZSAoKG5leHRSZWN0ID0gQ0dTTmV4dFJlY3QoZW51bWVy
YXRvcikpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IGQ2YTdjMTY4ZjBlNDQx
ZmQ3ZDI5MGZjNGZlMzEzNjBjNTg1ZDU2ODQuLmYyZmRmNTJmMzgyMGNhMmE5NjI5ZTBmYjI0MDVj
ODg5OTIxOGY4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xMDEsNyArMTAx
LDcgQEAgUGxhdGZvcm1DQUxheWVyKiBQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcih2
b2lkKiBwbGF0Zm9ybUxheWVyKQogICAgIHJldHVybiBsYXllckludGVybiA/IGxheWVySW50ZXJu
LT5vd25lcigpIDogbnVsbHB0cjsKIH0KIAotUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExp
c3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KENHQ29udGV4dFJlZiwgUGxh
dGZvcm1DQUxheWVyKikKK1BsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0IFBsYXRmb3Jt
Q0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChHcmFwaGljc0NvbnRleHQmLCBQbGF0Zm9ybUNB
TGF5ZXIqKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWN0dWFsbHkgY29sbGVjdCByZWN0
cyB0byB1c2UgaW5zdGVhZCBvZiBkZWZhdWx0aW5nIHRvIFdpbmRvd3MnCiAgICAgLy8gbm9ybWFs
IGRyYXdpbmcgcGF0aC4KQEAgLTEwOSw5ICsxMDksOSBAQCBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFp
bnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0
UgogICAgIHJldHVybiBkaXJ0eVJlY3RzOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJh
d0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciogcGxhdGZvcm1DQUxheWVyLCBSZXBhaW50UmVjdExpc3QmLCBHcmFwaGljc0xheWVyUGFp
bnRCZWhhdmlvcikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1D
QUxheWVyLCBSZXBhaW50UmVjdExpc3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKIHsK
LSAgICBpbnRlcm4ocGxhdGZvcm1DQUxheWVyKS0+ZGlzcGxheUNhbGxiYWNrKHBsYXRmb3JtQ0FM
YXllci0+cGxhdGZvcm1MYXllcigpLCBjb250ZXh0KTsKKyAgICBpbnRlcm4ocGxhdGZvcm1DQUxh
eWVyKS0+ZGlzcGxheUNhbGxiYWNrKHBsYXRmb3JtQ0FMYXllci0+cGxhdGZvcm1MYXllcigpLCBj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAogQ0dSZWN0IFBsYXRmb3JtQ0FMYXllcjo6
ZnJhbWVGb3JMYXllcihjb25zdCBQbGF0Zm9ybUxheWVyKiB0aWxlTGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luSW50ZXJuYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcAppbmRleCBhZTJiMDZhNGY0YzhjNzQyODVj
YmY1ZjlkYmY4MzI0N2E5YzdhZmQyLi41ZTA0YzJiNDIzMjg5NThjZmI0MGFhZTNiNDQwYjc4ZGE0
MWFjMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAg
LTEyOSw3ICsxMjksOCBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjpkcmF3UmVw
YWludENvdW50ZXJzKENBQ0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbgogICAgIGVsc2UKICAgICAg
ICAgYmFja2dyb3VuZENvbG9yID0gY2FjaGVkQ0dDb2xvcihDb2xvcigyNTUsIDAsIDApKTsKIAot
ICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dCwgb3duZXIo
KSwgZHJhd0NvdW50LCBiYWNrZ3JvdW5kQ29sb3IpOworICAgIEdyYXBoaWNzQ29udGV4dCBncmFw
aGljc0NvbnRleHQoY29udGV4dCk7CisgICAgUGxhdGZvcm1DQUxheWVyOjpkcmF3UmVwYWludElu
ZGljYXRvcihncmFwaGljc0NvbnRleHQsIG93bmVyKCksIGRyYXdDb3VudCwgYmFja2dyb3VuZENv
bG9yKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6aW50ZXJuYWxTZXRO
ZWVkc0Rpc3BsYXkoY29uc3QgRmxvYXRSZWN0KiBkaXJ0eVJlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KaW5kZXggODA4ODA0YjJmODVm
ZmFlZTJiNDAxMjc3ZTIzNzliOGNjZTIzNmJjNy4uNjVlODc4MjA2M2ViOTA1NDlmODBjYWZiNWJi
OTEyMzNhYjYyM2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1dlYkxheWVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQpAQCAtNTEsOCArNTEsOSBAQCAtICh2b2lkKWRyYXdJbkNvbnRleHQ6
KENHQ29udGV4dFJlZiljb250ZXh0CiB7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBs
YXllciA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6cGxhdGZvcm1DQUxheWVyKChfX2JyaWRn
ZSB2b2lkKilzZWxmKTsKICAgICBpZiAobGF5ZXIpIHsKLSAgICAgICAgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgcmVjdHNUb1BhaW50ID0gV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQsIGxheWVyKTsKLSAgICAgICAg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBsYXll
ciwgcmVjdHNUb1BhaW50LCBzZWxmLmlzUmVuZGVyaW5nSW5Db250ZXh0ID8gV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclBhaW50U25hcHNob3R0aW5nIDogV2ViQ29yZTo6R3JhcGhpY3NMYXllclBhaW50
Tm9ybWFsKTsKKyAgICAgICAgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4
dChjb250ZXh0KTsKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVj
dExpc3QgcmVjdHNUb1BhaW50ID0gV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVj
dHNUb1BhaW50KGdyYXBoaWNzQ29udGV4dCwgbGF5ZXIpOworICAgICAgICBXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGdyYXBoaWNzQ29udGV4dCwgbGF5ZXIsIHJl
Y3RzVG9QYWludCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJQYWludFNuYXBzaG90dGluZyA6IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludE5vcm1h
bCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IGE5OWU5YzVm
M2EzOGM2YTIwNWI3YmNlYjUwOGIwMWJjZTkxZjg3YjEuLmY1ZjEzYjgyNjBmZGIyMGRiNjhiNjBl
YmM2NzgzZmY4MGUzYWYyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC03MSw3
ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUmKTsKIAotICAgIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJl
Ziwgdm9pZCAoXikoQ0dSZWN0KSk7CisgICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24o
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAoXikoQ0dSZWN0KSk7CiAKICAgICBib29s
IGhhc0Zyb250QnVmZmVyKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0KaW5kZXggYjVjYWRkMWRmNmNhOGU0MDM0ZWEyNGQwOGMzM2YwM2ZjN2ExYmI5Yi4uNDQwNjEw
MGZjZjc5ODFkMzRlYWJkNzdkZjkwMTg4NTkyMzEwMTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbQpAQCAtMzUzLDEzICszNTMsMTMgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEMK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVdlYkxheWVyOgogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVCYWNrZHJvcExheWVyOgotICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdM
YXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBmbGFncyk7
CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29u
dGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFj
a2Ryb3BMYXllcjoKICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
TGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyOgogICAgICAgICAvLyBGSVhNRTogVGhlc2UgaGF2ZSBh
IG1vcmUgY29tcGxpY2F0ZWQgbGF5ZXIgaGllcmFyY2h5LiBXZSBuZWVkIHRvIHBhaW50IGludG8K
ICAgICAgICAgLy8gYSBjaGlsZCBsYXllciBpbiBvcmRlciB0byBzZWUgdGhlIHJlbmRlcmVkIHJl
c3VsdHMuCi0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVu
dHMoY2dDb250ZXh0LCBtX2xheWVyLCBtX3BhaW50aW5nUmVjdHMsIGZsYWdzKTsKKyAgICAgICAg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LCBtX2xh
eWVyLCBtX3BhaW50aW5nUmVjdHMsIGZsYWdzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBX
ZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgogICAgIGNhc2UgV2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUcmFuc2Zvcm1MYXllcjoKQEAgLTM4Miw5ICsz
ODIsOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQwogICAgIG1fZnJvbnRDb250ZXh0UGVuZGlu
Z0ZsdXNoID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAotdm9pZCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250
ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCiB7Ci0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gaW52
ZXJzZVRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtSW52ZXJ0KENHQ29udGV4dEdldENUTShj
b250ZXh0KSk7CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZm9ybSA9IENHQWZm
aW5lVHJhbnNmb3JtSW52ZXJ0KGNvbnRleHQuZ2V0Q1RNKCkpOwogCiAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0byB1bi1hcHBseSB0aGUgZmxpcHBpbmcgb3IgY29udGVudHNTY2FsZSwKICAgICAvLyBi
ZWNhdXNlIHRoZXkncmUgbm90IGFwcGxpZWQgdG8gcmVwYWludCByZWN0cy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNDZlOGFhMDk5ODY0
NWE4Y2U1ZDJkN2I5NTdmOTlhZmRjMzhmNDY4MS4uZTc2MDhiZjE1NDI0NDFmZWE1YTMxNzFkMTI3
YTJhZjA3N2EyYjdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5jcHAKQEAgLTg5MSw3ICs4OTEsNyBAQCBSZWY8UGxhdGZvcm1DQUxheWVyPiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZUNvbXBhdGlibGVMYXllcihQbGF0Zm9ybUNBTGF5ZQog
ICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShsYXllclR5cGUsIGNsaWVu
dCwgKm1fY29udGV4dCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnVtZXJh
dGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dS
ZWN0KSkKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJh
d24oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVj
dCkpCiB7CiAgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS0+ZW51bWVyYXRlUmVjdHNCZWlu
Z0RyYXduKGNvbnRleHQsIGJsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaAppbmRleCBjMzE5OGEwYmE3ODcwZjI4ZmEyZTA5ODVhMTlmNTYwNDYz
NDRjMjIwLi40ZWExZWZjMmIxYjZkYzRiMmI1ZmJjYzYwZjFmMTllYzNmNTdkMTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xODQsNyArMTg0
LDcgQEAgcHVibGljOgogCiAgICAgUmVmPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlQ29tcGF0aWJs
ZUxheWVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgZW51bWVyYXRl
UmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmLCB2b2lkICheYmxvY2spKENHUmVjdCkpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB1aW50MzJfdCBob3N0aW5nQ29udGV4dElEKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384556</attachid>
            <date>2019-11-30 16:24:13 -0800</date>
            <delta_ts>2019-11-30 17:06:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204698-20191130162412.patch</filename>
            <type>text/plain</type>
            <size>29206</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZhOTQzODEyNDE3NmJk
NzI3YzY1OTgwZjFhZmQ4OGNiY2VhMTVmNC4uOWYxOTg3NTE4M2Y1ZjRiMDNjNjU2NTAyYjI3NDc0
Y2Y1ZTA1OTc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE5LTExLTMwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlaW1wbGVtZW50
IHNvbWUgUGxhdGZvcm1DQUxheWVyIG1ldGhvZHMgdXNpbmcgR3JhcGhpY3NDb250ZXh0IGluc3Rl
YWQgb2YgQ0dDb250ZXh0UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDQ2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisg
ICAgICAgIEluIG9yZGVyIHRvIG1ha2UgUGxhdGZvcm1DQUxheWVyLWxldmVsIERpc3BsYXlMaXN0
IHJlY29yZGluZyBwb3NzaWJsZSwKKyAgICAgICAgcmVpbXBsZW1lbnQgYSBmZXcgbWV0aG9kcyBp
biB0ZXJtcyBvZiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQgaW5zdGVhZAorICAgICAgICBvZiBD
R0NvbnRleHRSZWYgZGlyZWN0bHkuIE5hbWVseSwgY29sbGVjdFJlY3RzVG9QYWludCwgZHJhd0xh
eWVyQ29udGVudHMsCisgICAgICAgIGFuZCBkcmF3UmVwYWludEluZGljYXRvci4KKworICAgICAg
ICBJbiB0aGUgZHJhd0xheWVyQ29udGVudHMgY2FzZSwgdGhlcmUgYXJlIG9wZXJhdGlvbnMgKGxp
a2Ugc2V0dGluZyB0aGUKKyAgICAgICAgQXBwS2l0IGdsb2JhbCBncmFwaGljcyBjb250ZXh0KSB0
aGF0IGNhbm5vdCBiZSBkb25lIHdpdGhvdXQgYSBwbGF0Zm9ybQorICAgICAgICBjb250ZXh0LiBJ
biB0aG9zZSBjYXNlcywgd2Ugc2tpcCB0aGF0IG9wZXJhdGlvbiBpZiB3ZSBkb24ndCBoYXZlIGEK
KyAgICAgICAgcGxhdGZvcm0gY29udGV4dC4KKworICAgICAgICBBbnl0aGluZyBkZXBlbmRpbmcg
b24gdGhpcyBkb3duc3RyZWFtIHdpbGwgYnJlYWsgYW5kIG5lZWQgdG8gYmUKKyAgICAgICAgaW1w
bGVtZW50ZWQgYSBkaWZmZXJlbnQgd2F5IGluIHRoZSBEaXNwbGF5TGlzdCBjYXNlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL1RpbGVHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVHcmlkOjpwbGF0
Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyQ29jb2E6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAg
ICAgIChQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9XZWJMYXllci5tbToKKyAgICAgICAgKC1bV2ViTGF5ZXIgZHJh
d0luQ29udGV4dDpdKToKKwogMjAxOS0xMS0zMCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSBzdXNwZW5z
aW9uIGxvZ2ljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA5ZWY0NDQ5NTRmYjliYWI4ODBjMTZhMTY3ZmRlYjUzZGRi
NjRjMWIuLjFhNDczYWM3ZDMyYzAwNzY5ZGM2OGVkYzhlOGYwMDg0ZjIyZGJhNzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMTEtMzAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVpbXBsZW1lbnQgc29tZSBQbGF0Zm9ybUNBTGF5ZXIg
bWV0aG9kcyB1c2luZyBHcmFwaGljc0NvbnRleHQgaW5zdGVhZCBvZiBDR0NvbnRleHRSZWYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY5OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorCiAyMDE5LTExLTI3ICBB
bnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBBbmltYXRp
b25zXSBFbmFibGUgV2ViQW5pbWF0aW9uc0NTU0ludGVncmF0aW9uRW5hYmxlZCBieSBkZWZhdWx0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCmluZGV4IDA4NzkxNDViMTNjNTdkNmMyMDdiYmY0OTI2OWZmZjJmZDMwM2FjNWUuLjIwOTAz
NmY5MjU5YTdkMDhmOWI3ZWQzY2EzOWRhZjViNDIxOGVlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00NzgsNyArNDc4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
CiAgICAgZW51bSBJbmNsdWRlRGV2aWNlU2NhbGUgeyBEZWZpbml0ZWx5SW5jbHVkZURldmljZVNj
YWxlLCBQb3NzaWJseUluY2x1ZGVEZXZpY2VTY2FsZSB9OwotICAgIEFmZmluZVRyYW5zZm9ybSBn
ZXRDVE0oSW5jbHVkZURldmljZVNjYWxlIGluY2x1ZGVTY2FsZSA9IFBvc3NpYmx5SW5jbHVkZURl
dmljZVNjYWxlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBBZmZpbmVUcmFuc2Zvcm0gZ2V0
Q1RNKEluY2x1ZGVEZXZpY2VTY2FsZSBpbmNsdWRlU2NhbGUgPSBQb3NzaWJseUluY2x1ZGVEZXZp
Y2VTY2FsZSkgY29uc3Q7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFwcGxpZXMgdGhlIGRldmlj
ZSBzY2FsZSBmYWN0b3IgdG8gdGhlIGNvbnRleHQsIG1ha2luZyB0aGUgY29udGV4dCBjYXBhYmxl
IG9mCiAgICAgLy8gYWN0aW5nIGFzIGEgYmFzZS1sZXZlbCBjb250ZXh0IGZvciBhIEhpRFBJIGVu
dmlyb25tZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKaW5kZXggMjE5OTUyN2NkZGU0Y2ViYzYzOWFiMTc2NmE2
NDgyYThjNTUwYTY4YS4uZDViMDMyN2NmMDRkYjc4NGU4MjMzMTMwNzc3YTIyNGU0MTUyMzczOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBTGF5ZXIuY3BwCkBAIC03OSwyNyArNzksMzcgQEAgYm9vbCBQbGF0Zm9ybUNBTGF5ZXI6
OmNhbkhhdmVCYWNraW5nU3RvcmUoKSBjb25zdAogICAgICAgICB8fCBtX2xheWVyVHlwZSA9PSBM
YXllclR5cGU6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjsKIH0KIAotdm9pZCBQbGF0
Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKENHQ29udGV4dFJlZiBjb250ZXh0LCBQ
bGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FMYXllciwgaW50IHJlcGFpbnRDb3VudCwgQ0dDb2xv
clJlZiBjdXN0b21CYWNrZ3JvdW5kQ29sb3IpCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1Jl
cGFpbnRJbmRpY2F0b3IoR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIFBsYXRmb3Jt
Q0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBpbnQgcmVwYWludENvdW50LCBDb2xvciBjdXN0b21C
YWNrZ3JvdW5kQ29sb3IpCiB7Ci0gICAgY2hhciB0ZXh0WzE2XTsgLy8gdGhhdCdzIGEgbG90IG9m
IHJlcGFpbnRzCi0gICAgc25wcmludGYodGV4dCwgc2l6ZW9mKHRleHQpLCAiJWQiLCByZXBhaW50
Q291bnQpOwotICAgIAotICAgIEZsb2F0UmVjdCBpbmRpY2F0b3JCb3ggPSBwbGF0Zm9ybUNBTGF5
ZXItPmJvdW5kcygpO1wKLSAgICBpbmRpY2F0b3JCb3guc2V0TG9jYXRpb24oIHsgMSwgMSB9ICk7
Ci0gICAgaW5kaWNhdG9yQm94LnNldFNpemUoRmxvYXRTaXplKDEyICsgMTAgKiBzdHJsZW4odGV4
dCksIDI3KSk7Ci0KLSAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
Ci0gICAgCi0gICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgMC41Zik7Ci0gICAgQ0dDb250
ZXh0QmVnaW5UcmFuc3BhcmVuY3lMYXllcldpdGhSZWN0KGNvbnRleHQsIGluZGljYXRvckJveCwg
MCk7Ci0gICAgCi0gICAgaWYgKGN1c3RvbUJhY2tncm91bmRDb2xvcikKLSAgICAgICAgQ0dDb250
ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGNvbnRleHQsIGN1c3RvbUJhY2tncm91bmRDb2xvcik7
Ci0gICAgZWxzZQotICAgICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwgMCwg
MC41ZiwgMC4yNWYsIDEpOwotICAgIAorICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsTWFyZ2luID0g
Mi41OworICAgIGNvbnN0IGZsb2F0IGhvcml6b250YWxNYXJnaW4gPSA1OworICAgIGNvbnN0IHVu
c2lnbmVkIGZvbnRTaXplID0gMjI7CisgICAgY29uc3QgQ29sb3IgYmFja2dyb3VuZENvbG9yKDAu
NWYsIDAuMjVmLCAxLjBmLCAxLjBmKTsKKyAgICBjb25zdCBDb2xvciBhY2NlbGVyYXRlZENvbnRl
eHRMYWJlbENvbG9yKDEuMGYsIDAuZiwgMC5mLCAxLjBmKTsKKyAgICBjb25zdCBDb2xvciB1bmFj
Y2VsZXJhdGVkQ29udGV4dExhYmVsQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMS4wZik7CisgICAg
Y29uc3QgQ29sb3IgbGluZWFyR2x5cGhNYXNrT3V0bGluZUNvbG9yKDAuZiwgMC5mLCAwLmYsIDAu
NzVmKTsKKyAgICBjb25zdCBDb2xvciBkaXNwbGF5TGlzdEJvcmRlckNvbG9yKDAuZiwgMC5mLCAw
LmYsIDAuNjVmKTsKKworICAgIFRleHRSdW4gdGV4dFJ1bihTdHJpbmc6Om51bWJlcihyZXBhaW50
Q291bnQpKTsKKworICAgIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uOwor
ICAgIGZvbnREZXNjcmlwdGlvbi5zZXRPbmVGYW1pbHkoIkhlbHZldGljYSIpOworICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRTcGVjaWZpZWRTaXplKGZvbnRTaXplKTsKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0Q29tcHV0ZWRTaXplKGZvbnRTaXplKTsKKworICAgIEZvbnRDYXNjYWRlIGNhc2NhZGUo
V1RGTW92ZShmb250RGVzY3JpcHRpb24pKTsKKyAgICBjYXNjYWRlLnVwZGF0ZShudWxscHRyKTsK
KworICAgIGZsb2F0IHRleHRXaWR0aCA9IGNhc2NhZGUud2lkdGgodGV4dFJ1bik7CisKKyAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKwor
ICAgIGdyYXBoaWNzQ29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNWYpOworCisgICAg
Z3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihjdXN0b21CYWNrZ3JvdW5kQ29sb3IuaXNWYWxp
ZCgpID8gY3VzdG9tQmFja2dyb3VuZENvbG9yIDogYmFja2dyb3VuZENvbG9yKTsKKyAgICBGbG9h
dFJlY3QgaW5kaWNhdG9yQm94KDEsIDEsIGhvcml6b250YWxNYXJnaW4gKiAyICsgdGV4dFdpZHRo
LCB2ZXJ0aWNhbE1hcmdpbiAqIDIgKyBmb250U2l6ZSk7CiAgICAgaWYgKHBsYXRmb3JtQ0FMYXll
ci0+aXNPcGFxdWUoKSkKLSAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgaW5kaWNh
dG9yQm94KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmZpbGxSZWN0KGluZGljYXRvckJveCk7
CiAgICAgZWxzZSB7CiAgICAgICAgIFBhdGggYm91bmRzUGF0aDsKICAgICAgICAgYm91bmRzUGF0
aC5tb3ZlVG8oaW5kaWNhdG9yQm94Lm1heFhNaW5ZQ29ybmVyKCkpOwpAQCAtMTExLDMyICsxMjEs
MjQgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKENHQ29udGV4
dFJlZiBjb250ZXh0LCBQbGF0Zm9ybUNBTGF5ZXIKICAgICAgICAgYm91bmRzUGF0aC5hZGRMaW5l
VG8oRmxvYXRQb2ludChpbmRpY2F0b3JCb3gueCgpICsgY29ybmVyQ2h1bmssIGluZGljYXRvckJv
eC55KCkpKTsKICAgICAgICAgYm91bmRzUGF0aC5jbG9zZVN1YnBhdGgoKTsKIAotICAgICAgICBD
R0NvbnRleHRBZGRQYXRoKGNvbnRleHQsIGJvdW5kc1BhdGgucGxhdGZvcm1QYXRoKCkpOwotICAg
ICAgICBDR0NvbnRleHRGaWxsUGF0aChjb250ZXh0KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LmZpbGxQYXRoKGJvdW5kc1BhdGgpOwogICAgIH0KIAogICAgIGlmIChwbGF0Zm9ybUNBTGF5ZXIt
Pm93bmVyKCktPmlzVXNpbmdEaXNwbGF5TGlzdERyYXdpbmcocGxhdGZvcm1DQUxheWVyKSkgewot
ICAgICAgICBDR0NvbnRleHRTZXRSR0JTdHJva2VDb2xvcihjb250ZXh0LCAwLCAwLCAwLCAwLjY1
KTsKLSAgICAgICAgQ0dDb250ZXh0U2V0TGluZVdpZHRoKGNvbnRleHQsIDIpOwotICAgICAgICBD
R0NvbnRleHRTdHJva2VSZWN0KGNvbnRleHQsIGluZGljYXRvckJveCk7CisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihkaXNwbGF5TGlzdEJvcmRlckNvbG9yKTsKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LnN0cm9rZVJlY3QoaW5kaWNhdG9yQm94LCAyKTsKICAgICB9CiAK
LSAgICBDR0Zsb2F0IHN0cm9rZVdpZHRoQXNQZXJjZW50YWdlT2ZGb250U2l6ZSA9IDA7Ci0gICAg
Q29sb3Igc3Ryb2tlQ29sb3I7Ci0KICAgICBpZiAoIXBsYXRmb3JtQ0FMYXllci0+aXNPcGFxdWUo
KSAmJiBwbGF0Zm9ybUNBTGF5ZXItPnN1cHBvcnRzU3VicGl4ZWxBbnRpYWxpYXNlZFRleHQoKSAm
JiBwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJhdGVzRHJhd2luZygpKSB7Ci0gICAgICAgIHN0cm9r
ZUNvbG9yID0gQ29sb3IoMCwgMCwgMCwgMjAwKTsKLSAgICAgICAgc3Ryb2tlV2lkdGhBc1BlcmNl
bnRhZ2VPZkZvbnRTaXplID0gLTQuNTsgLy8gTmVnYXRpdmUgbWVhbnMgInN0cm9rZSBhbmQgZmls
bCI7IHNlZSBkb2NzIGZvciBrQ1RTdHJva2VXaWR0aEF0dHJpYnV0ZU5hbWUuCisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC5zZXRTdHJva2VDb2xvcihsaW5lYXJHbHlwaE1hc2tPdXRsaW5lQ29sb3Ip
OworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDQuNSk7CisgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsIHwgVGV4
dE1vZGVTdHJva2UpOwogICAgIH0KIAotICAgIGlmIChwbGF0Zm9ybUNBTGF5ZXItPmFjY2VsZXJh
dGVzRHJhd2luZygpKQotICAgICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3IoY29udGV4dCwg
MSwgMCwgMCwgMSk7Ci0gICAgZWxzZQotICAgICAgICBDR0NvbnRleHRTZXRSR0JGaWxsQ29sb3Io
Y29udGV4dCwgMSwgMSwgMSwgMSk7Ci0gICAgCi0gICAgcGxhdGZvcm1DQUxheWVyLT5kcmF3VGV4
dEF0UG9pbnQoY29udGV4dCwgaW5kaWNhdG9yQm94LngoKSArIDUsIGluZGljYXRvckJveC55KCkg
KyAyMiwgQ0dTaXplTWFrZSgxLCAtMSksIDIyLCB0ZXh0LCBzdHJsZW4odGV4dCksIHN0cm9rZVdp
ZHRoQXNQZXJjZW50YWdlT2ZGb250U2l6ZSwgc3Ryb2tlQ29sb3IpOwotICAgIAotICAgIENHQ29u
dGV4dEVuZFRyYW5zcGFyZW5jeUxheWVyKGNvbnRleHQpOworICAgIGdyYXBoaWNzQ29udGV4dC5z
ZXRGaWxsQ29sb3IocGxhdGZvcm1DQUxheWVyLT5hY2NlbGVyYXRlc0RyYXdpbmcoKSA/IGFjY2Vs
ZXJhdGVkQ29udGV4dExhYmVsQ29sb3IgOiB1bmFjY2VsZXJhdGVkQ29udGV4dExhYmVsQ29sb3Ip
OworCisgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdUZXh0KGNhc2NhZGUsIHRleHRSdW4sIEZsb2F0
UG9pbnQoaW5kaWNhdG9yQm94LngoKSArIGhvcml6b250YWxNYXJnaW4sIGluZGljYXRvckJveC55
KCkgKyBmb250U2l6ZSkpOworICAgIGdyYXBoaWNzQ29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXll
cigpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZmxpcENvbnRleHQoQ0dDb250ZXh0UmVm
IGNvbnRleHQsIENHRmxvYXQgaGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCBlYmMxMDBjMDZhZjMzYmQz
YjZjYmZlMjgwOWRlMzlmMmJkYjUzYWI4Li40MDExNzJjNDEyZWY4YjBiNzk2ZjFiYTljNWFhMDU3
MTAwYTUxZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMjY4LDcgKzI2OCw3IEBAIHB1YmxpYzoKICAgICBS
ZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVDb21wYXRpYmxlTGF5ZXJPclRha2VGcm9tUG9vbChM
YXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCosIEludFNpemUpOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0Nv
bnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
bnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oR3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAoXmJsb2NrKShG
bG9hdFJlY3QpKSA9IDA7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB3ZWJM
YXllck1heFJlY3RzVG9QYWludCA9IDU7CkBAIC0yODEsOSArMjgxLDkgQEAgcHVibGljOgogICAg
IHR5cGVkZWYgVmVjdG9yPEZsb2F0UmVjdCwgd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQ+IFJlcGFp
bnRSZWN0TGlzdDsKICAgICAgICAgCiAgICAgLy8gRnVuY3Rpb25zIGFsbG93cyB1cyB0byBzaGFy
ZSBpbXBsZW1lbnRhdGlvbiBhY3Jvc3MgV2ViVGlsZWRMYXllciBhbmQgV2ViTGF5ZXIKLSAgICBz
dGF0aWMgUmVwYWludFJlY3RMaXN0IGNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250ZXh0UmVmLCBQ
bGF0Zm9ybUNBTGF5ZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDR0Nv
bnRleHRSZWYsIFBsYXRmb3JtQ0FMYXllciosIFJlcGFpbnRSZWN0TGlzdCYgZGlydHlSZWN0cywg
R3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpOwotICAgIHN0YXRpYyB2b2lkIGRyYXdSZXBhaW50
SW5kaWNhdG9yKENHQ29udGV4dFJlZiwgUGxhdGZvcm1DQUxheWVyKiwgaW50IHJlcGFpbnRDb3Vu
dCwgQ0dDb2xvclJlZiBjdXN0b21CYWNrZ3JvdW5kQ29sb3IpOworICAgIHN0YXRpYyBSZXBhaW50
UmVjdExpc3QgY29sbGVjdFJlY3RzVG9QYWludChHcmFwaGljc0NvbnRleHQmLCBQbGF0Zm9ybUNB
TGF5ZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmLCBQbGF0Zm9ybUNBTGF5ZXIqLCBSZXBhaW50UmVjdExpc3QmLCBHcmFwaGljc0xheWVyUGFp
bnRCZWhhdmlvcik7CisgICAgc3RhdGljIHZvaWQgZHJhd1JlcGFpbnRJbmRpY2F0b3IoR3JhcGhp
Y3NDb250ZXh0JiwgUGxhdGZvcm1DQUxheWVyKiwgaW50IHJlcGFpbnRDb3VudCwgQ29sb3IgY3Vz
dG9tQmFja2dyb3VuZENvbG9yID0geyB9KTsKICAgICBzdGF0aWMgQ0dSZWN0IGZyYW1lRm9yTGF5
ZXIoY29uc3QgUGxhdGZvcm1MYXllciopOwogCiAgICAgdm9pZCBtb3ZlVG9MYXllclBvb2woKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVHcmlkLmNwcApp
bmRleCA0OTZhMzJkZjI3NjVjNzE5NjRjZDAzMmIzMjkxMTQ2YWRkNjQ2MzFhLi43ZDhiMGVmOWU2
NWJkN2FlNGI4ZGY3NmFmNzc5ZjMyYzU5ZTg3ZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuY3BwCkBAIC03MjksMTMgKzcyOSwxMyBAQCB2
b2lkIFRpbGVHcmlkOjpwbGF0Zm9ybUNBTGF5ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXll
ciogcGxhdGZvcm1DQUxheWVyLCBHcgogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbGF5ZXJP
cmlnaW4ueCgpLCAtbGF5ZXJPcmlnaW4ueSgpKTsKICAgICAgICAgY29udGV4dC5zY2FsZShtX3Nj
YWxlKTsKIAotICAgICAgICBQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBkaXJ0eVJl
Y3RzID0gUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCksIHBsYXRmb3JtQ0FMYXllcik7Ci0gICAgICAgIFBsYXRmb3JtQ0FMYXllcjo6
ZHJhd0xheWVyQ29udGVudHMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgJm1fY29udHJvbGxl
ci5yb290TGF5ZXIoKSwgZGlydHlSZWN0cywgbGF5ZXJQYWludEJlaGF2aW9yKTsKKyAgICAgICAg
UGxhdGZvcm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgZGlydHlSZWN0cyA9IFBsYXRmb3JtQ0FM
YXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChjb250ZXh0LCBwbGF0Zm9ybUNBTGF5ZXIpOworICAg
ICAgICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQsICZtX2NvbnRy
b2xsZXIucm9vdExheWVyKCksIGRpcnR5UmVjdHMsIGxheWVyUGFpbnRCZWhhdmlvcik7CiAgICAg
fQogCiAgICAgaW50IHJlcGFpbnRDb3VudCA9IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFp
bnRDb3VudChwbGF0Zm9ybUNBTGF5ZXIpOwogICAgIGlmIChtX2NvbnRyb2xsZXIucm9vdExheWVy
KCkub3duZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvd1JlcGFpbnRDb3VudGVyKDApKQotICAgICAg
ICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIHBsYXRmb3JtQ0FMYXllciwgcmVwYWludENvdW50LCBjYWNoZWRDR0NvbG9yKG1f
Y29udHJvbGxlci50aWxlRGVidWdCb3JkZXJDb2xvcigpKSk7CisgICAgICAgIFBsYXRmb3JtQ0FM
YXllcjo6ZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dCwgcGxhdGZvcm1DQUxheWVyLCByZXBh
aW50Q291bnQsIG1fY29udHJvbGxlci50aWxlRGVidWdCb3JkZXJDb2xvcigpKTsKIAogICAgIGlm
IChtX2NvbnRyb2xsZXIuc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpKSB7CiAg
ICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlUGFydChwbGF0Zm9ybUNBTGF5ZXItPnBvc2l0aW9uKCku
eCgpLCBwbGF0Zm9ybUNBTGF5ZXItPnBvc2l0aW9uKCkueSgpLCBwbGF0Zm9ybUNBTGF5ZXItPmJv
dW5kcygpLnNpemUoKS53aWR0aCgpLCBwbGF0Zm9ybUNBTGF5ZXItPmJvdW5kcygpLnNpemUoKS5o
ZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCA1ZDk2NjliN2M2
MDhhMzRlZjg0MWFkOWRlNmQ5M2IzYjdhZmU5YTJiLi5kZDFlYjQ2Nzk0MmUwYmIwNjllYWY3OTZm
NzcxY2IwOTMyZmNjOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgKQEAgLTE3
OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAKICAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVD
b21wYXRpYmxlTGF5ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBlbnVtZXJhdGVSZWN0c0JlaW5n
RHJhd24oQ0dDb250ZXh0UmVmLCB2b2lkICheYmxvY2spKENHUmVjdCkpIG92ZXJyaWRlOworICAg
IHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKEdyYXBoaWNzQ29udGV4dCYsIHZvaWQgKF5i
bG9jaykoRmxvYXRSZWN0KSkgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBiYWNraW5nU3RvcmVC
eXRlc1BlclBpeGVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVy
Q29jb2EubW0KaW5kZXggNDY1NzQyODBiMWM4YTJhNTU2OGM1OGZkNGI5MWEzOGMwYjMzZDE5MS4u
OWU2ZjQ0NThjMTNmNjMxYWU0NjQ0NWYwNjY4ZjY3NmNjZjc2YmIxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUxheWVyQ29jb2EubW0KQEAgLTExMTksMjEgKzExMTksMjEgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnNldEFuY2hvclBvaW50T25NYWluVGhyZWFkKEZsb2F0UG9pbnQzRCB2YWx1ZSkK
IH0KICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQogCi1QbGF0Zm9ybUNBTGF5ZXI6OlJl
cGFpbnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKQorUGxhdGZv
cm1DQUxheWVyOjpSZXBhaW50UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNU
b1BhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9y
bUNBTGF5ZXIpCiB7CiAgICAgX19ibG9jayBkb3VibGUgdG90YWxSZWN0QXJlYSA9IDA7CiAgICAg
X19ibG9jayB1bnNpZ25lZCByZWN0Q291bnQgPSAwOwogICAgIF9fYmxvY2sgUmVwYWludFJlY3RM
aXN0IGRpcnR5UmVjdHM7CiAgICAgCi0gICAgcGxhdGZvcm1DQUxheWVyLT5lbnVtZXJhdGVSZWN0
c0JlaW5nRHJhd24oY29udGV4dCwgXihDR1JlY3QgcmVjdCkgeworICAgIHBsYXRmb3JtQ0FMYXll
ci0+ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKGNvbnRleHQsIF4oRmxvYXRSZWN0IHJlY3QpIHsK
ICAgICAgICAgaWYgKCsrcmVjdENvdW50ID4gd2ViTGF5ZXJNYXhSZWN0c1RvUGFpbnQpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICB0b3RhbFJlY3RBcmVhICs9IHJlY3Qu
c2l6ZS53aWR0aCAqIHJlY3Quc2l6ZS5oZWlnaHQ7CisgICAgICAgIHRvdGFsUmVjdEFyZWEgKz0g
cmVjdC5hcmVhKCk7CiAgICAgICAgIGRpcnR5UmVjdHMuYXBwZW5kKHJlY3QpOwogICAgIH0pOwog
ICAgIAotICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzID0gQ0dDb250ZXh0R2V0Q2xpcEJvdW5kaW5n
Qm94KGNvbnRleHQpOworICAgIEZsb2F0UmVjdCBjbGlwQm91bmRzID0gY29udGV4dC5jbGlwQm91
bmRzKCk7CiAgICAgZG91YmxlIGNsaXBBcmVhID0gY2xpcEJvdW5kcy53aWR0aCgpICogY2xpcEJv
dW5kcy5oZWlnaHQoKTsKICAgICAKICAgICBpZiAocmVjdENvdW50ID49IHdlYkxheWVyTWF4UmVj
dHNUb1BhaW50IHx8IHRvdGFsUmVjdEFyZWEgPj0gY2xpcEFyZWEgKiB3ZWJMYXllcldhc3RlZFNw
YWNlVGhyZXNob2xkKSB7CkBAIC0xMTQ0LDcgKzExNDQsNyBAQCBQbGF0Zm9ybUNBTGF5ZXI6OlJl
cGFpbnRSZWN0TGlzdCBQbGF0Zm9ybUNBTGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoQ0dDb250
ZXh0UgogICAgIHJldHVybiBkaXJ0eVJlY3RzOwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllcjo6
ZHJhd0xheWVyQ29udGVudHMoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllciogcGxhdGZvcm1DQUxheWVyLCBSZXBhaW50UmVjdExpc3QmIGRpcnR5UmVjdHMsIEdy
YXBoaWNzTGF5ZXJQYWludEJlaGF2aW9yIGxheWVyUGFpbnRCZWhhdmlvcikKK3ZvaWQgUGxhdGZv
cm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIsIFJlcGFpbnRS
ZWN0TGlzdCYgZGlydHlSZWN0cywgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IgbGF5ZXJQYWlu
dEJlaGF2aW9yKQogewogICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogbGF5ZXJD
b250ZW50cyA9IHBsYXRmb3JtQ0FMYXllci0+b3duZXIoKTsKICAgICBpZiAoIWxheWVyQ29udGVu
dHMpCkBAIC0xMTUzLDYyICsxMTUzLDY2IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpkcmF3TGF5
ZXJDb250ZW50cyhDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViQ29yZTo6UGxhdGZvcm1DCiAgICAg
aWYgKCFsYXllckNvbnRlbnRzLT5wbGF0Zm9ybUNBTGF5ZXJSZXBhaW50Q291bnQocGxhdGZvcm1D
QUxheWVyKSkKICAgICAgICAgbGF5ZXJQYWludEJlaGF2aW9yIHw9IEdyYXBoaWNzTGF5ZXJQYWlu
dEZpcnN0VGlsZVBhaW50OwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBXS1NldEN1
cnJlbnRHcmFwaGljc0NvbnRleHQoY29udGV4dCk7Ci0jZW5kaWYKLSAgICAKLSAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNvbnRleHQpOwotICAgIAorICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKwogICAgIC8vIFdlIG5ldmVyIHVzZSBDb21wb3Np
dGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb246OkJvdHRvbVVwIG9uIE1hYy4KICAgICBBU1NFUlQo
bGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVyQ29udGVudHNPcmllbnRhdGlvbigpID09IEdy
YXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbjo6VG9wRG93bik7
Ci0gICAgCisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZvbnRBbnRpYWxpYXNpbmdT
dGF0ZVNhdmVyIGZvbnRBbnRpYWxpYXNpbmdTdGF0ZShjb250ZXh0LCBbcGxhdGZvcm1DQUxheWVy
LT5wbGF0Zm9ybUxheWVyKCkgaXNPcGFxdWVdKTsKLSAgICBmb250QW50aWFsaWFzaW5nU3RhdGUu
c2V0dXAoW1dBS1dpbmRvdyBoYXNMYW5kc2NhcGVPcmllbnRhdGlvbl0pOworICAgIFdURjo6T3B0
aW9uYWw8Rm9udEFudGlhbGlhc2luZ1N0YXRlU2F2ZXI+IGZvbnRBbnRpYWxpYXNpbmdTdGF0ZTsK
KyNlbmRpZgorICAgIGlmIChncmFwaGljc0NvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpIHsK
KyAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1D
b250ZXh0KCk7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAgICAgV0tTZXRDdXJyZW50
R3JhcGhpY3NDb250ZXh0KGNvbnRleHQpOworCisgICAgICAgIGZvbnRBbnRpYWxpYXNpbmdTdGF0
ZSA9IEZvbnRBbnRpYWxpYXNpbmdTdGF0ZVNhdmVyIHsgY29udGV4dCwgW3BsYXRmb3JtQ0FMYXll
ci0+cGxhdGZvcm1MYXllcigpIGlzT3BhcXVlXSB9OworICAgICAgICBmb250QW50aWFsaWFzaW5n
U3RhdGUtPnNldHVwKFtXQUtXaW5kb3cgaGFzTGFuZHNjYXBlT3JpZW50YXRpb25dKTsKICNlbHNl
Ci0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKLSAgICAKLSAgICAv
LyBTZXQgdXAgYW4gTlNHcmFwaGljc0NvbnRleHQgZm9yIHRoZSBjb250ZXh0LCBzbyB0aGF0IHBh
cnRzIG9mIEFwcEtpdCB0aGF0IHJlbHkgb24KLSAgICAvLyB0aGUgY3VycmVudCBOU0dyYXBoaWNz
Q29udGV4dCAoZS5nLiBOU0NlbGwgZHJhd2luZykgZ2V0IHRoZSByaWdodCBvbmUuCi0gICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBOU0dyYXBoaWNzQ29udGV4dCog
bGF5ZXJDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFw
aGljc1BvcnQ6Y29udGV4dCBmbGlwcGVkOllFU107Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECi0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Omxh
eWVyQ29udGV4dF07CisgICAgICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0
ZV07CisKKyAgICAgICAgLy8gU2V0IHVwIGFuIE5TR3JhcGhpY3NDb250ZXh0IGZvciB0aGUgY29u
dGV4dCwgc28gdGhhdCBwYXJ0cyBvZiBBcHBLaXQgdGhhdCByZWx5IG9uCisgICAgICAgIC8vIHRo
ZSBjdXJyZW50IE5TR3JhcGhpY3NDb250ZXh0IChlLmcuIE5TQ2VsbCBkcmF3aW5nKSBnZXQgdGhl
IHJpZ2h0IG9uZS4KKyAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
KyAgICAgICAgTlNHcmFwaGljc0NvbnRleHQqIGxheWVyQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29u
dGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNvbnRleHQgZmxpcHBlZDpZRVNd
OworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICAgICAgW05T
R3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OmxheWVyQ29udGV4dF07CiAjZW5kaWYK
KyAgICB9CiAgICAgCiAgICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250
ZXh0KGNvbnRleHQpOwogICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0SXNDQUxheWVyQ29udGV4
dCh0cnVlKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldElzQWNjZWxlcmF0ZWRDb250ZXh0
KHBsYXRmb3JtQ0FMYXllci0+YWNjZWxlcmF0ZXNEcmF3aW5nKCkpOwotICAgICAgICAKKwogICAg
ICAgICBpZiAoIWxheWVyQ29udGVudHMtPnBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkg
JiYgIXBsYXRmb3JtQ0FMYXllci0+c3VwcG9ydHNTdWJwaXhlbEFudGlhbGlhc2VkVGV4dCgpICYm
IEZvbnRDYXNjYWRlOjppc1N1YnBpeGVsQW50aWFsaWFzaW5nQXZhaWxhYmxlKCkpIHsKICAgICAg
ICAgICAgIC8vIFR1cm4gb2ZmIGZvbnQgc21vb3RoaW5nIHRvIGltcHJvdmUgdGhlIGFwcGVhcmFu
Y2Ugb2YgdGV4dCByZW5kZXJlZCBvbnRvIGEgdHJhbnNwYXJlbnQgYmFja2dyb3VuZC4KICAgICAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaG91bGRTbW9vdGhGb250cyhmYWxzZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIC8vIEl0J3MgaW1w
b3J0YW50IHRvIGdldCB0aGUgY2xpcCBmcm9tIHRoZSBjb250ZXh0LCBiZWNhdXNlIGl0IG1heSBi
ZSBzaWduaWZpY2FudGx5CiAgICAgICAgIC8vIHNtYWxsZXIgdGhhbiB0aGUgbGF5ZXIgYm91bmRz
IChlLmcuIHRpbGVkIGxheWVycykKLSAgICAgICAgVGhlbWVNYWM6OnNldEZvY3VzUmluZ0NsaXBS
ZWN0KENHQ29udGV4dEdldENsaXBCb3VuZGluZ0JveChjb250ZXh0KSk7CisgICAgICAgIFRoZW1l
TWFjOjpzZXRGb2N1c1JpbmdDbGlwUmVjdChncmFwaGljc0NvbnRleHQuY2xpcEJvdW5kcygpKTsK
ICNlbmRpZgotICAgICAgICAKKwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiBkaXJ0
eVJlY3RzKSB7CiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoZ3JhcGhpY3NDb250ZXh0KTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5jbGlwKHJl
Y3QpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGxheWVyQ29udGVudHMtPnBsYXRmb3Jt
Q0FMYXllclBhaW50Q29udGVudHMocGxhdGZvcm1DQUxheWVyLCBncmFwaGljc0NvbnRleHQsIHJl
Y3QsIGxheWVyUGFpbnRCZWhhdmlvcik7CiAgICAgICAgIH0KLSAgICAgICAgCisKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICBmb250QW50aWFsaWFzaW5nU3RhdGUucmVzdG9yZSgp
OworICAgICAgICBpZiAoZm9udEFudGlhbGlhc2luZ1N0YXRlKQorICAgICAgICAgICAgZm9udEFu
dGlhbGlhc2luZ1N0YXRlLT5yZXN0b3JlKCk7CiAjZWxzZQogICAgICAgICBUaGVtZU1hYzo6c2V0
Rm9jdXNSaW5nQ2xpcFJlY3QoRmxvYXRSZWN0KCkpOwotICAgICAgICAKKwogICAgICAgICBbTlNH
cmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOwogI2VuZGlmCiAgICAgfQogCi0g
ICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKKyAgICBzYXZlci5yZXN0b3JlKCk7
CiAKICAgICAvLyBSZS1mZXRjaCB0aGUgbGF5ZXIgb3duZXIsIHNpbmNlIDxyZGFyOi8vcHJvYmxl
bS85MTI1MTUxPiBpbmRpY2F0ZXMgdGhhdCBpdCBtaWdodCBoYXZlIGJlZW4gZGVzdHJveWVkIGR1
cmluZyBwYWludGluZy4KICAgICBsYXllckNvbnRlbnRzID0gcGxhdGZvcm1DQUxheWVyLT5vd25l
cigpOwpAQCAtMTIxOSw3ICsxMjIzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXll
ckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUMKICAgICBp
bnQgcmVwYWludENvdW50ID0gbGF5ZXJDb250ZW50cy0+cGxhdGZvcm1DQUxheWVySW5jcmVtZW50
UmVwYWludENvdW50KHBsYXRmb3JtQ0FMYXllcik7CiAKICAgICBpZiAoIXBsYXRmb3JtQ0FMYXll
ci0+dXNlc1RpbGVkQmFja2luZ0xheWVyKCkgJiYgbGF5ZXJDb250ZW50cyAmJiBsYXllckNvbnRl
bnRzLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIocGxhdGZvcm1DQUxheWVyKSkK
LSAgICAgICAgZHJhd1JlcGFpbnRJbmRpY2F0b3IoY29udGV4dCwgcGxhdGZvcm1DQUxheWVyLCBy
ZXBhaW50Q291bnQsIG51bGxwdHIpOworICAgICAgICBkcmF3UmVwYWludEluZGljYXRvcihncmFw
aGljc0NvbnRleHQsIHBsYXRmb3JtQ0FMYXllciwgcmVwYWludENvdW50KTsKIH0KIAogQ0dSZWN0
IFBsYXRmb3JtQ0FMYXllcjo6ZnJhbWVGb3JMYXllcihjb25zdCBQbGF0Zm9ybUxheWVyKiB0aWxl
TGF5ZXIpCkBAIC0xMjMyLDE1ICsxMjM2LDE1IEBAIFJlZjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRm
b3JtQ0FMYXllckNvY29hOjpjcmVhdGVDb21wYXRpYmxlTGF5ZXIoUGxhdGZvcm1DQUxheWVyCiAg
ICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjcmVhdGUobGF5ZXJUeXBlLCBjbGllbnQp
OwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllckNvY29hOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJh
d24oQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkKK3ZvaWQgUGxh
dGZvcm1DQUxheWVyQ29jb2E6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoRmxvYXRSZWN0KSkKIHsKICAgICBDR1NSZWdpb25P
YmogcmVnaW9uID0gKENHU1JlZ2lvbk9iailbbV9sYXllciByZWdpb25CZWluZ0RyYXduXTsKICAg
ICBpZiAoIXJlZ2lvbikgewotICAgICAgICBibG9jayhDR0NvbnRleHRHZXRDbGlwQm91bmRpbmdC
b3goY29udGV4dCkpOworICAgICAgICBibG9jayhjb250ZXh0LmNsaXBCb3VuZHMoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDR0FmZmluZVRyYW5zZm9ybSBpbnZlcnNlVHJhbnNm
b3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JbnZlcnQoQ0dDb250ZXh0R2V0Q1RNKGNvbnRleHQpKTsK
KyAgICBDR0FmZmluZVRyYW5zZm9ybSBpbnZlcnNlVHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFuc2Zv
cm1JbnZlcnQoY29udGV4dC5nZXRDVE0oKSk7CiAgICAgQ0dTUmVnaW9uRW51bWVyYXRvck9iaiBl
bnVtZXJhdG9yID0gQ0dTUmVnaW9uRW51bWVyYXRvcihyZWdpb24pOwogICAgIGNvbnN0IENHUmVj
dCogbmV4dFJlY3Q7CiAgICAgd2hpbGUgKChuZXh0UmVjdCA9IENHU05leHRSZWN0KGVudW1lcmF0
b3IpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCBkNmE3YzE2OGYwZTQ0MWZk
N2QyOTBmYzRmZTMxMzYwYzU4NWQ1Njg0Li5mMmZkZjUyZjM4MjBjYTJhOTYyOWUwZmIyNDA1Yzg4
OTkyMThmOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMTAxLDcgKzEwMSw3
IEBAIFBsYXRmb3JtQ0FMYXllciogUGxhdGZvcm1DQUxheWVyOjpwbGF0Zm9ybUNBTGF5ZXIodm9p
ZCogcGxhdGZvcm1MYXllcikKICAgICByZXR1cm4gbGF5ZXJJbnRlcm4gPyBsYXllckludGVybi0+
b3duZXIoKSA6IG51bGxwdHI7CiB9CiAKLVBsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RMaXN0
IFBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChDR0NvbnRleHRSZWYsIFBsYXRm
b3JtQ0FMYXllciopCitQbGF0Zm9ybUNBTGF5ZXI6OlJlcGFpbnRSZWN0TGlzdCBQbGF0Zm9ybUNB
TGF5ZXI6OmNvbGxlY3RSZWN0c1RvUGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgUGxhdGZvcm1DQUxh
eWVyKikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFjdHVhbGx5IGNvbGxlY3QgcmVjdHMg
dG8gdXNlIGluc3RlYWQgb2YgZGVmYXVsdGluZyB0byBXaW5kb3dzJwogICAgIC8vIG5vcm1hbCBk
cmF3aW5nIHBhdGguCkBAIC0xMDksOSArMTA5LDkgQEAgUGxhdGZvcm1DQUxheWVyOjpSZXBhaW50
UmVjdExpc3QgUGxhdGZvcm1DQUxheWVyOjpjb2xsZWN0UmVjdHNUb1BhaW50KENHQ29udGV4dFIK
ICAgICByZXR1cm4gZGlydHlSZWN0czsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdM
YXllckNvbnRlbnRzKENHQ29udGV4dFJlZiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXIqIHBsYXRmb3JtQ0FMYXllciwgUmVwYWludFJlY3RMaXN0JiwgR3JhcGhpY3NMYXllclBhaW50
QmVoYXZpb3IpCit2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FM
YXllciwgUmVwYWludFJlY3RMaXN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpCiB7Ci0g
ICAgaW50ZXJuKHBsYXRmb3JtQ0FMYXllciktPmRpc3BsYXlDYWxsYmFjayhwbGF0Zm9ybUNBTGF5
ZXItPnBsYXRmb3JtTGF5ZXIoKSwgY29udGV4dCk7CisgICAgaW50ZXJuKHBsYXRmb3JtQ0FMYXll
ciktPmRpc3BsYXlDYWxsYmFjayhwbGF0Zm9ybUNBTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKIENHUmVjdCBQbGF0Zm9ybUNBTGF5ZXI6OmZy
YW1lRm9yTGF5ZXIoY29uc3QgUGxhdGZvcm1MYXllciogdGlsZUxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bkludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKaW5kZXggYWUyYjA2YTRmNGM4Yzc0Mjg1Y2Jm
NWY5ZGJmODMyNDdhOWM3YWZkMi4uNWUwNGMyYjQyMzI4OTU4Y2ZiNDBhYWUzYjQ0MGI3OGRhNDFh
YzM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC0x
MjksNyArMTI5LDggQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZHJhd1JlcGFp
bnRDb3VudGVycyhDQUNGTGF5ZXJSZWYgY2FMYXllciwgQ0dDb24KICAgICBlbHNlCiAgICAgICAg
IGJhY2tncm91bmRDb2xvciA9IGNhY2hlZENHQ29sb3IoQ29sb3IoMjU1LCAwLCAwKSk7CiAKLSAg
ICBQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdSZXBhaW50SW5kaWNhdG9yKGNvbnRleHQsIG93bmVyKCks
IGRyYXdDb3VudCwgYmFja2dyb3VuZENvbG9yKTsKKyAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhp
Y3NDb250ZXh0KGNvbnRleHQpOworICAgIFBsYXRmb3JtQ0FMYXllcjo6ZHJhd1JlcGFpbnRJbmRp
Y2F0b3IoZ3JhcGhpY3NDb250ZXh0LCBvd25lcigpLCBkcmF3Q291bnQsIGJhY2tncm91bmRDb2xv
cik7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OmludGVybmFsU2V0TmVl
ZHNEaXNwbGF5KGNvbnN0IEZsb2F0UmVjdCogZGlydHlSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYkxheWVyLm1tCmluZGV4IDgwODgwNGIyZjg1ZmZh
ZWUyYjQwMTI3N2UyMzc5YjhjY2UyMzZiYzcuLjY1ZTg3ODIwNjNlYjkwNTQ5ZjgwY2FmYjViYjkx
MjMzYWI2MjNjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9XZWJMYXllci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvV2ViTGF5ZXIubW0KQEAgLTUxLDggKzUxLDkgQEAgLSAodm9pZClkcmF3SW5Db250ZXh0OihD
R0NvbnRleHRSZWYpY29udGV4dAogewogICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllciogbGF5
ZXIgPSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OnBsYXRmb3JtQ0FMYXllcigoX19icmlkZ2Ug
dm9pZCopc2VsZik7CiAgICAgaWYgKGxheWVyKSB7Ci0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllcjo6UmVwYWludFJlY3RMaXN0IHJlY3RzVG9QYWludCA9IFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllcjo6Y29sbGVjdFJlY3RzVG9QYWludChjb250ZXh0LCBsYXllcik7Ci0gICAgICAgIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29udGV4dCwgbGF5ZXIs
IHJlY3RzVG9QYWludCwgc2VsZi5pc1JlbmRlcmluZ0luQ29udGV4dCA/IFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJQYWludFNuYXBzaG90dGluZyA6IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludE5v
cm1hbCk7CisgICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQo
Y29udGV4dCk7CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6UmVwYWludFJlY3RM
aXN0IHJlY3RzVG9QYWludCA9IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6Y29sbGVjdFJlY3Rz
VG9QYWludChncmFwaGljc0NvbnRleHQsIGxheWVyKTsKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZv
cm1DQUxheWVyOjpkcmF3TGF5ZXJDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGxheWVyLCByZWN0
c1RvUGFpbnQsIHNlbGYuaXNSZW5kZXJpbmdJbkNvbnRleHQgPyBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUGFpbnRTbmFwc2hvdHRpbmcgOiBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnROb3JtYWwp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCBhOTllOWM1ZjNh
MzhjNmEyMDViN2JjZWI1MDhiMDFiY2U5MWY4N2IxLi4xOGI1YTk1YjlkZmE2NTMyYWNjMmU3MGRi
OWU2YWU5NGJkYmRmNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlJik7CiAKLSAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYs
IHZvaWQgKF4pKENHUmVjdCkpOworICAgIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIHZvaWQgKF4pKFdlYkNvcmU6OkZsb2F0UmVjdCkpOwog
CiAgICAgYm9vbCBoYXNGcm9udEJ1ZmZlcigpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCmluZGV4IGI1Y2FkZDFkZjZjYThlNDAzNGVhMjRkMDhjMzNmMDNmYzdhMWJi
OWIuLjYyZjMyYWRjN2QyNjUyN2U3NjQwNmNjOGY2NzhjZDkyNmMxNWYwM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTM1MywxMyArMzUzLDEzIEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBDCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVXZWJMYXllcjoKICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKLSAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxh
eWVyOjpkcmF3TGF5ZXJDb250ZW50cyhjZ0NvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0
cywgZmxhZ3MpOworICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdMYXllckNv
bnRlbnRzKGNvbnRleHQsIG1fbGF5ZXIsIG1fcGFpbnRpbmdSZWN0cywgZmxhZ3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlRGFy
a1N5c3RlbUJhY2tkcm9wTGF5ZXI6CiAgICAgY2FzZSBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ryb3BMYXllcjoKICAgICAgICAgLy8gRklYTUU6IFRo
ZXNlIGhhdmUgYSBtb3JlIGNvbXBsaWNhdGVkIGxheWVyIGhpZXJhcmNoeS4gV2UgbmVlZCB0byBw
YWludCBpbnRvCiAgICAgICAgIC8vIGEgY2hpbGQgbGF5ZXIgaW4gb3JkZXIgdG8gc2VlIHRoZSBy
ZW5kZXJlZCByZXN1bHRzLgotICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OmRyYXdM
YXllckNvbnRlbnRzKGNnQ29udGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBmbGFncyk7
CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6ZHJhd0xheWVyQ29udGVudHMoY29u
dGV4dCwgbV9sYXllciwgbV9wYWludGluZ1JlY3RzLCBmbGFncyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoKICAgICBj
YXNlIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBA
IC0zODIsOSArMzgyLDkgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29u
dGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEMKICAgICBtX2Zyb250Q29u
dGV4dFBlbmRpbmdGbHVzaCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiB9CiAKLXZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRl
eHRSZWYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKQordm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgdm9pZCAoXmJsb2NrKShXZWJDb3JlOjpGbG9hdFJlY3QpKQogewotICAg
IENHQWZmaW5lVHJhbnNmb3JtIGludmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUlu
dmVydChDR0NvbnRleHRHZXRDVE0oY29udGV4dCkpOworICAgIENHQWZmaW5lVHJhbnNmb3JtIGlu
dmVyc2VUcmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUludmVydChjb250ZXh0LmdldENUTSgp
KTsKIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gdW4tYXBwbHkgdGhlIGZsaXBwaW5nIG9yIGNv
bnRlbnRzU2NhbGUsCiAgICAgLy8gYmVjYXVzZSB0aGV5J3JlIG5vdCBhcHBsaWVkIHRvIHJlcGFp
bnQgcmVjdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwCmluZGV4IDQ2ZThhYTA5OTg2NDVhOGNlNWQyZDdiOTU3Zjk5YWZkYzM4ZjQ2ODEuLjJjNGM2
NTNhZmU1NzI0YzNkM2E3YWI0NDAxMjNhMWQxOGM0NGIxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBAIC04OTEsNyArODkxLDcgQEAgUmVm
PFBsYXRmb3JtQ0FMYXllcj4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGVDb21wYXRpYmxl
TGF5ZXIoUGxhdGZvcm1DQUxheWUKICAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpj
cmVhdGUobGF5ZXJUeXBlLCBjbGllbnQsICptX2NvbnRleHQpOwogfQogCi12b2lkIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250
ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCit2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgdm9pZCAoXmJsb2NrKShXZWJDb3JlOjpGbG9hdFJlY3QpKQogewogICAgIG1fcHJvcGVydGll
cy5iYWNraW5nU3RvcmUtPmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihjb250ZXh0LCBibG9jayk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXgg
YzMxOThhMGJhNzg3MGYyOGZhMmUwOTg1YTE5ZjU2MDQ2MzQ0YzIyMC4uMDgzMTk1NTM1ZmFlZmQx
OGQ4OTk5ODBiNTZiOGNlM2E5YzRjOGZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKIAogICAgIFJl
ZjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZUNvbXBhdGlibGVMYXllcihXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KikgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihDR0NvbnRl
eHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbnVtZXJh
dGVSZWN0c0JlaW5nRHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwgdm9pZCAoXmJsb2Nr
KShXZWJDb3JlOjpGbG9hdFJlY3QpKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdWludDMyX3Qg
aG9zdGluZ0NvbnRleHRJRCgpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>