<?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>141974</bug_id>
          
          <creation_ts>2015-02-24 10:01:55 -0800</creation_ts>
          <short_desc>Use nullptr in more places in FrameView, RenderView, RenderObject</short_desc>
          <delta_ts>2015-02-24 10:51:20 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1071698</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-02-24 10:01:55 -0800</bug_when>
    <thetext>Use nullptr in more places in FrameView, RenderView, RenderObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071699</commentid>
    <comment_count>1</comment_count>
      <attachid>247239</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-02-24 10:03:43 -0800</bug_when>
    <thetext>Created attachment 247239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071709</commentid>
    <comment_count>2</comment_count>
      <attachid>247242</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-02-24 10:28:10 -0800</bug_when>
    <thetext>Created attachment 247242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071712</commentid>
    <comment_count>3</comment_count>
      <attachid>247244</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-02-24 10:34:52 -0800</bug_when>
    <thetext>Created attachment 247244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071719</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-02-24 10:51:20 -0800</bug_when>
    <thetext>https://trac.webkit.org/r180574</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247239</attachid>
            <date>2015-02-24 10:03:43 -0800</date>
            <delta_ts>2015-02-24 10:28:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141974-20150224100330.patch</filename>
            <type>text/plain</type>
            <size>40435</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThjYjljY2JjYTM5YTE2
NWUzYWU2ZGVkMjQ2NTBmM2EzZGRhNzUxZS4uMzJkNzRhZjQ3Njg4ZWZiNWYwZThmMTA1MjE0NGU5
ZmEzMzYzMzlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE1LTAyLTI0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBudWxscHRy
IGluIG1vcmUgcGxhY2VzIGluIEZyYW1lVmlldywgUmVuZGVyVmlldywgUmVuZGVyT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5NzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAwIC0+IG51bGxw
dHIgaW4gRnJhbWVWaWV3LmgvY3BwLCBSZW5kZXJWaWV3LmgvY3BwLCBSZW5kZXJPYmplY3QuaC9j
cHAuCisgICAgICAgIAorICAgICAgICBSZW5hbWUgRnJhbWVWaWV3OjptX2RlZmVyU2V0TmVlZHNM
YXlvdXRzIHRvIEZyYW1lVmlldzo6bV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQKKyAgICAgICAg
dG8gbWFrZSBpdCBtb3JlIGNsZWFyIHRoYXQgaXQncyBhIGNvdW50LgorCisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6bGF5ZXJGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6bGF5ZXJGb3JTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp0aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxM
YXllcklEKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5ZXJGb3JPdmVyaGFuZ0Fy
ZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0V2FudHNMYXllckZvclRvcE92
ZXJIYW5nQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFdhbnRzTGF5ZXJG
b3JCb3R0b21PdmVySGFuZ0FyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpoYXND
b21wb3NpdGVkQ29udGVudEluY2x1ZGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6bGF5b3V0Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZv
cmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9zdFdpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6bmVlZHNMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzZXROZWVkc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFy
ZW50RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250cm9s
VGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RQYWdlSGVpZ2h0RGVw
cmVjYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmF4T2JqZWN0Q2FjaGUpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om5leHRJblByZU9yZGVyQWZ0ZXJDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnByZXZpb3VzSW5QcmVPcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0TGVhZkNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bGFzdExlYWZDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmZpcnN0TGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6Y29udGFpbmVyRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnNob3dSZW5kZXJTdWJUcmVlQW5kTWFyayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmxvY2FsVG9BYnNvbHV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp2aXJ0dWFsQ29udGludWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6Om5vblBzZXVkb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojps
b2NhbFRvQWJzb2x1dGVRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29t
cHV0ZUFic29sdXRlUmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aW1hZ2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkRm9jdXNSaW5nUmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZU91dGxpbmVCb3Vu
ZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bWFwTG9jYWxU
b0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlckFmdGVyUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cm9vdEJhY2tncm91bmRJc0VudGlyZWx5
Rml4ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisKIDIwMTUtMDItMjQg
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtTdHJlYW1z
IEFQSV0gUmVhZGluZyBSZWFkYWJsZVN0cmVhbSByZWFkeSBhbmQgY2xvc2VkIGF0dHJpYnV0ZXMg
c2hvdWxkIG5vdCBhbHdheXMgY3JlYXRlIGEgbmV3IHByb21pc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCAxMDg2NmFjZDIxNGI5NTU5NTdhYjQyYjRhM2I0MTFlN2MwYzBjNmU4Li43
OWNjMmVjNDU0ZmUxMjAzNWU2NTQ4OTdkNjRjYTJhZjEzMGQ0NzQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJh
bWUmIGZyYW1lKQogICAgIDogbV9mcmFtZSgmZnJhbWUpCiAgICAgLCBtX2NhbkhhdmVTY3JvbGxi
YXJzKHRydWUpCiAgICAgLCBtX2xheW91dFRpbWVyKCp0aGlzLCAmRnJhbWVWaWV3OjpsYXlvdXRU
aW1lckZpcmVkKQotICAgICwgbV9sYXlvdXRSb290KDApCisgICAgLCBtX2xheW91dFJvb3QobnVs
bHB0cikKICAgICAsIG1fbGF5b3V0UGhhc2UoT3V0c2lkZUxheW91dCkKICAgICAsIG1faW5TeW5j
aHJvbm91c1Bvc3RMYXlvdXQoZmFsc2UpCiAgICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyKCp0
aGlzLCAmRnJhbWVWaWV3Ojpwb3N0TGF5b3V0VGltZXJGaXJlZCkKQEAgLTE3Myw3ICsxNzMsNyBA
QCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAgLCBtX2Jhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9tZWRpYVR5cGUoInNjcmVlbiIpCiAgICAg
LCBtX292ZXJmbG93U3RhdHVzRGlydHkodHJ1ZSkKLSAgICAsIG1fdmlld3BvcnRSZW5kZXJlcigw
KQorICAgICwgbV92aWV3cG9ydFJlbmRlcmVyKG51bGxwdHIpCiAgICAgLCBtX3dhc1Njcm9sbGVk
QnlVc2VyKGZhbHNlKQogICAgICwgbV9pblByb2dyYW1tYXRpY1Njcm9sbChmYWxzZSkKICAgICAs
IG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQodHJ1ZSkKQEAgLTE4MSw3ICsxODEsNyBA
QCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAgLCBtX2lzVHJhY2tpbmdS
ZXBhaW50cyhmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4odHJ1ZSkK
ICAgICAsIG1fZXhwb3NlZFJlY3QoRmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSkKLSAgICAsIG1f
ZGVmZXJTZXROZWVkc0xheW91dHMoMCkKKyAgICAsIG1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KDApCiAgICAgLCBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQoZmFsc2UpCiAgICAgLCBtX3Nw
ZWN1bGF0aXZlVGlsaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc3BlY3VsYXRpdmVUaWxpbmdF
bmFibGVUaW1lcigqdGhpcywgJkZyYW1lVmlldzo6c3BlY3VsYXRpdmVUaWxpbmdFbmFibGVUaW1l
ckZpcmVkKQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAg
bV9pc092ZXJsYXBwZWQgPSBmYWxzZTsKICAgICBtX2NvbnRlbnRJc09wYXF1ZSA9IGZhbHNlOwog
ICAgIG1fbGF5b3V0VGltZXIuc3RvcCgpOwotICAgIG1fbGF5b3V0Um9vdCA9IDA7CisgICAgbV9s
YXlvdXRSb290ID0gbnVsbHB0cjsKICAgICBtX2RlbGF5ZWRMYXlvdXQgPSBmYWxzZTsKICAgICBt
X25lZWRzRnVsbFJlcGFpbnQgPSB0cnVlOwogICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQg
PSB0cnVlOwpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRDb250ZW50c1Np
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoc2l6ZSA9PSBjb250ZW50c1NpemUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kZWZlclNldE5lZWRzTGF5b3V0cysrOworICAgIG1f
ZGVmZXJTZXROZWVkc0xheW91dENvdW50Kys7CiAKICAgICBTY3JvbGxWaWV3OjpzZXRDb250ZW50
c1NpemUoc2l6ZSk7CiAgICAgU2Nyb2xsVmlldzo6Y29udGVudHNSZXNpemVkKCk7CkBAIC01Nzks
MTAgKzU3OSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgZnJhbWUo
KS5tYWluRnJhbWUoKS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEb2N1bWVudFNp
emUoKTsKIAotICAgIEFTU0VSVChtX2RlZmVyU2V0TmVlZHNMYXlvdXRzKTsKLSAgICBtX2RlZmVy
U2V0TmVlZHNMYXlvdXRzLS07CisgICAgQVNTRVJUKG1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KTsKKyAgICBtX2RlZmVyU2V0TmVlZHNMYXlvdXRDb3VudC0tOwogICAgIAotICAgIGlmICghbV9k
ZWZlclNldE5lZWRzTGF5b3V0cykKKyAgICBpZiAoIW1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KQogICAgICAgICBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQgPSBmYWxzZTsgLy8gRklYTUU6
IEZpbmQgYSB3YXkgdG8gbWFrZSB0aGUgZGVmZXJyZWQgbGF5b3V0IGFjdHVhbGx5IGhhcHBlbi4K
IH0KIApAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjphcHBseVBhZ2luYXRpb25U
b1ZpZXdwb3J0KCkKIAogdm9pZCBGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9y
TGF5b3V0KFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Nyb2xs
YmFyTW9kZXNDYWxjdWxhdGlvblN0cmF0ZWd5IHN0cmF0ZWd5KQogewotICAgIG1fdmlld3BvcnRS
ZW5kZXJlciA9IDA7CisgICAgbV92aWV3cG9ydFJlbmRlcmVyID0gbnVsbHB0cjsKIAogICAgIGNv
bnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBmcmFtZSgpLm93bmVyRWxlbWVudCgp
OwogICAgIGlmIChvd25lciAmJiAob3duZXItPnNjcm9sbGluZ01vZGUoKSA9PSBTY3JvbGxiYXJB
bHdheXNPZmYpKSB7CkBAIC03ODQsNyArNzg0LDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3
OjpsYXllckZvclNjcm9sbGluZygpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+
Y29tcG9zaXRvcigpLnNjcm9sbExheWVyKCk7CiB9CiAKQEAgLTc5Miw3ICs3OTIsNyBAQCBHcmFw
aGljc0xheWVyKiBGcmFtZVZpZXc6OmxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0
CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAg
ICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmxheWVyRm9ySG9yaXpv
bnRhbFNjcm9sbGJhcigpOwogfQogCkBAIC04MDAsNyArODAwLDcgQEAgR3JhcGhpY3NMYXllciog
RnJhbWVWaWV3OjpsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVy
VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
OwogfQogCkBAIC04MDgsNyArODA4LDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3OjpsYXll
ckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpLmxheWVyRm9yU2Nyb2xsQ29ybmVyKCk7CiB9CiAKQEAgLTgxNiwxMSArODE2LDEx
IEBAIFRpbGVkQmFja2luZyogRnJhbWVWaWV3Ojp0aWxlZEJhY2tpbmcoKSBjb25zdAogewogICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFy
ZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSByZW5kZXJWaWV3LT5sYXllcigpLT5i
YWNraW5nKCk7CiAgICAgaWYgKCFiYWNraW5nKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT50
aWxlZEJhY2tpbmcoKTsKIH0KQEAgLTgyOSwxMSArODI5LDExIEBAIHVpbnQ2NF90IEZyYW1lVmll
dzo6c2Nyb2xsTGF5ZXJJRCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRlckxheWVyQmFja2luZyog
YmFja2luZyA9IHJlbmRlclZpZXctPmxheWVyKCktPmJhY2tpbmcoKTsKICAgICBpZiAoIWJhY2tp
bmcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJl
dHVybiBiYWNraW5nLT5zY3JvbGxpbmdOb2RlSURGb3JSb2xlKEZyYW1lU2Nyb2xsaW5nTm9kZSk7
CiB9CkBAIC04NTIsNyArODUyLDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3OjpsYXllckZv
ck92ZXJoYW5nQXJlYXMoKSBjb25zdAogewogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0
aGlzLT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHJlbmRlclZpZXctPmNvbXBv
c2l0b3IoKS5sYXllckZvck92ZXJoYW5nQXJlYXMoKTsKIH0KIApAQCAtODYwLDcgKzg2MCw3IEBA
IEdyYXBoaWNzTGF5ZXIqIEZyYW1lVmlldzo6c2V0V2FudHNMYXllckZvclRvcE92ZXJIYW5nQXJl
YShib29sIHdhbnRzTGF5ZXIpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiByZW5kZXJWaWV3LT5j
b21wb3NpdG9yKCkudXBkYXRlTGF5ZXJGb3JUb3BPdmVyaGFuZ0FyZWEod2FudHNMYXllcik7CiB9
CkBAIC04NjksNyArODY5LDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3OjpzZXRXYW50c0xh
eWVyRm9yQm90dG9tT3ZlckhhbmdBcmVhKGJvb2wgd2FudHNMYXllcikgY28KIHsKICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVy
VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVMYXllckZvckJvdHRvbU92ZXJo
YW5nQXJlYSh3YW50c0xheWVyKTsKIH0KQEAgLTEwMTYsNyArMTAxNiw3IEBAIGJvb2wgRnJhbWVW
aWV3OjpoYXNDb21wb3NpdGVkQ29udGVudEluY2x1ZGluZ0Rlc2NlbmRhbnRzKCkgY29uc3QKIHsK
ICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUuZ2V0KCkpKSB7CiAgICAgICAgIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcgPSBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCk7Ci0gICAgICAgIGlm
IChSZW5kZXJMYXllckNvbXBvc2l0b3IqIGNvbXBvc2l0b3IgPSByZW5kZXJWaWV3ID8gJnJlbmRl
clZpZXctPmNvbXBvc2l0b3IoKSA6IDApIHsKKyAgICAgICAgaWYgKFJlbmRlckxheWVyQ29tcG9z
aXRvciogY29tcG9zaXRvciA9IHJlbmRlclZpZXcgPyAmcmVuZGVyVmlldy0+Y29tcG9zaXRvcigp
IDogbnVsbHB0cikgewogICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3ItPmluQ29tcG9zaXRpbmdN
b2RlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTEwODQsNyArMTA4NCw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKIAogUmVu
ZGVyT2JqZWN0KiBGcmFtZVZpZXc6OmxheW91dFJvb3QoYm9vbCBvbmx5RHVyaW5nTGF5b3V0KSBj
b25zdAogewotICAgIHJldHVybiBvbmx5RHVyaW5nTGF5b3V0ICYmIGxheW91dFBlbmRpbmcoKSA/
IDAgOiBtX2xheW91dFJvb3Q7CisgICAgcmV0dXJuIG9ubHlEdXJpbmdMYXlvdXQgJiYgbGF5b3V0
UGVuZGluZygpID8gbnVsbHB0ciA6IG1fbGF5b3V0Um9vdDsKIH0KIAogaW5saW5lIHZvaWQgRnJh
bWVWaWV3Ojpmb3JjZUxheW91dFBhcmVudFZpZXdJZk5lZWRlZCgpCkBAIC0xMTAzLDcgKzExMDMs
NyBAQCBpbmxpbmUgdm9pZCBGcmFtZVZpZXc6OmZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVk
KCkKIAogICAgIC8vIElmIHRoZSBlbWJlZGRlZCBTVkcgZG9jdW1lbnQgYXBwZWFycyB0aGUgZmly
c3QgdGltZSwgdGhlIG93bmVyUmVuZGVyZXIgaGFzIGFscmVhZHkgZmluaXNoZWQKICAgICAvLyBs
YXlvdXQgd2l0aG91dCBrbm93aW5nIGFib3V0IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGVtYmVkZGVk
IFNWRyBkb2N1bWVudCwgYmVjYXVzZSBSZW5kZXJSZXBsYWNlZAotICAgIC8vIGVtYmVkZGVkQ29u
dGVudEJveCgpIHJldHVybnMgMCwgYXMgbG9uZyBhcyB0aGUgZW1iZWRkZWQgZG9jdW1lbnQgaXNu
J3QgbG9hZGVkIHlldC4gQmVmb3JlCisgICAgLy8gZW1iZWRkZWRDb250ZW50Qm94KCkgcmV0dXJu
cyBudWxscHRyLCBhcyBsb25nIGFzIHRoZSBlbWJlZGRlZCBkb2N1bWVudCBpc24ndCBsb2FkZWQg
eWV0LiBCZWZvcmUKICAgICAvLyBib3RoZXJpbmcgdG8gbGF5IG91dCB0aGUgU1ZHIGRvY3VtZW50
LCBtYXJrIHRoZSBvd25lclJlbmRlcmVyIG5lZWRpbmcgbGF5b3V0IGFuZCBhc2sgaXRzCiAgICAg
Ly8gRnJhbWVWaWV3IGZvciBhIGxheW91dC4gQWZ0ZXIgdGhhdCB0aGUgUmVuZGVyRW1iZWRkZWRP
YmplY3QgKG93bmVyUmVuZGVyZXIpIGNhcnJpZXMgdGhlCiAgICAgLy8gY29ycmVjdCBzaXplLCB3
aGljaCBSZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgvSGVpZ2h0IHJl
bHkgb24sIHdoZW4gbGF5aW5nCkBAIC0xMzA0LDcgKzEzMDQsNyBAQCB2b2lkIEZyYW1lVmlldzo6
bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICAgICAgZGlzYWJsZUxheW91dFN0YXRl
ID0gcm9vdC0+dmlldygpLnNob3VsZERpc2FibGVMYXlvdXRTdGF0ZUZvclN1YnRyZWUocm9vdCk7
CiAgICAgICAgICAgICByb290LT52aWV3KCkucHVzaExheW91dFN0YXRlKCpyb290KTsKICAgICAg
ICAgfQotICAgICAgICBMYXlvdXRTdGF0ZURpc2FibGVyIGxheW91dFN0YXRlRGlzYWJsZXIoZGlz
YWJsZUxheW91dFN0YXRlID8gJnJvb3QtPnZpZXcoKSA6IDApOworICAgICAgICBMYXlvdXRTdGF0
ZURpc2FibGVyIGxheW91dFN0YXRlRGlzYWJsZXIoZGlzYWJsZUxheW91dFN0YXRlID8gJnJvb3Qt
PnZpZXcoKSA6IG51bGxwdHIpOwogICAgICAgICBSZW5kZXJWaWV3OjpSZXBhaW50UmVnaW9uQWNj
dW11bGF0b3IgcmVwYWludFJlZ2lvbkFjY3VtdWxhdG9yKCZyb290LT52aWV3KCkpOwogCiAgICAg
ICAgIEFTU0VSVChtX2xheW91dFBoYXNlID09IEluUHJlTGF5b3V0KTsKQEAgLTIyNDcsNyArMjI0
Nyw3IEBAIEhvc3RXaW5kb3cqIEZyYW1lVmlldzo6aG9zdFdpbmRvdygpIGNvbnN0CiB7CiAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuICZwYWdlLT5j
aHJvbWUoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBG
cmFtZVZpZXc6OmFkZFRyYWNrZWRSZXBhaW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHIpCkBAIC0y
NDYwLDcgKzI0NjAsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dCgpCiAKICAg
ICBpZiAobV9sYXlvdXRSb290KSB7CiAgICAgICAgIG1fbGF5b3V0Um9vdC0+bWFya0NvbnRhaW5p
bmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOwotICAgICAgICBtX2xheW91dFJvb3QgPSAwOworICAg
ICAgICBtX2xheW91dFJvb3QgPSBudWxscHRyOwogICAgIH0KICAgICBpZiAoIW1fbGF5b3V0U2No
ZWR1bGluZ0VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI1NTEsNyArMjU1MSw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKFJlbmRlckVsZW1lbnQmIG5l
d1JlbGF5b3V0Um9vdCkKIAogICAgIC8vIEp1c3QgZG8gYSBmdWxsIHJlbGF5b3V0LgogICAgIG1f
bGF5b3V0Um9vdC0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOwotICAgIG1f
bGF5b3V0Um9vdCA9IDA7CisgICAgbV9sYXlvdXRSb290ID0gbnVsbHB0cjsKICAgICBuZXdSZWxh
eW91dFJvb3QubWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOwogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSgpKTsKIH0KQEAg
LTI1OTcsMTIgKzI1OTcsMTIgQEAgYm9vbCBGcmFtZVZpZXc6Om5lZWRzTGF5b3V0KCkgY29uc3QK
ICAgICByZXR1cm4gbGF5b3V0UGVuZGluZygpCiAgICAgICAgIHx8IChyZW5kZXJWaWV3ICYmIHJl
bmRlclZpZXctPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHx8IG1fbGF5b3V0Um9vdAotICAgICAg
ICB8fCAobV9kZWZlclNldE5lZWRzTGF5b3V0cyAmJiBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJy
ZWQpOworICAgICAgICB8fCAobV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQgJiYgbV9zZXROZWVk
c0xheW91dFdhc0RlZmVycmVkKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldE5lZWRzTGF5b3V0
KCkKIHsKLSAgICBpZiAobV9kZWZlclNldE5lZWRzTGF5b3V0cykgeworICAgIGlmIChtX2RlZmVy
U2V0TmVlZHNMYXlvdXRDb3VudCkgewogICAgICAgICBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJy
ZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzM5OSw3ICszMzk5LDcgQEAg
dm9pZCBGcmFtZVZpZXc6OnNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0
JiBzY3JvbGxlclRodW1iKQogU2Nyb2xsYWJsZUFyZWEqIEZyYW1lVmlldzo6ZW5jbG9zaW5nU2Ny
b2xsYWJsZUFyZWEoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBXYWxrIHVwIHRoZSBmcmFtZSB0
cmVlIGFuZCBsb29rIGZvciBhIHNjcm9sbGFibGUgcGFyZW50IGZyYW1lIG9yIFJlbmRlckxheWVy
LgotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBJbnRSZWN0IEZyYW1l
Vmlldzo6c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveCgpIGNvbnN0CkBAIC0zNjcxLDEyICszNjcx
LDEyIEBAIGJvb2wgRnJhbWVWaWV3OjpoYXNDdXN0b21TY3JvbGxiYXJzKCkgY29uc3QKIEZyYW1l
VmlldyogRnJhbWVWaWV3OjpwYXJlbnRGcmFtZVZpZXcoKSBjb25zdAogewogICAgIGlmICghcGFy
ZW50KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBmcmFtZSgpLnRyZWUoKS5wYXJlbnQoKSkKICAgICAg
ICAgcmV0dXJuIHBhcmVudEZyYW1lLT52aWV3KCk7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OmlzSW5DaGlsZEZyYW1lV2l0aEZyYW1l
RmxhdHRlbmluZygpIGNvbnN0CkBAIC0zNzQ3LDggKzM3NDcsOCBAQCB2b2lkIEZyYW1lVmlldzo6
cGFpbnRDb250cm9sVGludHMoKQogewogICAgIGlmIChuZWVkc0xheW91dCgpKQogICAgICAgICBs
YXlvdXQoKTsKLSAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY29uc3Qgbm9Db250ZXh0ID0g
MDsKLSAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChub0NvbnRleHQpOworCisgICAgR3JhcGhp
Y3NDb250ZXh0IGNvbnRleHQobnVsbHB0cik7CiAgICAgY29udGV4dC5zZXRVcGRhdGluZ0NvbnRy
b2xUaW50cyh0cnVlKTsKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgewogICAgICAgICAvLyBG
SVhNRTogY29uc3VsdCBwYWludHNFbnRpcmVDb250ZW50cygpLgpAQCAtNDE0MSw3ICs0MTQxLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkKGZsb2F0ICpuZXdC
b3R0b20sIGZsb2F0IG9sZFRvcCwgZmxvYXQKIAogICAgIH0KICAgICAvLyBVc2UgYSBjb250ZXh0
IHdpdGggcGFpbnRpbmcgZGlzYWJsZWQuCi0gICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoKFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0KikwKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChu
dWxscHRyKTsKICAgICByZW5kZXJWaWV3LT5zZXRUcnVuY2F0ZWRBdChzdGF0aWNfY2FzdDxpbnQ+
KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVjdCBkaXJ0eVJlY3QoMCwgc3RhdGljX2Nh
c3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZpZXctPmxheW91dE92ZXJmbG93UmVjdCgp
Lm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihvbGRCb3R0b20gLSBvbGRUb3ApKSk7CiAg
ICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5UmVjdCk7CkBAIC00NDU2LDcgKzQ0NTYs
NyBAQCBBWE9iamVjdENhY2hlKiBGcmFtZVZpZXc6OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogewog
ICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmcmFtZSgpLmRvY3Vt
ZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOwotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogICAgIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IDBhMjljMzhhMmRhMDgxNjIwMzgwZjdjNWM1MjBkNTI4MGU0ODk0NzcuLjY1Yzdi
YmRhMjU5YzY2NmQ4Y2NiYzRjMjcwMzI3ZGNmNGE5NTdhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtNzEwLDcgKzcxMCw3IEBAIHByaXZhdGU6CiAKICAgICBGbG9hdFJlY3QgbV9leHBv
c2VkUmVjdDsKIAotICAgIHVuc2lnbmVkIG1fZGVmZXJTZXROZWVkc0xheW91dHM7CisgICAgdW5z
aWduZWQgbV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQ7CiAgICAgYm9vbCBtX3NldE5lZWRzTGF5
b3V0V2FzRGVmZXJyZWQ7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9EcmF3OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZWJjMDZiZDQ3ZjQ5YTI0
ZjU2MGExYTA1NmI0MjAyMTIzZjgwZjg2Li5lNTA5NWVhZWE3MzdlZmU5Y2U2MzhmOGVkM2MzOTFh
MjIyMzg0NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMTA3LDkgKzEwNyw5IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50
ZWRMZWFrQ291bnRlciwgcmVuZGVyT2JqZWN0Q291bnRlciwgKCJSZW5kCiBSZW5kZXJPYmplY3Q6
OlJlbmRlck9iamVjdChOb2RlJiBub2RlKQogICAgIDogQ2FjaGVkSW1hZ2VDbGllbnQoKQogICAg
ICwgbV9ub2RlKG5vZGUpCi0gICAgLCBtX3BhcmVudCgwKQotICAgICwgbV9wcmV2aW91cygwKQot
ICAgICwgbV9uZXh0KDApCisgICAgLCBtX3BhcmVudChudWxscHRyKQorICAgICwgbV9wcmV2aW91
cyhudWxscHRyKQorICAgICwgbV9uZXh0KG51bGxwdHIpCiAjaWZuZGVmIE5ERUJVRwogICAgICwg
bV9oYXNBWE9iamVjdChmYWxzZSkKICAgICAsIG1fc2V0TmVlZHNMYXlvdXRGb3JiaWRkZW4oZmFs
c2UpCkBAIC0yMjEsMTQgKzIyMSwxNCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6bmV4
dEluUHJlT3JkZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluKSBjb25zdAogUmVuZGVy
T2JqZWN0KiBSZW5kZXJPYmplY3Q6Om5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbihjb25zdCBS
ZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4pIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0gc3RheVdp
dGhpbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Y29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gdGhpczsKICAgICBSZW5kZXJPYmplY3QqIG5l
eHQ7CiAgICAgd2hpbGUgKCEobmV4dCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpKSB7CiAgICAg
ICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKTsKICAgICAgICAgaWYgKCFjdXJyZW50IHx8
IGN1cnJlbnQgPT0gc3RheVdpdGhpbikKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBuZXh0OwogfQpAQCAtMjQ3LDcg
KzI0Nyw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpwcmV2aW91c0luUHJlT3JkZXIo
KSBjb25zdAogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnByZXZpb3VzSW5QcmVPcmRlcihj
b25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4pIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMgPT0g
c3RheVdpdGhpbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgcmV0dXJuIHByZXZpb3VzSW5QcmVPcmRlcigpOwogfQpAQCAtMjY0LDcgKzI2NCw3IEBA
IFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpmaXJzdExlYWZDaGlsZCgpIGNvbnN0CiB7CiAg
ICAgUmVuZGVyT2JqZWN0KiByID0gZmlyc3RDaGlsZFNsb3coKTsKICAgICB3aGlsZSAocikgewot
ICAgICAgICBSZW5kZXJPYmplY3QqIG4gPSAwOworICAgICAgICBSZW5kZXJPYmplY3QqIG4gPSBu
dWxscHRyOwogICAgICAgICBuID0gci0+Zmlyc3RDaGlsZFNsb3coKTsKICAgICAgICAgaWYgKCFu
KQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzcsNyArMjc3LDcgQEAgUmVuZGVyT2JqZWN0KiBS
ZW5kZXJPYmplY3Q6Omxhc3RMZWFmQ2hpbGQoKSBjb25zdAogewogICAgIFJlbmRlck9iamVjdCog
ciA9IGxhc3RDaGlsZFNsb3coKTsKICAgICB3aGlsZSAocikgewotICAgICAgICBSZW5kZXJPYmpl
Y3QqIG4gPSAwOworICAgICAgICBSZW5kZXJPYmplY3QqIG4gPSBudWxscHRyOwogICAgICAgICBu
ID0gci0+bGFzdENoaWxkU2xvdygpOwogICAgICAgICBpZiAoIW4pCiAgICAgICAgICAgICBicmVh
azsKQEAgLTI5Niw3ICsyOTYsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6dHJhdmVy
c2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbikgY29uc3QKICAgICAgICAgcmV0
dXJuIGNoaWxkOwogICAgIH0KICAgICBpZiAodGhpcyA9PSBzdGF5V2l0aGluKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKG5leHRTaWJsaW5nKCkp
IHsKICAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IG5leHRTaWJsaW5nKCktPmlzRGVzY2Vu
ZGFudE9mKHN0YXlXaXRoaW4pKTsKICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKCk7CkBAIC0z
MDgsNyArMzA4LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnRyYXZlcnNlTmV4dChj
b25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4pIGNvbnN0CiAgICAgICAgIEFTU0VSVCghc3Rh
eVdpdGhpbiB8fCAhbi0+bmV4dFNpYmxpbmcoKSB8fCBuLT5uZXh0U2libGluZygpLT5pc0Rlc2Nl
bmRhbnRPZihzdGF5V2l0aGluKSk7CiAgICAgICAgIHJldHVybiBuLT5uZXh0U2libGluZygpOwog
ICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLy8gTm9uLXJl
Y3Vyc2l2ZSB2ZXJzaW9uIG9mIHRoZSBERlMgc2VhcmNoLgpAQCAtMzI5LDcgKzMyOSw3IEBAIFJl
bmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0
KiBzdGF5V2l0aGluLCBIZWlnaHRUCiAgICAgfQogCiAgICAgaWYgKHRoaXMgPT0gc3RheVdpdGhp
bikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8g
Tm93IHdlIHRyYXZlcnNlIG90aGVyIG5vZGVzIGlmIHRoZXkgZXhpc3QsIG90aGVyd2lzZQogICAg
IC8vIHdlIGdvIHRvIHRoZSBwYXJlbnQgbm9kZSBhbmQgdHJ5IGRvaW5nIHRoZSBzYW1lLgpAQCAt
MzQwLDcgKzM0MCw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQo
Y29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBIZWlnaHRUCiAgICAgICAgICAgICBjdXJy
ZW50RGVwdGgtLTsKICAgICAgICAgfQogICAgICAgICBpZiAoIW4pCi0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBmb3IgKFJlbmRlck9i
amVjdCogc2libGluZyA9IG4tPm5leHRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJs
aW5nLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBvdmVyZmxvd1R5cGUgPSBpbmNsdXNp
b25GdW5jdGlvbihzaWJsaW5nKTsKICAgICAgICAgICAgIGlmIChvdmVyZmxvd1R5cGUgIT0gRml4
ZWRIZWlnaHQpIHsKQEAgLTM1NCw5ICszNTQsOSBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVj
dDo6dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbiwgSGVpZ2h0VAog
ICAgICAgICAgICAgbiA9IG4tPnBhcmVudCgpOwogICAgICAgICAgICAgY3VycmVudERlcHRoLS07
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVy
T2JqZWN0KiBzdGF5V2l0aGluLCBUcmF2ZXJzZU5leHRJbmNsdXNpb25GdW5jdGlvbiBpbmNsdXNp
b25GdW5jdGlvbikgY29uc3QKQEAgLTM2OSw3ICszNjksNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRl
ck9iamVjdDo6dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbiwgVHJh
dmVycwogICAgIH0KIAogICAgIGlmICh0aGlzID09IHN0YXlXaXRoaW4pCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBz
aWJsaW5nID0gbmV4dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRT
aWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGluY2x1c2lvbkZ1bmN0aW9uKHNpYmxpbmcpKSB7CkBA
IC0zOTIsMTAgKzM5MiwxMCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6dHJhdmVyc2VO
ZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbiwgVHJhdmVycwogICAgICAgICAgICAg
aWYgKCghc3RheVdpdGhpbiB8fCBuLT5wYXJlbnQoKSAhPSBzdGF5V2l0aGluKSkKICAgICAgICAg
ICAgICAgICBuID0gbi0+cGFyZW50KCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRpYyBS
ZW5kZXJPYmplY3Q6OkJsb2NrQ29udGVudEhlaWdodFR5cGUgaW5jbHVkZU5vbkZpeGVkSGVpZ2h0
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC01MjMsNyArNTIzLDcgQEAgc3RhdGlj
IGJvb2wgaGFzRml4ZWRQb3NJbk5hbWVkRmxvd0NvbnRhaW5pbmdCbG9jayhjb25zdCBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQogCiBSZW5kZXJCbG9jayogUmVuZGVyT2JqZWN0OjpmaXJzdExpbmVC
bG9jaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBvYmplY3RJc1JlbGF5b3V0Qm91bmRhcnkoY29uc3QgUmVuZGVy
RWxlbWVudCogb2JqZWN0KQpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3QKICAgICAgICAg
ICAgIHJldHVybiByZXBhaW50Q29udGFpbmVyOwogICAgICAgICAvLyBJZiB3ZSBoYXZlIGFscmVh
ZHkgZm91bmQgYSByZXBhaW50IGNvbnRhaW5lciB0aGVuIHdlIHdpbGwgcmVwYWludCBpbnRvIHRo
YXQgY29udGFpbmVyIG9ubHkgaWYgaXQgaXMgcGFydCBvZiB0aGUgc2FtZQogICAgICAgICAvLyBm
bG93IHRocmVhZC4gT3RoZXJ3aXNlIHdlIHdpbGwgbmVlZCB0byBjYXRjaCB0aGUgcmVwYWludCBj
YWxsIGFuZCBzZW5kIGl0IHRvIHRoZSBmbG93IHRocmVhZC4KLSAgICAgICAgUmVuZGVyRmxvd1Ro
cmVhZCogcmVwYWludENvbnRhaW5lckZsb3dUaHJlYWQgPSByZXBhaW50Q29udGFpbmVyID8gcmVw
YWludENvbnRhaW5lci0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIDogMDsKKyAgICAgICAg
UmVuZGVyRmxvd1RocmVhZCogcmVwYWludENvbnRhaW5lckZsb3dUaHJlYWQgPSByZXBhaW50Q29u
dGFpbmVyID8gcmVwYWludENvbnRhaW5lci0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIDog
bnVsbHB0cjsKICAgICAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyRmxvd1RocmVhZCB8fCByZXBh
aW50Q29udGFpbmVyRmxvd1RocmVhZCAhPSBwYXJlbnRSZW5kZXJGbG93VGhyZWFkKQogICAgICAg
ICAgICAgcmVwYWludENvbnRhaW5lciA9IHBhcmVudFJlbmRlckZsb3dUaHJlYWQ7CiAgICAgfQpA
QCAtMTU0OCw3ICsxNTQ4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZW5kZXJTdWJUcmVl
QW5kTWFyayhjb25zdCBSZW5kZXJPYmplY3QqIG1hcmtlZE9iamVjdCwgaW4KICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3VuZGVmaW5lZC1ib29sLWNvbnZlcnNpb24iCiAjZW5kaWYK
LSAgICAvLyBBcyB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBkZWJ1
Z2dpbmcsIHRoZSB8dGhpc3wgcG9pbnRlciBtYXkgYmUgMC4KKyAgICAvLyBBcyB0aGlzIGZ1bmN0
aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBkZWJ1Z2dpbmcsIHRoZSB8dGhpc3wgcG9p
bnRlciBtYXkgYmUgbnVsbHB0ci4KICAgICBpZiAoIXRoaXMpCiAgICAgICAgIHJldHVybjsKICNp
ZiBDT01QSUxFUihDTEFORykKQEAgLTE1ODIsNyArMTU4Miw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpzZWxlY3Rpb25TdGFydEVuZChpbnQmIHNwb3MsIGludCYgZXBvcykgY29uc3QKIEZsb2F0UG9p
bnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJzb2x1dGUoY29uc3QgRmxvYXRQb2ludCYgbG9jYWxQ
b2ludCwgTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlKSBjb25zdAogewogICAgIFRyYW5zZm9ybVN0
YXRlIHRyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlOjpBcHBseVRyYW5zZm9ybURpcmVjdGlv
biwgbG9jYWxQb2ludCk7Ci0gICAgbWFwTG9jYWxUb0NvbnRhaW5lcigwLCB0cmFuc2Zvcm1TdGF0
ZSwgbW9kZSB8IEFwcGx5Q29udGFpbmVyRmxpcCk7CisgICAgbWFwTG9jYWxUb0NvbnRhaW5lcihu
dWxscHRyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSB8IEFwcGx5Q29udGFpbmVyRmxpcCk7CiAgICAg
dHJhbnNmb3JtU3RhdGUuZmxhdHRlbigpOwogICAgIAogICAgIHJldHVybiB0cmFuc2Zvcm1TdGF0
ZS5sYXN0UGxhbmFyUG9pbnQoKTsKQEAgLTE4MTYsNyArMTgxNiw3IEBAIFJlbmRlckVsZW1lbnQq
IFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250CiAgICAgICAgIC8vIGNhbid0IGdldCBiYWNrIHRvIHRoZSBjYW52YXMuICBJbnN0
ZWFkIHdlIGp1c3Qgd2FsayBhcyBoaWdoIHVwCiAgICAgICAgIC8vIGFzIHdlIGNhbi4gIElmIHdl
J3JlIGluIHRoZSB0cmVlLCB3ZSdsbCBnZXQgdGhlIHJvb3QuICBJZiB3ZQogICAgICAgICAvLyBh
cmVuJ3Qgd2UnbGwgZ2V0IHRoZSByb290IG9mIG91ciBsaXR0bGUgc3VidHJlZSAobW9zdCBsaWtl
bHkKLSAgICAgICAgLy8gd2UnbGwganVzdCByZXR1cm4gMCkuCisgICAgICAgIC8vIHdlJ2xsIGp1
c3QgcmV0dXJuIG51bGxwdHIpLgogICAgICAgICAvLyBGSVhNRTogVGhlIGRlZmluaXRpb24gb2Yg
dmlldygpIGhhcyBjaGFuZ2VkIHRvIG5vdCBjcmF3bCB1cCB0aGUgcmVuZGVyIHRyZWUuICBJdCBt
aWdodAogICAgICAgICAvLyBiZSBzYWZlIG5vdyB0byB1c2UgaXQuCiAgICAgICAgIC8vIEZJWE1F
OiBzaGFyZSBjb2RlIHdpdGggY29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlvbigpLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGFjZmExNGU3ZTkyZDIxODBl
MzRlMGFmZTkzODM0MjU2ZGQ3NGFkYmQuLjBkODVhMTc3ZjVhNWIwNzA1ZjA0ZGY0ODA0YWRjYmU1
MTFiYTI2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQ5
Niw3ICs0OTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VsZW1lbnRDb250aW51YXRpb24oKSBj
b25zdCB7IHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5yZW5kZXJlcigpICE9IHRoaXM7IH0KICAg
ICBib29sIGlzSW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzRWxl
bWVudENvbnRpbnVhdGlvbigpICYmIGlzSW5saW5lKCk7IH0KICAgICBib29sIGlzQmxvY2tFbGVt
ZW50Q29udGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNFbGVtZW50Q29udGludWF0aW9uKCkg
JiYgIWlzSW5saW5lKCk7IH0KLSAgICB2aXJ0dWFsIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2aXJ0
dWFsQ29udGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIHZpcnR1YWxDb250aW51YXRpb24oKSBjb25zdCB7IHJldHVybiBudWxs
cHRyOyB9CiAKICAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxk
cy5mbG9hdGluZygpOyB9CiAKQEAgLTU2NCwxMCArNTY0LDEwIEBAIHB1YmxpYzoKICAgICBSZW5k
ZXJWaWV3JiB2aWV3KCkgY29uc3QgeyByZXR1cm4gKmRvY3VtZW50KCkucmVuZGVyVmlldygpOyB9
OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgcmVuZGVyZXIgaXMgcm9vdGVkLCBhbmQg
b3B0aW9uYWxseSByZXR1cm5zIHRoZSBob3N0aW5nIHZpZXcgKHRoZSByb290IG9mIHRoZSBoaWVy
YXJjaHkpLgotICAgIGJvb2wgaXNSb290ZWQoUmVuZGVyVmlldyoqID0gMCkgY29uc3Q7CisgICAg
Ym9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSBudWxscHRyKSBjb25zdDsKIAotICAgIE5vZGUq
IG5vZGUoKSBjb25zdCB7IHJldHVybiBpc0Fub255bW91cygpID8gMCA6ICZtX25vZGU7IH0KLSAg
ICBOb2RlKiBub25Qc2V1ZG9Ob2RlKCkgY29uc3QgeyByZXR1cm4gaXNQc2V1ZG9FbGVtZW50KCkg
PyAwIDogbm9kZSgpOyB9CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzQW5vbnlt
b3VzKCkgPyBudWxscHRyIDogJm1fbm9kZTsgfQorICAgIE5vZGUqIG5vblBzZXVkb05vZGUoKSBj
b25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG51bGxwdHIgOiBub2RlKCk7IH0KIAog
ICAgIC8vIFJldHVybnMgdGhlIHN0eWxlZCBub2RlIHRoYXQgY2F1c2VkIHRoZSBnZW5lcmF0aW9u
IG9mIHRoaXMgcmVuZGVyZXIuCiAgICAgLy8gVGhpcyBpcyB0aGUgc2FtZSBhcyBub2RlKCkgZXhj
ZXB0IGZvciByZW5kZXJlcnMgb2YgOmJlZm9yZSBhbmQgOmFmdGVyCkBAIC01NzUsNyArNTc1LDcg
QEAgcHVibGljOgogICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gaXNQ
c2V1ZG9FbGVtZW50KCkgPyBnZW5lcmF0aW5nUHNldWRvSG9zdEVsZW1lbnQoKSA6IG5vZGUoKTsg
fQogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLmRvY3Vt
ZW50KCk7IH0KLSAgICBGcmFtZSYgZnJhbWUoKSBjb25zdDsgLy8gRGVmaW5lZCBpbiBSZW5kZXJW
aWV3LmgKKyAgICBGcmFtZSYgZnJhbWUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFzT3V0bGluZUFu
bm90YXRpb24oKSBjb25zdDsKICAgICBib29sIGhhc091dGxpbmUoKSBjb25zdCB7IHJldHVybiBz
dHlsZSgpLmhhc091dGxpbmUoKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpOyB9CkBAIC01ODMs
MTEgKzU4MywxMSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgb2JqZWN0IGNvbnRhaW5p
bmcgdGhpcyBvbmUuIENhbiBiZSBkaWZmZXJlbnQgZnJvbSBwYXJlbnQgZm9yIHBvc2l0aW9uZWQg
ZWxlbWVudHMuCiAgICAgLy8gSWYgcmVwYWludENvbnRhaW5lciBhbmQgcmVwYWludENvbnRhaW5l
clNraXBwZWQgYXJlIG5vdCBudWxsLCBvbiByZXR1cm4gKnJlcGFpbnRDb250YWluZXJTa2lwcGVk
CiAgICAgLy8gaXMgdHJ1ZSBpZiB0aGUgcmVuZGVyZXIgcmV0dXJuZWQgaXMgYW4gYW5jZXN0b3Ig
b2YgcmVwYWludENvbnRhaW5lci4KLSAgICBSZW5kZXJFbGVtZW50KiBjb250YWluZXIoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDAsIGJvb2wqIHJlcGFp
bnRDb250YWluZXJTa2lwcGVkID0gMCkgY29uc3Q7CisgICAgUmVuZGVyRWxlbWVudCogY29udGFp
bmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIgPSBudWxs
cHRyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCA9IG51bGxwdHIpIGNvbnN0OwogCiAg
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9mZnNldFBhcmVudCgpIGNvbnN0OwogCi0gICAgdm9p
ZCBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChib29sIHNjaGVkdWxlUmVsYXlvdXQgPSB0
cnVlLCBSZW5kZXJFbGVtZW50KiBuZXdSb290ID0gMCk7CisgICAgdm9pZCBtYXJrQ29udGFpbmlu
Z0Jsb2Nrc0ZvckxheW91dChib29sIHNjaGVkdWxlUmVsYXlvdXQgPSB0cnVlLCBSZW5kZXJFbGVt
ZW50KiBuZXdSb290ID0gbnVsbHB0cik7CiAgICAgdm9pZCBzZXROZWVkc0xheW91dChNYXJraW5n
QmVoYXZpb3IgPSBNYXJrQ29udGFpbmluZ0Jsb2NrQ2hhaW4pOwogICAgIHZvaWQgY2xlYXJOZWVk
c0xheW91dCgpOwogICAgIHZvaWQgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGJvb2ws
IE1hcmtpbmdCZWhhdmlvciA9IE1hcmtDb250YWluaW5nQmxvY2tDaGFpbik7CkBAIC02NTYsMjAg
KzY1NiwyMCBAQCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVRvTG9jYWwoY29uc3Qg
RmxvYXRQb2ludCYsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSAwKSBjb25zdDsKIAogICAgIC8vIENv
bnZlcnQgYSBsb2NhbCBxdWFkIHRvIGFic29sdXRlIGNvb3JkaW5hdGVzLCB0YWtpbmcgdHJhbnNm
b3JtcyBpbnRvIGFjY291bnQuCi0gICAgRmxvYXRRdWFkIGxvY2FsVG9BYnNvbHV0ZVF1YWQoY29u
c3QgRmxvYXRRdWFkJiBxdWFkLCBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUgPSAwLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0CisgICAgRmxvYXRRdWFkIGxvY2FsVG9BYnNvbHV0ZVF1YWQoY29u
c3QgRmxvYXRRdWFkJiBxdWFkLCBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUgPSAwLCBib29sKiB3
YXNGaXhlZCA9IG51bGxwdHIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbG9jYWxUb0Nv
bnRhaW5lclF1YWQocXVhZCwgMCwgbW9kZSwgd2FzRml4ZWQpOworICAgICAgICByZXR1cm4gbG9j
YWxUb0NvbnRhaW5lclF1YWQocXVhZCwgbnVsbHB0ciwgbW9kZSwgd2FzRml4ZWQpOwogICAgIH0K
ICAgICAvLyBDb252ZXJ0IGFuIGFic29sdXRlIHF1YWQgdG8gbG9jYWwgY29vcmRpbmF0ZXMuCiAg
ICAgRmxvYXRRdWFkIGFic29sdXRlVG9Mb2NhbFF1YWQoY29uc3QgRmxvYXRRdWFkJiwgTWFwQ29v
cmRpbmF0ZXNGbGFncyBtb2RlID0gMCkgY29uc3Q7CiAKICAgICAvLyBDb252ZXJ0IGEgbG9jYWwg
cXVhZCBpbnRvIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiBjb250YWluZXIsIHRha2luZyB0cmFu
c2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFF1YWQgbG9jYWxU
b0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lciwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IDAsIGJvb2wqIHdh
c0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2ludCBsb2NhbFRv
Q29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSAwLCBib29sKiB3
YXNGaXhlZCA9IDApIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UXVhZCBsb2NhbFRv
Q29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gMCwgYm9vbCogd2Fz
Rml4ZWQgPSBudWxscHRyKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGxv
Y2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IDAsIGJv
b2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIG9mZnNl
dCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRyYW5zZm9ybXMpLiBJ
biBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZzZXRzIGFwcGx5IGF0
IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQgYXBwbGllcyB0byB0
aGUgZ2l2ZW4gcG9pbnQuCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWlu
ZXIoUmVuZGVyRWxlbWVudCYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5k
c09uUG9pbnQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNv
bnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXRE
ZXBlbmRzT25Qb2ludCA9IG51bGxwdHIpIGNvbnN0OwogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0
IGZyb20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5v
bmUgb2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KICAgICBMYXlv
dXRTaXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJFbGVtZW50JikgY29uc3Q7
CiAKQEAgLTY4NSw3ICs2ODUsNyBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIGFic29sdXRlQm91
bmRpbmdCb3hSZWN0KGZhbHNlKTsgfQogCiAgICAgLy8gQnVpbGQgYW4gYXJyYXkgb2YgcXVhZHMg
aW4gYWJzb2x1dGUgY29vcmRzIGZvciBsaW5lIGJveGVzCi0gICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8gPSAwKSBjb25z
dCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIC8qd2FzRml4ZWQqLyA9IG51bGxwdHIpIGNvbnN0IHsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsKIApAQCAtNzA5
LDEyICs3MDksMTIgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4dERlY29yYXRpb25Db2xvcnNB
bmRTdHlsZXMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lQ29sb3IsIENvbG9yJiBv
dmVybGluZUNvbG9yLCBDb2xvciYgbGluZXRocm91Z2hDb2xvciwKICAgICAgICAgVGV4dERlY29y
YXRpb25TdHlsZSYgdW5kZXJsaW5lU3R5bGUsIFRleHREZWNvcmF0aW9uU3R5bGUmIG92ZXJsaW5l
U3R5bGUsIFRleHREZWNvcmF0aW9uU3R5bGUmIGxpbmV0aHJvdWdoU3R5bGUsIGJvb2wgZmlyc3Rs
aW5lU3R5bGUgPSBmYWxzZSk7CiAKLSAgICAvLyBSZXR1cm4gdGhlIFJlbmRlckxheWVyTW9kZWxP
YmplY3QgaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgcGFp
bnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKKyAgICAvLyBSZXR1cm4gdGhlIFJlbmRlckxheWVyTW9k
ZWxPYmplY3QgaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Ig
cGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIG51bGxwdHIKICAgICAvLyBpZiBwYWludGluZyBpcyBy
b290LXJlbGF0aXZlLiBUaGlzIGlzIHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQgYmUgcGFzc2Vk
IHRvIHRoZSAnZm9yUmVwYWludCcKICAgICAvLyBtZXRob2RzLgogICAgIFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdDsKICAgICAvLyBBY3R1YWxseSBk
byB0aGUgcmVwYWludCBvZiByZWN0IHIgZm9yIHRoaXMgb2JqZWN0IHdoaWNoIGhhcyBiZWVuIGNv
bXB1dGVkIGluIHRoZSBjb29yZGluYXRlIHNwYWNlCi0gICAgLy8gb2YgcmVwYWludENvbnRhaW5l
ci4gSWYgcmVwYWludENvbnRhaW5lciBpcyAwLCByZXBhaW50IHZpYSB0aGUgdmlldy4KKyAgICAv
LyBvZiByZXBhaW50Q29udGFpbmVyLiBJZiByZXBhaW50Q29udGFpbmVyIGlzIG51bGxwdHIsIHJl
cGFpbnQgdmlhIHRoZSB2aWV3LgogICAgIHZvaWQgcmVwYWludFVzaW5nQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJl
Y3QmLCBib29sIHNob3VsZENsaXBUb0xheWVyID0gdHJ1ZSkgY29uc3Q7CiAgICAgCiAgICAgLy8g
UmVwYWludCB0aGUgZW50aXJlIG9iamVjdC4gIENhbGxlZCB3aGVuLCBlLmcuLCB0aGUgY29sb3Ig
b2YgYSBib3JkZXIgY2hhbmdlcywgb3Igd2hlbiBhIGJvcmRlcgpAQCAtNzMzLDE4ICs3MzMsMTgg
QEAgcHVibGljOgogICAgIC8vIGNvb3JkaW5hdGUgc3BhY2UuICBUaGlzIG1ldGhvZCBkZWFscyB3
aXRoIG91dGxpbmVzIGFuZCBvdmVyZmxvdy4KICAgICBMYXlvdXRSZWN0IGFic29sdXRlQ2xpcHBl
ZE92ZXJmbG93UmVjdCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoMCk7CisgICAgICAgIHJldHVybiBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChudWxscHRyKTsKICAgICB9CiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UmVjdCBw
aXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdDsKICAgICB2aXJ0
dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmlydHVhbCBM
YXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lkdGgpIGNvbnN0
OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgY29uc3QgUmVuZGVy
R2VvbWV0cnlNYXAqID0gMCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmly
dHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBjb25zdCBSZW5kZXJHZW9tZXRyeU1h
cCogPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAogICAgIC8vIEdp
dmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJl
Y3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdmlldyBjb29y
ZGluYXRlcy4KICAgICB2b2lkIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KExheW91dFJlY3Qm
IHIsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGNvbXB1dGVSZWN0
Rm9yUmVwYWludCgwLCByLCBmaXhlZCk7CisgICAgICAgIGNvbXB1dGVSZWN0Rm9yUmVwYWludChu
dWxscHRyLCByLCBmaXhlZCk7CiAgICAgfQogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2Jq
ZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJlY3Qgc3VpdGFibGUgZm9yIHJlcGFp
bnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgcmVwYWlu
dENvbnRhaW5lci4KQEAgLTc3Nyw3ICs3NzcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBBIHNpbmds
ZSByZWN0YW5nbGUgdGhhdCBlbmNvbXBhc3NlcyBhbGwgb2YgdGhlIHNlbGVjdGVkIG9iamVjdHMg
d2l0aGluIHRoaXMgb2JqZWN0LiAgVXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpZ2h0ZXN0CiAgICAg
Ly8gcG9zc2libGUgYm91bmRpbmcgYm94IGZvciB0aGUgc2VsZWN0aW9uLgotICAgIExheW91dFJl
Y3Qgc2VsZWN0aW9uUmVjdChib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgeyByZXR1
cm4gc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoMCwgY2xpcFRvVmlzaWJsZUNvbnRlbnQpOyB9Cisg
ICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0
cnVlKSB7IHJldHVybiBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChudWxscHRyLCBjbGlwVG9WaXNp
YmxlQ29udGVudCk7IH0KICAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8s
IGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovID0gdHJ1ZSkgeyByZXR1cm4gTGF5b3V0UmVj
dCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTc5Miw3ICs3OTIsNyBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFt
IGV4dHJhV2lkdGhUb0VuZE9mTGluZSBvcHRpb25hbCBvdXQgYXJnIHRvIGdpdmUgZXh0cmEgd2lk
dGggdG8gZW5kIG9mIGxpbmUgLQogICAgICAqIHVzZWZ1bCBmb3IgY2hhcmFjdGVyIHJhbmdlIHJl
Y3QgY29tcHV0YXRpb25zCiAgICAgICovCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2Fy
ZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lID0gMCk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0
KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lID0gbnVsbHB0cik7CiAKICAgICAvLyBXaGVuIHBlcmZvcm1pbmcgYSBnbG9iYWwgZG9j
dW1lbnQgdGVhci1kb3duLCB0aGUgcmVuZGVyZXIgb2YgdGhlIGRvY3VtZW50IGlzIGNsZWFyZWQu
ICBXZSB1c2UgdGhpcwogICAgIC8vIGFzIGEgaG9vayB0byBkZXRlY3QgdGhlIGNhc2Ugb2YgZG9j
dW1lbnQgZGVzdHJ1Y3Rpb24gYW5kIGRvbid0IHdhc3RlIHRpbWUgZG9pbmcgdW5uZWNlc3Nhcnkg
d29yay4KQEAgLTgyMSw4ICs4MjEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgcHJldmlv
dXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKGludCBjdXJyZW50KSBjb25zdDsKICAgICB2aXJ0
dWFsIGludCBuZXh0T2Zmc2V0KGludCBjdXJyZW50KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9IDApIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJ
bnRSZWN0KiA9IDApIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1h
Z2UqLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIp
IHsgfQogCiAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHNlbGVjdGlvblJvb3QoKSBjb25zdDsK
ICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGludCYgc3BvcywgaW50JiBlcG9zKSBjb25zdDsK
QEAgLTgzMyw3ICs4MzMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXAgcG9pbnRzIGFuZCBxdWFk
cyB0aHJvdWdoIGVsZW1lbnRzLCBwb3RlbnRpYWxseSB2aWEgM2QgdHJhbnNmb3Jtcy4gWW91IHNo
b3VsZCBuZXZlciBuZWVkIHRvIGNhbGwgdGhlc2UgZGlyZWN0bHk7IHVzZQogICAgIC8vIGxvY2Fs
VG9BYnNvbHV0ZS9hYnNvbHV0ZVRvTG9jYWwgbWV0aG9kcyBpbnN0ZWFkLgotICAgIHZpcnR1YWwg
dm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFw
cGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSBB
cHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAgICAg
dmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3Ms
IFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKICAgICAvLyBQdXNoZXMgc3RhdGUgb250byBSZW5k
ZXJHZW9tZXRyeU1hcCBhYm91dCBob3cgdG8gbWFwIGNvb3JkaW5hdGVzIGZyb20gdGhpcyByZW5k
ZXJlciB0byBpdHMgY29udGFpbmVyLCBvciBhbmNlc3RvclRvU3RvcEF0ICh3aGljaGV2ZXIgaXMg
ZW5jb3VudGVyZWQgZmlyc3QpLgpAQCAtODQzLDExICs4NDMsMTEgQEAgcHVibGljOgogICAgIGJv
b2wgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJPYmplY3QqIGNv
bnRhaW5lcikgY29uc3Q7CiAgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0
IFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRJbkNvbnRh
aW5lciwgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQm
IC8qIGFkZGl0aW9uYWxPZmZzZXQgKi8sIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIC8q
IHBhaW50Q29udGFpbmVyICovID0gMCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1Jp
bmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgLyogYWRkaXRpb25h
bE9mZnNldCAqLywgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLyogcGFpbnRDb250YWlu
ZXIgKi8gPSBudWxscHRyKSB7IH07CiAKICAgICBMYXlvdXRSZWN0IGFic29sdXRlT3V0bGluZUJv
dW5kcygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3V0bGluZUJvdW5kc0ZvclJlcGFp
bnQoMCk7CisgICAgICAgIHJldHVybiBvdXRsaW5lQm91bmRzRm9yUmVwYWludChudWxscHRyKTsK
ICAgICB9CiAKICAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAppbmRleCA0YTM1YTAxMGQ5YzkxMGExNTdkODAzZmQyN2I1NjY5ODk4MDViMWQ4Li5mMzRi
YzFkZDVlZDRiNzJhY2M1MzE5YWVmYzFiNDM0ZjA5ZTUwM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0cnVjdCBTZWxlY3Rpb25J
dGVyYXRvciB7CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0KCkKICAgICB7Ci0gICAgICAg
IFJlbmRlck9iamVjdCogY3VycmVudFNwYW4gPSBtX3NwYW5uZXJTdGFjay5pc0VtcHR5KCkgPyAw
IDogbV9zcGFubmVyU3RhY2subGFzdCgpLT5zcGFubmVyKCk7CisgICAgICAgIFJlbmRlck9iamVj
dCogY3VycmVudFNwYW4gPSBtX3NwYW5uZXJTdGFjay5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9z
cGFubmVyU3RhY2subGFzdCgpLT5zcGFubmVyKCk7CiAgICAgICAgIG1fY3VycmVudCA9IG1fY3Vy
cmVudC0+bmV4dEluUHJlT3JkZXIoY3VycmVudFNwYW4pOwogICAgICAgICBjaGVja0ZvclNwYW5u
ZXIoKTsKICAgICAgICAgaWYgKCFtX2N1cnJlbnQgJiYgY3VycmVudFNwYW4pIHsKQEAgLTk2LDgg
Kzk2LDggQEAgc3RydWN0IFNlbGVjdGlvbkl0ZXJhdG9yIHsKIFJlbmRlclZpZXc6OlJlbmRlclZp
ZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgOiBS
ZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAgLCBtX2ZyYW1l
VmlldygqZG9jdW1lbnQudmlldygpKQotICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnQoMCkK
LSAgICAsIG1fc2VsZWN0aW9uVW5zcGxpdEVuZCgwKQorICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0
U3RhcnQobnVsbHB0cikKKyAgICAsIG1fc2VsZWN0aW9uVW5zcGxpdEVuZChudWxscHRyKQogICAg
ICwgbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnRQb3MoLTEpCiAgICAgLCBtX3NlbGVjdGlvblVuc3Bs
aXRFbmRQb3MoLTEpCiAgICAgLCBtX3JlbmRlcmVyQ291bnQoMCkKQEAgLTEwNyw3ICsxMDcsNyBA
QCBSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQogICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQoZmFsc2UpCiAg
ICAgLCBtX2xheW91dFN0YXRlKG51bGxwdHIpCiAgICAgLCBtX2xheW91dFN0YXRlRGlzYWJsZUNv
dW50KDApCi0gICAgLCBtX3JlbmRlclF1b3RlSGVhZCgwKQorICAgICwgbV9yZW5kZXJRdW90ZUhl
YWQobnVsbHB0cikKICAgICAsIG1fcmVuZGVyQ291bnRlckNvdW50KDApCiAgICAgLCBtX3NlbGVj
dGlvbldhc0NhcmV0KGZhbHNlKQogICAgICwgbV9oYXNTb2Z0d2FyZUZpbHRlcnMoZmFsc2UpCkBA
IC00MTUsNyArNDE1LDcgQEAgc3RhdGljIGlubGluZSBMYXlvdXRTaXplIGZpeGVkUG9zaXRpb25P
ZmZzZXQoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiAKIHZvaWQgUmVuZGVyVmlldzo6bWFw
TG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcENvb3JkaW5hdGVzRmxh
Z3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7Ci0gICAgLy8gSWYgYSBjb250YWluZXIg
d2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywKKyAgICAvLyBJ
ZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCBudWxscHRyIG9yIHRoZSBS
ZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93Lgog
ICAgIEFTU0VSVF9BUkcocmVwYWludENvbnRhaW5lciwgIXJlcGFpbnRDb250YWluZXIgfHwgcmVw
YWludENvbnRhaW5lciA9PSB0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHdhc0ZpeGVkLCAhd2Fz
Rml4ZWQgfHwgKndhc0ZpeGVkID09IChtb2RlICYgSXNGaXhlZCkpOwpAQCAtNDM2LDcgKzQzNiw3
IEBAIHZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpCiAKIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVy
Vmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlNYXApIGNvbnN0
CiB7Ci0gICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBv
ciB0aGUgUmVuZGVyVmlldywKKyAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBh
bmQgd2FzIG5vdCBudWxscHRyIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hv
dWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgogICAgIEFTU0VSVF9BUkcoYW5jZXN0b3JUb1N0b3BB
dCwgIWFuY2VzdG9yVG9TdG9wQXQgfHwgYW5jZXN0b3JUb1N0b3BBdCA9PSB0aGlzKTsKIApAQCAt
NDUzLDcgKzQ1Myw3IEBAIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyVmlldzo6cHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqCiAgICAgfSBlbHNlCiAgICAg
ICAgIGdlb21ldHJ5TWFwLnB1c2hWaWV3KHRoaXMsIHNjcm9sbE9mZnNldCk7CiAKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjptYXBBYnNv
bHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUsIFRyYW5zZm9ybVN0YXRl
JiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKQEAgLTY4MSw3ICs2ODEsNyBAQCBMYXlvdXRSZWN0IFJl
bmRlclZpZXc6OnZpc3VhbE92ZXJmbG93UmVjdCgpIGNvbnN0CiAKIHZvaWQgUmVuZGVyVmlldzo6
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7Ci0gICAg
Ly8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVu
ZGVyVmlldywKKyAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5v
dCBudWxscHRyIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUg
Zm91bmQgaXQgYnkgbm93LgogICAgIEFTU0VSVF9BUkcocmVwYWludENvbnRhaW5lciwgIXJlcGFp
bnRDb250YWluZXIgfHwgcmVwYWludENvbnRhaW5lciA9PSB0aGlzKTsKIApAQCAtNzMzLDcgKzcz
Myw3IEBAIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYg
cXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVy
ZXJBZnRlclBvc2l0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQpCiB7
CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBvYmplY3QtPmNoaWxkQXQob2Zmc2V0
KTsKICAgICByZXR1cm4gY2hpbGQgPyBjaGlsZCA6IG9iamVjdC0+bmV4dEluUHJlT3JkZXJBZnRl
ckNoaWxkcmVuKCk7CkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzcGxpdFNl
bGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhjb25zdCBSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQgc3QK
ICAgICAgICAgICAgIFNlbGVjdGlvblN1YnRyZWVEYXRhIHNlbGVjdGlvbkRhdGEgPSByZW5kZXJT
dWJ0cmVlc01hcC5nZXQoJnJvb3QpOwogICAgICAgICAgICAgaWYgKHNlbGVjdGlvbkRhdGEuc2Vs
ZWN0aW9uQ2xlYXIoKSkgewogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0U2VsZWN0
aW9uU3RhcnQobm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0
YS5zZXRTZWxlY3Rpb25TdGFydFBvcyhub2RlID09IHN0YXJ0Tm9kZSA/IHN0YXJ0UG9zIDogMCk7
CisgICAgICAgICAgICAgICAgc2VsZWN0aW9uRGF0YS5zZXRTZWxlY3Rpb25TdGFydFBvcyhub2Rl
ID09IHN0YXJ0Tm9kZSA/IHN0YXJ0UG9zIDogbnVsbHB0cik7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIHNlbGVjdGlvbkRhdGEuc2V0U2VsZWN0aW9uRW5kKG5vZGUtPnJlbmRlcmVyKCkp
OwpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgSW50UmVjdCBSZW5kZXJWaWV3Ojp1bnNjYWxlZERvY3Vt
ZW50UmVjdCgpIGNvbnN0CiAKIGJvb2wgUmVuZGVyVmlldzo6cm9vdEJhY2tncm91bmRJc0VudGly
ZWx5Rml4ZWQoKSBjb25zdAogewotICAgIFJlbmRlckVsZW1lbnQqIHJvb3RPYmplY3QgPSBkb2N1
bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+
cmVuZGVyZXIoKSA6IDA7CisgICAgUmVuZGVyRWxlbWVudCogcm9vdE9iamVjdCA9IGRvY3VtZW50
KCkuZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5yZW5k
ZXJlcigpIDogbnVsbHB0cjsKICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggZDRjMzY5MGMy
MTYyZGJjNDAzYTYxZWFlYmIxYTE1MTQ1ZDU1NDVhYy4uYWIwNDdkNDI3MzdjOGJhN2Q2ZDk3ZDEw
MTIxNWY4ZWEwZjA4NWI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBA
IC0yNDMsNyArMjQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zY2hlZHVsZUxhenlSZXBhaW50
KFJlbmRlckJveCYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9D
b250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJGbGlw
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBt
YXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IEFwcGx5Q29u
dGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRy
eU1hcCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBtYXBBYnNvbHV0ZVRvTG9j
YWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFuc2Zvcm1TdGF0ZSYpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbHVtbnMoaW50IGRlc2lyZWRDb2x1bW5D
b3VudCkgY29uc3Qgb3ZlcnJpZGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247242</attachid>
            <date>2015-02-24 10:28:10 -0800</date>
            <delta_ts>2015-02-24 10:34:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141974-20150224102757.patch</filename>
            <type>text/plain</type>
            <size>39491</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThjYjljY2JjYTM5YTE2
NWUzYWU2ZGVkMjQ2NTBmM2EzZGRhNzUxZS4uMzJkNzRhZjQ3Njg4ZWZiNWYwZThmMTA1MjE0NGU5
ZmEzMzYzMzlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE1LTAyLTI0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBudWxscHRy
IGluIG1vcmUgcGxhY2VzIGluIEZyYW1lVmlldywgUmVuZGVyVmlldywgUmVuZGVyT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5NzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAwIC0+IG51bGxw
dHIgaW4gRnJhbWVWaWV3LmgvY3BwLCBSZW5kZXJWaWV3LmgvY3BwLCBSZW5kZXJPYmplY3QuaC9j
cHAuCisgICAgICAgIAorICAgICAgICBSZW5hbWUgRnJhbWVWaWV3OjptX2RlZmVyU2V0TmVlZHNM
YXlvdXRzIHRvIEZyYW1lVmlldzo6bV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQKKyAgICAgICAg
dG8gbWFrZSBpdCBtb3JlIGNsZWFyIHRoYXQgaXQncyBhIGNvdW50LgorCisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6bGF5ZXJGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6bGF5ZXJGb3JTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp0aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxM
YXllcklEKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5ZXJGb3JPdmVyaGFuZ0Fy
ZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0V2FudHNMYXllckZvclRvcE92
ZXJIYW5nQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFdhbnRzTGF5ZXJG
b3JCb3R0b21PdmVySGFuZ0FyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpoYXND
b21wb3NpdGVkQ29udGVudEluY2x1ZGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6bGF5b3V0Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZv
cmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9zdFdpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6bmVlZHNMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzZXROZWVkc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFy
ZW50RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250cm9s
VGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RQYWdlSGVpZ2h0RGVw
cmVjYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmF4T2JqZWN0Q2FjaGUpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om5leHRJblByZU9yZGVyQWZ0ZXJDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnByZXZpb3VzSW5QcmVPcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0TGVhZkNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bGFzdExlYWZDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmZpcnN0TGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6Y29udGFpbmVyRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnNob3dSZW5kZXJTdWJUcmVlQW5kTWFyayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmxvY2FsVG9BYnNvbHV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp2aXJ0dWFsQ29udGludWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6Om5vblBzZXVkb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojps
b2NhbFRvQWJzb2x1dGVRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29t
cHV0ZUFic29sdXRlUmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aW1hZ2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkRm9jdXNSaW5nUmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZU91dGxpbmVCb3Vu
ZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bWFwTG9jYWxU
b0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlckFmdGVyUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cm9vdEJhY2tncm91bmRJc0VudGlyZWx5
Rml4ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisKIDIwMTUtMDItMjQg
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtTdHJlYW1z
IEFQSV0gUmVhZGluZyBSZWFkYWJsZVN0cmVhbSByZWFkeSBhbmQgY2xvc2VkIGF0dHJpYnV0ZXMg
c2hvdWxkIG5vdCBhbHdheXMgY3JlYXRlIGEgbmV3IHByb21pc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCAxMDg2NmFjZDIxNGI5NTU5NTdhYjQyYjRhM2I0MTFlN2MwYzBjNmU4Li5h
ODViYjY0YjhmYWE1ZGZkMGI1ZmM1YjRhYmUyODlkMTBlNjA1MzI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJh
bWUmIGZyYW1lKQogICAgIDogbV9mcmFtZSgmZnJhbWUpCiAgICAgLCBtX2NhbkhhdmVTY3JvbGxi
YXJzKHRydWUpCiAgICAgLCBtX2xheW91dFRpbWVyKCp0aGlzLCAmRnJhbWVWaWV3OjpsYXlvdXRU
aW1lckZpcmVkKQotICAgICwgbV9sYXlvdXRSb290KDApCisgICAgLCBtX2xheW91dFJvb3QobnVs
bHB0cikKICAgICAsIG1fbGF5b3V0UGhhc2UoT3V0c2lkZUxheW91dCkKICAgICAsIG1faW5TeW5j
aHJvbm91c1Bvc3RMYXlvdXQoZmFsc2UpCiAgICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyKCp0
aGlzLCAmRnJhbWVWaWV3Ojpwb3N0TGF5b3V0VGltZXJGaXJlZCkKQEAgLTE3Myw3ICsxNzMsNyBA
QCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAgLCBtX2Jhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9tZWRpYVR5cGUoInNjcmVlbiIpCiAgICAg
LCBtX292ZXJmbG93U3RhdHVzRGlydHkodHJ1ZSkKLSAgICAsIG1fdmlld3BvcnRSZW5kZXJlcigw
KQorICAgICwgbV92aWV3cG9ydFJlbmRlcmVyKG51bGxwdHIpCiAgICAgLCBtX3dhc1Njcm9sbGVk
QnlVc2VyKGZhbHNlKQogICAgICwgbV9pblByb2dyYW1tYXRpY1Njcm9sbChmYWxzZSkKICAgICAs
IG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQodHJ1ZSkKQEAgLTE4MSw3ICsxODEsNyBA
QCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAgLCBtX2lzVHJhY2tpbmdS
ZXBhaW50cyhmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4odHJ1ZSkK
ICAgICAsIG1fZXhwb3NlZFJlY3QoRmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSkKLSAgICAsIG1f
ZGVmZXJTZXROZWVkc0xheW91dHMoMCkKKyAgICAsIG1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KDApCiAgICAgLCBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQoZmFsc2UpCiAgICAgLCBtX3Nw
ZWN1bGF0aXZlVGlsaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc3BlY3VsYXRpdmVUaWxpbmdF
bmFibGVUaW1lcigqdGhpcywgJkZyYW1lVmlldzo6c3BlY3VsYXRpdmVUaWxpbmdFbmFibGVUaW1l
ckZpcmVkKQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAg
bV9pc092ZXJsYXBwZWQgPSBmYWxzZTsKICAgICBtX2NvbnRlbnRJc09wYXF1ZSA9IGZhbHNlOwog
ICAgIG1fbGF5b3V0VGltZXIuc3RvcCgpOwotICAgIG1fbGF5b3V0Um9vdCA9IDA7CisgICAgbV9s
YXlvdXRSb290ID0gbnVsbHB0cjsKICAgICBtX2RlbGF5ZWRMYXlvdXQgPSBmYWxzZTsKICAgICBt
X25lZWRzRnVsbFJlcGFpbnQgPSB0cnVlOwogICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQg
PSB0cnVlOwpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRDb250ZW50c1Np
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoc2l6ZSA9PSBjb250ZW50c1NpemUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kZWZlclNldE5lZWRzTGF5b3V0cysrOworICAgIG1f
ZGVmZXJTZXROZWVkc0xheW91dENvdW50Kys7CiAKICAgICBTY3JvbGxWaWV3OjpzZXRDb250ZW50
c1NpemUoc2l6ZSk7CiAgICAgU2Nyb2xsVmlldzo6Y29udGVudHNSZXNpemVkKCk7CkBAIC01Nzks
MTAgKzU3OSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgZnJhbWUo
KS5tYWluRnJhbWUoKS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEb2N1bWVudFNp
emUoKTsKIAotICAgIEFTU0VSVChtX2RlZmVyU2V0TmVlZHNMYXlvdXRzKTsKLSAgICBtX2RlZmVy
U2V0TmVlZHNMYXlvdXRzLS07CisgICAgQVNTRVJUKG1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KTsKKyAgICBtX2RlZmVyU2V0TmVlZHNMYXlvdXRDb3VudC0tOwogICAgIAotICAgIGlmICghbV9k
ZWZlclNldE5lZWRzTGF5b3V0cykKKyAgICBpZiAoIW1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KQogICAgICAgICBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQgPSBmYWxzZTsgLy8gRklYTUU6
IEZpbmQgYSB3YXkgdG8gbWFrZSB0aGUgZGVmZXJyZWQgbGF5b3V0IGFjdHVhbGx5IGhhcHBlbi4K
IH0KIApAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjphcHBseVBhZ2luYXRpb25U
b1ZpZXdwb3J0KCkKIAogdm9pZCBGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9y
TGF5b3V0KFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Nyb2xs
YmFyTW9kZXNDYWxjdWxhdGlvblN0cmF0ZWd5IHN0cmF0ZWd5KQogewotICAgIG1fdmlld3BvcnRS
ZW5kZXJlciA9IDA7CisgICAgbV92aWV3cG9ydFJlbmRlcmVyID0gbnVsbHB0cjsKIAogICAgIGNv
bnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBmcmFtZSgpLm93bmVyRWxlbWVudCgp
OwogICAgIGlmIChvd25lciAmJiAob3duZXItPnNjcm9sbGluZ01vZGUoKSA9PSBTY3JvbGxiYXJB
bHdheXNPZmYpKSB7CkBAIC03ODQsNyArNzg0LDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3
OjpsYXllckZvclNjcm9sbGluZygpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+
Y29tcG9zaXRvcigpLnNjcm9sbExheWVyKCk7CiB9CiAKQEAgLTc5Miw3ICs3OTIsNyBAQCBHcmFw
aGljc0xheWVyKiBGcmFtZVZpZXc6OmxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0
CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAg
ICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmxheWVyRm9ySG9yaXpv
bnRhbFNjcm9sbGJhcigpOwogfQogCkBAIC04MDAsNyArODAwLDcgQEAgR3JhcGhpY3NMYXllciog
RnJhbWVWaWV3OjpsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVy
VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
OwogfQogCkBAIC04MDgsNyArODA4LDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3OjpsYXll
ckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpLmxheWVyRm9yU2Nyb2xsQ29ybmVyKCk7CiB9CiAKQEAgLTgxNiwxMSArODE2LDEx
IEBAIFRpbGVkQmFja2luZyogRnJhbWVWaWV3Ojp0aWxlZEJhY2tpbmcoKSBjb25zdAogewogICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFy
ZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSByZW5kZXJWaWV3LT5sYXllcigpLT5i
YWNraW5nKCk7CiAgICAgaWYgKCFiYWNraW5nKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT50
aWxlZEJhY2tpbmcoKTsKIH0KQEAgLTg1Miw3ICs4NTIsNyBAQCBHcmFwaGljc0xheWVyKiBGcmFt
ZVZpZXc6OmxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVu
ZGVyVmlldy0+Y29tcG9zaXRvcigpLmxheWVyRm9yT3ZlcmhhbmdBcmVhcygpOwogfQogCkBAIC04
NjAsNyArODYwLDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3OjpzZXRXYW50c0xheWVyRm9y
VG9wT3ZlckhhbmdBcmVhKGJvb2wgd2FudHNMYXllcikgY29uc3QKIHsKICAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVyVmlldykK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJu
IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVMYXllckZvclRvcE92ZXJoYW5nQXJlYSh3
YW50c0xheWVyKTsKIH0KQEAgLTg2OSw3ICs4NjksNyBAQCBHcmFwaGljc0xheWVyKiBGcmFtZVZp
ZXc6OnNldFdhbnRzTGF5ZXJGb3JCb3R0b21PdmVySGFuZ0FyZWEoYm9vbCB3YW50c0xheWVyKSBj
bwogewogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCk7CiAg
ICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnVwZGF0ZUxheWVy
Rm9yQm90dG9tT3ZlcmhhbmdBcmVhKHdhbnRzTGF5ZXIpOwogfQpAQCAtMTAxNiw3ICsxMDE2LDcg
QEAgYm9vbCBGcmFtZVZpZXc6Omhhc0NvbXBvc2l0ZWRDb250ZW50SW5jbHVkaW5nRGVzY2VuZGFu
dHMoKSBjb25zdAogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQobV9mcmFtZS5nZXQoKSkpIHsK
ICAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KTsKLSAgICAgICAgaWYgKFJlbmRlckxheWVyQ29tcG9zaXRvciogY29tcG9zaXRvciA9IHJlbmRl
clZpZXcgPyAmcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpIDogMCkgeworICAgICAgICBpZiAoUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0gcmVuZGVyVmlldyA/ICZyZW5kZXJWaWV3
LT5jb21wb3NpdG9yKCkgOiBudWxscHRyKSB7CiAgICAgICAgICAgICBpZiAoY29tcG9zaXRvci0+
aW5Db21wb3NpdGluZ01vZGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAt
MTA4NCw3ICsxMDg0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldElzSW5XaW5kb3coYm9vbCBpc0lu
V2luZG93KQogCiBSZW5kZXJPYmplY3QqIEZyYW1lVmlldzo6bGF5b3V0Um9vdChib29sIG9ubHlE
dXJpbmdMYXlvdXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG9ubHlEdXJpbmdMYXlvdXQgJiYgbGF5
b3V0UGVuZGluZygpID8gMCA6IG1fbGF5b3V0Um9vdDsKKyAgICByZXR1cm4gb25seUR1cmluZ0xh
eW91dCAmJiBsYXlvdXRQZW5kaW5nKCkgPyBudWxscHRyIDogbV9sYXlvdXRSb290OwogfQogCiBp
bmxpbmUgdm9pZCBGcmFtZVZpZXc6OmZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKCkKQEAg
LTExMDMsNyArMTEwMyw3IEBAIGlubGluZSB2b2lkIEZyYW1lVmlldzo6Zm9yY2VMYXlvdXRQYXJl
bnRWaWV3SWZOZWVkZWQoKQogCiAgICAgLy8gSWYgdGhlIGVtYmVkZGVkIFNWRyBkb2N1bWVudCBh
cHBlYXJzIHRoZSBmaXJzdCB0aW1lLCB0aGUgb3duZXJSZW5kZXJlciBoYXMgYWxyZWFkeSBmaW5p
c2hlZAogICAgIC8vIGxheW91dCB3aXRob3V0IGtub3dpbmcgYWJvdXQgdGhlIGV4aXN0ZW5jZSBv
ZiB0aGUgZW1iZWRkZWQgU1ZHIGRvY3VtZW50LCBiZWNhdXNlIFJlbmRlclJlcGxhY2VkCi0gICAg
Ly8gZW1iZWRkZWRDb250ZW50Qm94KCkgcmV0dXJucyAwLCBhcyBsb25nIGFzIHRoZSBlbWJlZGRl
ZCBkb2N1bWVudCBpc24ndCBsb2FkZWQgeWV0LiBCZWZvcmUKKyAgICAvLyBlbWJlZGRlZENvbnRl
bnRCb3goKSByZXR1cm5zIG51bGxwdHIsIGFzIGxvbmcgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50
IGlzbid0IGxvYWRlZCB5ZXQuIEJlZm9yZQogICAgIC8vIGJvdGhlcmluZyB0byBsYXkgb3V0IHRo
ZSBTVkcgZG9jdW1lbnQsIG1hcmsgdGhlIG93bmVyUmVuZGVyZXIgbmVlZGluZyBsYXlvdXQgYW5k
IGFzayBpdHMKICAgICAvLyBGcmFtZVZpZXcgZm9yIGEgbGF5b3V0LiBBZnRlciB0aGF0IHRoZSBS
ZW5kZXJFbWJlZGRlZE9iamVjdCAob3duZXJSZW5kZXJlcikgY2FycmllcyB0aGUKICAgICAvLyBj
b3JyZWN0IHNpemUsIHdoaWNoIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aC9IZWlnaHQgcmVseSBvbiwgd2hlbiBsYXlpbmcKQEAgLTEzMDQsNyArMTMwNCw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAgICAgICBkaXNh
YmxlTGF5b3V0U3RhdGUgPSByb290LT52aWV3KCkuc2hvdWxkRGlzYWJsZUxheW91dFN0YXRlRm9y
U3VidHJlZShyb290KTsKICAgICAgICAgICAgIHJvb3QtPnZpZXcoKS5wdXNoTGF5b3V0U3RhdGUo
KnJvb3QpOwogICAgICAgICB9Ci0gICAgICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3Rh
dGVEaXNhYmxlcihkaXNhYmxlTGF5b3V0U3RhdGUgPyAmcm9vdC0+dmlldygpIDogMCk7CisgICAg
ICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcihkaXNhYmxlTGF5b3V0
U3RhdGUgPyAmcm9vdC0+dmlldygpIDogbnVsbHB0cik7CiAgICAgICAgIFJlbmRlclZpZXc6OlJl
cGFpbnRSZWdpb25BY2N1bXVsYXRvciByZXBhaW50UmVnaW9uQWNjdW11bGF0b3IoJnJvb3QtPnZp
ZXcoKSk7CiAKICAgICAgICAgQVNTRVJUKG1fbGF5b3V0UGhhc2UgPT0gSW5QcmVMYXlvdXQpOwpA
QCAtMjI0Nyw3ICsyMjQ3LDcgQEAgSG9zdFdpbmRvdyogRnJhbWVWaWV3Ojpob3N0V2luZG93KCkg
Y29uc3QKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKQogICAgICAgICBy
ZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIEZyYW1lVmlldzo6YWRkVHJhY2tlZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcikKQEAgLTI0NjAsNyArMjQ2MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzY2hlZHVsZVJl
bGF5b3V0KCkKIAogICAgIGlmIChtX2xheW91dFJvb3QpIHsKICAgICAgICAgbV9sYXlvdXRSb290
LT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7Ci0gICAgICAgIG1fbGF5b3V0
Um9vdCA9IDA7CisgICAgICAgIG1fbGF5b3V0Um9vdCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlm
ICghbV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU1MSw3
ICsyNTUxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUoUmVu
ZGVyRWxlbWVudCYgbmV3UmVsYXlvdXRSb290KQogCiAgICAgLy8gSnVzdCBkbyBhIGZ1bGwgcmVs
YXlvdXQuCiAgICAgbV9sYXlvdXRSb290LT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChm
YWxzZSk7Ci0gICAgbV9sYXlvdXRSb290ID0gMDsKKyAgICBtX2xheW91dFJvb3QgPSBudWxscHRy
OwogICAgIG5ld1JlbGF5b3V0Um9vdC5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxz
ZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KGZy
YW1lKCkpOwogfQpAQCAtMjU5NywxMiArMjU5NywxMiBAQCBib29sIEZyYW1lVmlldzo6bmVlZHNM
YXlvdXQoKSBjb25zdAogICAgIHJldHVybiBsYXlvdXRQZW5kaW5nKCkKICAgICAgICAgfHwgKHJl
bmRlclZpZXcgJiYgcmVuZGVyVmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgfHwgbV9sYXlv
dXRSb290Ci0gICAgICAgIHx8IChtX2RlZmVyU2V0TmVlZHNMYXlvdXRzICYmIG1fc2V0TmVlZHNM
YXlvdXRXYXNEZWZlcnJlZCk7CisgICAgICAgIHx8IChtX2RlZmVyU2V0TmVlZHNMYXlvdXRDb3Vu
dCAmJiBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6
c2V0TmVlZHNMYXlvdXQoKQogewotICAgIGlmIChtX2RlZmVyU2V0TmVlZHNMYXlvdXRzKSB7Cisg
ICAgaWYgKG1fZGVmZXJTZXROZWVkc0xheW91dENvdW50KSB7CiAgICAgICAgIG1fc2V0TmVlZHNM
YXlvdXRXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzk5
LDcgKzMzOTksNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0
KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIpCiBTY3JvbGxhYmxlQXJlYSogRnJhbWVWaWV3
OjplbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdhbGsg
dXAgdGhlIGZyYW1lIHRyZWUgYW5kIGxvb2sgZm9yIGEgc2Nyb2xsYWJsZSBwYXJlbnQgZnJhbWUg
b3IgUmVuZGVyTGF5ZXIuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IEludFJlY3QgRnJhbWVWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QKQEAg
LTM2NzEsMTIgKzM2NzEsMTIgQEAgYm9vbCBGcmFtZVZpZXc6Omhhc0N1c3RvbVNjcm9sbGJhcnMo
KSBjb25zdAogRnJhbWVWaWV3KiBGcmFtZVZpZXc6OnBhcmVudEZyYW1lVmlldygpIGNvbnN0CiB7
CiAgICAgaWYgKCFwYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IGZyYW1lKCkudHJlZSgpLnBh
cmVudCgpKQogICAgICAgICByZXR1cm4gcGFyZW50RnJhbWUtPnZpZXcoKTsKIAotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIEZyYW1lVmlldzo6aXNJbkNoaWxk
RnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkgY29uc3QKQEAgLTM3NDcsOCArMzc0Nyw4IEBAIHZv
aWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiB7CiAgICAgaWYgKG5lZWRzTGF5b3V0
KCkpCiAgICAgICAgIGxheW91dCgpOwotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjb25z
dCBub0NvbnRleHQgPSAwOwotICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KG5vQ29udGV4dCk7
CisKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChudWxscHRyKTsKICAgICBjb250ZXh0LnNl
dFVwZGF0aW5nQ29udHJvbFRpbnRzKHRydWUpOwogICAgIGlmIChwbGF0Zm9ybVdpZGdldCgpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBjb25zdWx0IHBhaW50c0VudGlyZUNvbnRlbnRzKCkuCkBAIC00
MTQxLDcgKzQxNDEsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0
ZWQoZmxvYXQgKm5ld0JvdHRvbSwgZmxvYXQgb2xkVG9wLCBmbG9hdAogCiAgICAgfQogICAgIC8v
IFVzZSBhIGNvbnRleHQgd2l0aCBwYWludGluZyBkaXNhYmxlZC4KLSAgICBHcmFwaGljc0NvbnRl
eHQgY29udGV4dCgoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqKTApOworICAgIEdyYXBoaWNzQ29u
dGV4dCBjb250ZXh0KG51bGxwdHIpOwogICAgIHJlbmRlclZpZXctPnNldFRydW5jYXRlZEF0KHN0
YXRpY19jYXN0PGludD4oZmxvb3JmKG9sZEJvdHRvbSkpKTsKICAgICBJbnRSZWN0IGRpcnR5UmVj
dCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGZsb29yZihvbGRUb3ApKSwgcmVuZGVyVmlldy0+bGF5b3V0
T3ZlcmZsb3dSZWN0KCkubWF4WCgpLCBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKG9sZEJvdHRvbSAt
IG9sZFRvcCkpKTsKICAgICByZW5kZXJWaWV3LT5zZXRQcmludFJlY3QoZGlydHlSZWN0KTsKQEAg
LTQ0NTYsNyArNDQ1Niw3IEBAIEFYT2JqZWN0Q2FjaGUqIEZyYW1lVmlldzo6YXhPYmplY3RDYWNo
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJu
IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCk7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggMGEyOWMzOGEyZGEwODE2MjAzODBmN2M1YzUyMGQ1Mjgw
ZTQ4OTQ3Ny4uNjVjN2JiZGEyNTljNjY2ZDhjY2JjNGMyNzAzMjdkY2Y0YTk1N2E1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC03MTAsNyArNzEwLDcgQEAgcHJpdmF0ZToKIAogICAgIEZs
b2F0UmVjdCBtX2V4cG9zZWRSZWN0OwogCi0gICAgdW5zaWduZWQgbV9kZWZlclNldE5lZWRzTGF5
b3V0czsKKyAgICB1bnNpZ25lZCBtX2RlZmVyU2V0TmVlZHNMYXlvdXRDb3VudDsKICAgICBib29s
IG1fc2V0TmVlZHNMYXlvdXRXYXNEZWZlcnJlZDsKIAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVU
b0RyYXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDRl
YmMwNmJkNDdmNDlhMjRmNTYwYTFhMDU2YjQyMDIxMjNmODBmODYuLmU1MDk1ZWFlYTczN2VmZTlj
ZTYzOGY4ZWQzYzM5MWEyMjIzODQ2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCkBAIC0xMDcsOSArMTA3LDkgQEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFM
KFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCByZW5kZXJPYmplY3RDb3VudGVyLCAoIlJlbmQK
IFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0KE5vZGUmIG5vZGUpCiAgICAgOiBDYWNoZWRJbWFn
ZUNsaWVudCgpCiAgICAgLCBtX25vZGUobm9kZSkKLSAgICAsIG1fcGFyZW50KDApCi0gICAgLCBt
X3ByZXZpb3VzKDApCi0gICAgLCBtX25leHQoMCkKKyAgICAsIG1fcGFyZW50KG51bGxwdHIpCisg
ICAgLCBtX3ByZXZpb3VzKG51bGxwdHIpCisgICAgLCBtX25leHQobnVsbHB0cikKICNpZm5kZWYg
TkRFQlVHCiAgICAgLCBtX2hhc0FYT2JqZWN0KGZhbHNlKQogICAgICwgbV9zZXROZWVkc0xheW91
dEZvcmJpZGRlbihmYWxzZSkKQEAgLTIyMSwxNCArMjIxLDE0IEBAIFJlbmRlck9iamVjdCogUmVu
ZGVyT2JqZWN0OjpuZXh0SW5QcmVPcmRlcihjb25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4p
IGNvbnN0CiBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6bmV4dEluUHJlT3JkZXJBZnRlckNo
aWxkcmVuKGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbikgY29uc3QKIHsKICAgICBpZiAo
dGhpcyA9PSBzdGF5V2l0aGluKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBjb25zdCBSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSB0aGlzOwogICAgIFJl
bmRlck9iamVjdCogbmV4dDsKICAgICB3aGlsZSAoIShuZXh0ID0gY3VycmVudC0+bmV4dFNpYmxp
bmcoKSkpIHsKICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudCgpOwogICAgICAgICBp
ZiAoIWN1cnJlbnQgfHwgY3VycmVudCA9PSBzdGF5V2l0aGluKQotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG5leHQ7
CiB9CkBAIC0yNDcsNyArMjQ3LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnByZXZp
b3VzSW5QcmVPcmRlcigpIGNvbnN0CiBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6cHJldmlv
dXNJblByZU9yZGVyKGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbikgY29uc3QKIHsKICAg
ICBpZiAodGhpcyA9PSBzdGF5V2l0aGluKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gcHJldmlvdXNJblByZU9yZGVyKCk7CiB9CkBAIC0y
NjQsNyArMjY0LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmZpcnN0TGVhZkNoaWxk
KCkgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHIgPSBmaXJzdENoaWxkU2xvdygpOwogICAg
IHdoaWxlIChyKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogbiA9IDA7CisgICAgICAgIFJlbmRl
ck9iamVjdCogbiA9IG51bGxwdHI7CiAgICAgICAgIG4gPSByLT5maXJzdENoaWxkU2xvdygpOwog
ICAgICAgICBpZiAoIW4pCiAgICAgICAgICAgICBicmVhazsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBS
ZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6bGFzdExlYWZDaGlsZCgpIGNvbnN0CiB7CiAgICAg
UmVuZGVyT2JqZWN0KiByID0gbGFzdENoaWxkU2xvdygpOwogICAgIHdoaWxlIChyKSB7Ci0gICAg
ICAgIFJlbmRlck9iamVjdCogbiA9IDA7CisgICAgICAgIFJlbmRlck9iamVjdCogbiA9IG51bGxw
dHI7CiAgICAgICAgIG4gPSByLT5sYXN0Q2hpbGRTbG93KCk7CiAgICAgICAgIGlmICghbikKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMjk2LDcgKzI5Niw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVy
T2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluKSBjb25z
dAogICAgICAgICByZXR1cm4gY2hpbGQ7CiAgICAgfQogICAgIGlmICh0aGlzID09IHN0YXlXaXRo
aW4pCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAo
bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgbmV4dFNpYmxp
bmcoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOwogICAgICAgICByZXR1cm4gbmV4dFNp
YmxpbmcoKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6
dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbikgY29uc3QKICAgICAg
ICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8ICFuLT5uZXh0U2libGluZygpIHx8IG4tPm5leHRTaWJs
aW5nKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKICAgICAgICAgcmV0dXJuIG4tPm5l
eHRTaWJsaW5nKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiAvLyBOb24tcmVjdXJzaXZlIHZlcnNpb24gb2YgdGhlIERGUyBzZWFyY2guCkBAIC0zMjks
NyArMzI5LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnRyYXZlcnNlTmV4dChjb25z
dCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4sIEhlaWdodFQKICAgICB9CiAKICAgICBpZiAodGhp
cyA9PSBzdGF5V2l0aGluKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBOb3cgd2UgdHJhdmVyc2Ugb3RoZXIgbm9kZXMgaWYgdGhleSBleGlzdCwg
b3RoZXJ3aXNlCiAgICAgLy8gd2UgZ28gdG8gdGhlIHBhcmVudCBub2RlIGFuZCB0cnkgZG9pbmcg
dGhlIHNhbWUuCkBAIC0zNDAsNyArMzQwLDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6
OnRyYXZlcnNlTmV4dChjb25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4sIEhlaWdodFQKICAg
ICAgICAgICAgIGN1cnJlbnREZXB0aC0tOwogICAgICAgICB9CiAgICAgICAgIGlmICghbikKLSAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBzaWJsaW5nID0gbi0+bmV4dFNpYmxpbmcoKTsgc2libGluZzsg
c2libGluZyA9IHNpYmxpbmctPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIG92ZXJmbG93
VHlwZSA9IGluY2x1c2lvbkZ1bmN0aW9uKHNpYmxpbmcpOwogICAgICAgICAgICAgaWYgKG92ZXJm
bG93VHlwZSAhPSBGaXhlZEhlaWdodCkgewpAQCAtMzU0LDkgKzM1NCw5IEBAIFJlbmRlck9iamVj
dCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0
aGluLCBIZWlnaHRUCiAgICAgICAgICAgICBuID0gbi0+cGFyZW50KCk7CiAgICAgICAgICAgICBj
dXJyZW50RGVwdGgtLTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnRyYXZlcnNlTmV4
dChjb25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4sIFRyYXZlcnNlTmV4dEluY2x1c2lvbkZ1
bmN0aW9uIGluY2x1c2lvbkZ1bmN0aW9uKSBjb25zdApAQCAtMzY5LDcgKzM2OSw3IEBAIFJlbmRl
ck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBz
dGF5V2l0aGluLCBUcmF2ZXJzCiAgICAgfQogCiAgICAgaWYgKHRoaXMgPT0gc3RheVdpdGhpbikK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChS
ZW5kZXJPYmplY3QqIHNpYmxpbmcgPSBuZXh0U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0g
c2libGluZy0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoaW5jbHVzaW9uRnVuY3Rpb24o
c2libGluZykpIHsKQEAgLTM5MiwxMCArMzkyLDEwIEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2Jq
ZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBUcmF2ZXJz
CiAgICAgICAgICAgICBpZiAoKCFzdGF5V2l0aGluIHx8IG4tPnBhcmVudCgpICE9IHN0YXlXaXRo
aW4pKQogICAgICAgICAgICAgICAgIG4gPSBuLT5wYXJlbnQoKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogc3RhdGljIFJlbmRlck9iamVjdDo6QmxvY2tDb250ZW50SGVpZ2h0VHlwZSBpbmNsdWRl
Tm9uRml4ZWRIZWlnaHQoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKQEAgLTUyMyw3ICs1
MjMsNyBAQCBzdGF0aWMgYm9vbCBoYXNGaXhlZFBvc0luTmFtZWRGbG93Q29udGFpbmluZ0Jsb2Nr
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAKIFJlbmRlckJsb2NrKiBSZW5kZXJPYmpl
Y3Q6OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogc3RhdGljIGlubGluZSBib29sIG9iamVjdElzUmVsYXlvdXRCb3VuZGFy
eShjb25zdCBSZW5kZXJFbGVtZW50KiBvYmplY3QpCkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6OmNvbnRhaW5lckZvclJlcGFpbnQoKSBj
b25zdAogICAgICAgICAgICAgcmV0dXJuIHJlcGFpbnRDb250YWluZXI7CiAgICAgICAgIC8vIElm
IHdlIGhhdmUgYWxyZWFkeSBmb3VuZCBhIHJlcGFpbnQgY29udGFpbmVyIHRoZW4gd2Ugd2lsbCBy
ZXBhaW50IGludG8gdGhhdCBjb250YWluZXIgb25seSBpZiBpdCBpcyBwYXJ0IG9mIHRoZSBzYW1l
CiAgICAgICAgIC8vIGZsb3cgdGhyZWFkLiBPdGhlcndpc2Ugd2Ugd2lsbCBuZWVkIHRvIGNhdGNo
IHRoZSByZXBhaW50IGNhbGwgYW5kIHNlbmQgaXQgdG8gdGhlIGZsb3cgdGhyZWFkLgotICAgICAg
ICBSZW5kZXJGbG93VGhyZWFkKiByZXBhaW50Q29udGFpbmVyRmxvd1RocmVhZCA9IHJlcGFpbnRD
b250YWluZXIgPyByZXBhaW50Q29udGFpbmVyLT5mbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkg
OiAwOworICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiByZXBhaW50Q29udGFpbmVyRmxvd1RocmVh
ZCA9IHJlcGFpbnRDb250YWluZXIgPyByZXBhaW50Q29udGFpbmVyLT5mbG93VGhyZWFkQ29udGFp
bmluZ0Jsb2NrKCkgOiBudWxscHRyOwogICAgICAgICBpZiAoIXJlcGFpbnRDb250YWluZXJGbG93
VGhyZWFkIHx8IHJlcGFpbnRDb250YWluZXJGbG93VGhyZWFkICE9IHBhcmVudFJlbmRlckZsb3dU
aHJlYWQpCiAgICAgICAgICAgICByZXBhaW50Q29udGFpbmVyID0gcGFyZW50UmVuZGVyRmxvd1Ro
cmVhZDsKICAgICB9CkBAIC0xNTQ4LDcgKzE1NDgsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2hv
d1JlbmRlclN1YlRyZWVBbmRNYXJrKGNvbnN0IFJlbmRlck9iamVjdCogbWFya2VkT2JqZWN0LCBp
bgogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5kZWZpbmVkLWJvb2wtY29udmVy
c2lvbiIKICNlbmRpZgotICAgIC8vIEFzIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUg
dXNlZCB3aGVuIGRlYnVnZ2luZywgdGhlIHx0aGlzfCBwb2ludGVyIG1heSBiZSAwLgorICAgIC8v
IEFzIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aGVuIGRlYnVnZ2luZywg
dGhlIHx0aGlzfCBwb2ludGVyIG1heSBiZSBudWxscHRyLgogICAgIGlmICghdGhpcykKICAgICAg
ICAgcmV0dXJuOwogI2lmIENPTVBJTEVSKENMQU5HKQpAQCAtMTU4Miw3ICsxNTgyLDcgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvblN0YXJ0RW5kKGludCYgc3BvcywgaW50JiBlcG9zKSBj
b25zdAogRmxvYXRQb2ludCBSZW5kZXJPYmplY3Q6OmxvY2FsVG9BYnNvbHV0ZShjb25zdCBGbG9h
dFBvaW50JiBsb2NhbFBvaW50LCBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUpIGNvbnN0CiB7CiAg
ICAgVHJhbnNmb3JtU3RhdGUgdHJhbnNmb3JtU3RhdGUoVHJhbnNmb3JtU3RhdGU6OkFwcGx5VHJh
bnNmb3JtRGlyZWN0aW9uLCBsb2NhbFBvaW50KTsKLSAgICBtYXBMb2NhbFRvQ29udGFpbmVyKDAs
IHRyYW5zZm9ybVN0YXRlLCBtb2RlIHwgQXBwbHlDb250YWluZXJGbGlwKTsKKyAgICBtYXBMb2Nh
bFRvQ29udGFpbmVyKG51bGxwdHIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlIHwgQXBwbHlDb250YWlu
ZXJGbGlwKTsKICAgICB0cmFuc2Zvcm1TdGF0ZS5mbGF0dGVuKCk7CiAgICAgCiAgICAgcmV0dXJu
IHRyYW5zZm9ybVN0YXRlLmxhc3RQbGFuYXJQb2ludCgpOwpAQCAtMTgxNiw3ICsxODE2LDcgQEAg
UmVuZGVyRWxlbWVudCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnQKICAgICAgICAgLy8gY2FuJ3QgZ2V0IGJhY2sgdG8gdGhl
IGNhbnZhcy4gIEluc3RlYWQgd2UganVzdCB3YWxrIGFzIGhpZ2ggdXAKICAgICAgICAgLy8gYXMg
d2UgY2FuLiAgSWYgd2UncmUgaW4gdGhlIHRyZWUsIHdlJ2xsIGdldCB0aGUgcm9vdC4gIElmIHdl
CiAgICAgICAgIC8vIGFyZW4ndCB3ZSdsbCBnZXQgdGhlIHJvb3Qgb2Ygb3VyIGxpdHRsZSBzdWJ0
cmVlIChtb3N0IGxpa2VseQotICAgICAgICAvLyB3ZSdsbCBqdXN0IHJldHVybiAwKS4KKyAgICAg
ICAgLy8gd2UnbGwganVzdCByZXR1cm4gbnVsbHB0cikuCiAgICAgICAgIC8vIEZJWE1FOiBUaGUg
ZGVmaW5pdGlvbiBvZiB2aWV3KCkgaGFzIGNoYW5nZWQgdG8gbm90IGNyYXdsIHVwIHRoZSByZW5k
ZXIgdHJlZS4gIEl0IG1pZ2h0CiAgICAgICAgIC8vIGJlIHNhZmUgbm93IHRvIHVzZSBpdC4KICAg
ICAgICAgLy8gRklYTUU6IHNoYXJlIGNvZGUgd2l0aCBjb250YWluaW5nQmxvY2tGb3JGaXhlZFBv
c2l0aW9uKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggYWNm
YTE0ZTdlOTJkMjE4MGUzNGUwYWZlOTM4MzQyNTZkZDc0YWRiZC4uMGQ4NWExNzdmNWE1YjA3MDVm
MDRkZjQ4MDRhZGNiZTUxMWJhMjZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaApAQCAtNDk2LDcgKzQ5Niw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRWxlbWVudENv
bnRpbnVhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPnJlbmRlcmVyKCkg
IT0gdGhpczsgfQogICAgIGJvb2wgaXNJbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gaXNFbGVtZW50Q29udGludWF0aW9uKCkgJiYgaXNJbmxpbmUoKTsgfQogICAgIGJv
b2wgaXNCbG9ja0VsZW1lbnRDb250aW51YXRpb24oKSBjb25zdCB7IHJldHVybiBpc0VsZW1lbnRD
b250aW51YXRpb24oKSAmJiAhaXNJbmxpbmUoKTsgfQotICAgIHZpcnR1YWwgUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHZpcnR1YWxDb250aW51YXRpb24oKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBSZW5kZXJCb3hNb2RlbE9iamVjdCogdmlydHVhbENvbnRpbnVhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIGJvb2wgaXNGbG9hdGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fYml0ZmllbGRzLmZsb2F0aW5nKCk7IH0KIApAQCAtNTY0LDEwICs1NjQsMTAgQEAgcHVi
bGljOgogICAgIFJlbmRlclZpZXcmIHZpZXcoKSBjb25zdCB7IHJldHVybiAqZG9jdW1lbnQoKS5y
ZW5kZXJWaWV3KCk7IH07CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyByZW5kZXJlciBp
cyByb290ZWQsIGFuZCBvcHRpb25hbGx5IHJldHVybnMgdGhlIGhvc3RpbmcgdmlldyAodGhlIHJv
b3Qgb2YgdGhlIGhpZXJhcmNoeSkuCi0gICAgYm9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSAw
KSBjb25zdDsKKyAgICBib29sIGlzUm9vdGVkKFJlbmRlclZpZXcqKiA9IG51bGxwdHIpIGNvbnN0
OwogCi0gICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAwIDog
Jm1fbm9kZTsgfQotICAgIE5vZGUqIG5vblBzZXVkb05vZGUoKSBjb25zdCB7IHJldHVybiBpc1Bz
ZXVkb0VsZW1lbnQoKSA/IDAgOiBub2RlKCk7IH0KKyAgICBOb2RlKiBub2RlKCkgY29uc3QgeyBy
ZXR1cm4gaXNBbm9ueW1vdXMoKSA/IG51bGxwdHIgOiAmbV9ub2RlOyB9CisgICAgTm9kZSogbm9u
UHNldWRvTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzUHNldWRvRWxlbWVudCgpID8gbnVsbHB0ciA6
IG5vZGUoKTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgc3R5bGVkIG5vZGUgdGhhdCBjYXVzZWQg
dGhlIGdlbmVyYXRpb24gb2YgdGhpcyByZW5kZXJlci4KICAgICAvLyBUaGlzIGlzIHRoZSBzYW1l
IGFzIG5vZGUoKSBleGNlcHQgZm9yIHJlbmRlcmVycyBvZiA6YmVmb3JlIGFuZCA6YWZ0ZXIKQEAg
LTU3NSw3ICs1NzUsNyBAQCBwdWJsaWM6CiAgICAgTm9kZSogZ2VuZXJhdGluZ05vZGUoKSBjb25z
dCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IGdlbmVyYXRpbmdQc2V1ZG9Ib3N0RWxlbWVu
dCgpIDogbm9kZSgpOyB9CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX25vZGUuZG9jdW1lbnQoKTsgfQotICAgIEZyYW1lJiBmcmFtZSgpIGNvbnN0OyAvLyBEZWZp
bmVkIGluIFJlbmRlclZpZXcuaAorICAgIEZyYW1lJiBmcmFtZSgpIGNvbnN0OwogCiAgICAgYm9v
bCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaGFzT3V0bGluZSgpIGNv
bnN0IHsgcmV0dXJuIHN0eWxlKCkuaGFzT3V0bGluZSgpIHx8IGhhc091dGxpbmVBbm5vdGF0aW9u
KCk7IH0KQEAgLTU4MywxMSArNTgzLDExIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBv
YmplY3QgY29udGFpbmluZyB0aGlzIG9uZS4gQ2FuIGJlIGRpZmZlcmVudCBmcm9tIHBhcmVudCBm
b3IgcG9zaXRpb25lZCBlbGVtZW50cy4KICAgICAvLyBJZiByZXBhaW50Q29udGFpbmVyIGFuZCBy
ZXBhaW50Q29udGFpbmVyU2tpcHBlZCBhcmUgbm90IG51bGwsIG9uIHJldHVybiAqcmVwYWludENv
bnRhaW5lclNraXBwZWQKICAgICAvLyBpcyB0cnVlIGlmIHRoZSByZW5kZXJlciByZXR1cm5lZCBp
cyBhbiBhbmNlc3RvciBvZiByZXBhaW50Q29udGFpbmVyLgotICAgIFJlbmRlckVsZW1lbnQqIGNv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0g
MCwgYm9vbCogcmVwYWludENvbnRhaW5lclNraXBwZWQgPSAwKSBjb25zdDsKKyAgICBSZW5kZXJF
bGVtZW50KiBjb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciA9IG51bGxwdHIsIGJvb2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkID0gbnVsbHB0
cikgY29uc3Q7CiAKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2Zmc2V0UGFyZW50KCkgY29u
c3Q7CiAKLSAgICB2b2lkIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGJvb2wgc2NoZWR1
bGVSZWxheW91dCA9IHRydWUsIFJlbmRlckVsZW1lbnQqIG5ld1Jvb3QgPSAwKTsKKyAgICB2b2lk
IG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGJvb2wgc2NoZWR1bGVSZWxheW91dCA9IHRy
dWUsIFJlbmRlckVsZW1lbnQqIG5ld1Jvb3QgPSBudWxscHRyKTsKICAgICB2b2lkIHNldE5lZWRz
TGF5b3V0KE1hcmtpbmdCZWhhdmlvciA9IE1hcmtDb250YWluaW5nQmxvY2tDaGFpbik7CiAgICAg
dm9pZCBjbGVhck5lZWRzTGF5b3V0KCk7CiAgICAgdm9pZCBzZXRQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzRGlydHkoYm9vbCwgTWFya2luZ0JlaGF2aW9yID0gTWFya0NvbnRhaW5pbmdCbG9ja0NoYWlu
KTsKQEAgLTY1NiwyMCArNjU2LDIwIEBAIHB1YmxpYzoKICAgICBGbG9hdFBvaW50IGFic29sdXRl
VG9Mb2NhbChjb25zdCBGbG9hdFBvaW50JiwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IDApIGNvbnN0
OwogCiAgICAgLy8gQ29udmVydCBhIGxvY2FsIHF1YWQgdG8gYWJzb2x1dGUgY29vcmRpbmF0ZXMs
IHRha2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICBGbG9hdFF1YWQgbG9jYWxUb0Fi
c29sdXRlUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9k
ZSA9IDAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3QKKyAgICBGbG9hdFF1YWQgbG9jYWxUb0Fi
c29sdXRlUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQsIE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9k
ZSA9IDAsIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBsb2NhbFRvQ29udGFpbmVyUXVhZChxdWFkLCAwLCBtb2RlLCB3YXNGaXhlZCk7CisgICAg
ICAgIHJldHVybiBsb2NhbFRvQ29udGFpbmVyUXVhZChxdWFkLCBudWxscHRyLCBtb2RlLCB3YXNG
aXhlZCk7CiAgICAgfQogICAgIC8vIENvbnZlcnQgYW4gYWJzb2x1dGUgcXVhZCB0byBsb2NhbCBj
b29yZGluYXRlcy4KICAgICBGbG9hdFF1YWQgYWJzb2x1dGVUb0xvY2FsUXVhZChjb25zdCBGbG9h
dFF1YWQmLCBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUgPSAwKSBjb25zdDsKIAogICAgIC8vIENv
bnZlcnQgYSBsb2NhbCBxdWFkIGludG8gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIGNvbnRhaW5l
ciwgdGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LgotICAgIFdFQkNPUkVfRVhQT1JUIEZs
b2F0UXVhZCBsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBNYXBDb29yZGluYXRlc0ZsYWdz
ID0gMCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9h
dFBvaW50IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTWFwQ29vcmRpbmF0ZXNGbGFn
cyA9IDAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRmxv
YXRRdWFkIGxvY2FsVG9Db250YWluZXJRdWFkKGNvbnN0IEZsb2F0UXVhZCYsIGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIE1hcENvb3JkaW5hdGVzRmxhZ3Mg
PSAwLCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IEZsb2F0UG9pbnQgbG9jYWxUb0NvbnRhaW5lclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBNYXBDb29yZGluYXRl
c0ZsYWdzID0gMCwgYm9vbCogd2FzRml4ZWQgPSBudWxscHRyKSBjb25zdDsKIAogICAgIC8vIFJl
dHVybiB0aGUgb2Zmc2V0IGZyb20gdGhlIGNvbnRhaW5lcigpIHJlbmRlcmVyIChleGNsdWRpbmcg
dHJhbnNmb3JtcykuIEluIG11bHRpLWNvbHVtbiBsYXlvdXQsCiAgICAgLy8gZGlmZmVyZW50IG9m
ZnNldHMgYXBwbHkgYXQgZGlmZmVyZW50IHBvaW50cywgc28gcmV0dXJuIHRoZSBvZmZzZXQgdGhh
dCBhcHBsaWVzIHRvIHRoZSBnaXZlbiBwb2ludC4KLSAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zm
c2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29s
KiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IDApIGNvbnN0OworICAgIHZpcnR1YWwgTGF5b3V0U2l6
ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRQb2ludCYs
IGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0cikgY29uc3Q7CiAgICAgLy8gUmV0
dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBB
c3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zv
cm1zLgogICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlckVs
ZW1lbnQmKSBjb25zdDsKIApAQCAtNjg1LDcgKzY4NSw3IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1
cm4gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOyB9CiAKICAgICAvLyBCdWlsZCBhbiBh
cnJheSBvZiBxdWFkcyBpbiBhYnNvbHV0ZSBjb29yZHMgZm9yIGxpbmUgYm94ZXMKLSAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4
ZWQqLyA9IDApIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gbnVsbHB0cikgY29uc3QgeyB9CiAK
ICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFk
PiYpOwogCkBAIC03MDksMTIgKzcwOSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRUZXh0RGVj
b3JhdGlvbkNvbG9yc0FuZFN0eWxlcyhpbnQgZGVjb3JhdGlvbnMsIENvbG9yJiB1bmRlcmxpbmVD
b2xvciwgQ29sb3ImIG92ZXJsaW5lQ29sb3IsIENvbG9yJiBsaW5ldGhyb3VnaENvbG9yLAogICAg
ICAgICBUZXh0RGVjb3JhdGlvblN0eWxlJiB1bmRlcmxpbmVTdHlsZSwgVGV4dERlY29yYXRpb25T
dHlsZSYgb3ZlcmxpbmVTdHlsZSwgVGV4dERlY29yYXRpb25TdHlsZSYgbGluZXRocm91Z2hTdHls
ZSwgYm9vbCBmaXJzdGxpbmVTdHlsZSA9IGZhbHNlKTsKIAotICAgIC8vIFJldHVybiB0aGUgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdoaWNoIGlzIHJlc3Bv
bnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgMAorICAgIC8vIFJldHVybiB0aGUg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCBpbiB0aGUgY29udGFpbmVyIGNoYWluIHdoaWNoIGlzIHJl
c3BvbnNpYmxlIGZvciBwYWludGluZyB0aGlzIG9iamVjdCwgb3IgbnVsbHB0cgogICAgIC8vIGlm
IHBhaW50aW5nIGlzIHJvb3QtcmVsYXRpdmUuIFRoaXMgaXMgdGhlIGNvbnRhaW5lciB0aGF0IHNo
b3VsZCBiZSBwYXNzZWQgdG8gdGhlICdmb3JSZXBhaW50JwogICAgIC8vIG1ldGhvZHMuCiAgICAg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyRm9yUmVwYWludCgpIGNvbnN0OwogICAg
IC8vIEFjdHVhbGx5IGRvIHRoZSByZXBhaW50IG9mIHJlY3QgciBmb3IgdGhpcyBvYmplY3Qgd2hp
Y2ggaGFzIGJlZW4gY29tcHV0ZWQgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2UKLSAgICAvLyBvZiBy
ZXBhaW50Q29udGFpbmVyLiBJZiByZXBhaW50Q29udGFpbmVyIGlzIDAsIHJlcGFpbnQgdmlhIHRo
ZSB2aWV3LgorICAgIC8vIG9mIHJlcGFpbnRDb250YWluZXIuIElmIHJlcGFpbnRDb250YWluZXIg
aXMgbnVsbHB0ciwgcmVwYWludCB2aWEgdGhlIHZpZXcuCiAgICAgdm9pZCByZXBhaW50VXNpbmdD
b250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgc2hvdWxkQ2xpcFRvTGF5ZXIgPSB0cnVlKSBjb25zdDsK
ICAgICAKICAgICAvLyBSZXBhaW50IHRoZSBlbnRpcmUgb2JqZWN0LiAgQ2FsbGVkIHdoZW4sIGUu
Zy4sIHRoZSBjb2xvciBvZiBhIGJvcmRlciBjaGFuZ2VzLCBvciB3aGVuIGEgYm9yZGVyCkBAIC03
MzMsMTggKzczMywxOCBAQCBwdWJsaWM6CiAgICAgLy8gY29vcmRpbmF0ZSBzcGFjZS4gIFRoaXMg
bWV0aG9kIGRlYWxzIHdpdGggb3V0bGluZXMgYW5kIG92ZXJmbG93LgogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgwKTsKKyAgICAgICAgcmV0dXJuIGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KG51bGxwdHIpOwogICAgIH0KICAgICBXRUJDT1JFX0VY
UE9SVCBJbnRSZWN0IHBpeGVsU25hcHBlZEFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdDsK
ICAgICB2aXJ0dWFsIExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxp
bmVXaWR0aCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciov
LCBjb25zdCBSZW5kZXJHZW9tZXRyeU1hcCogPSAwKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0
KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIGNvbnN0IFJl
bmRlckdlb21ldHJ5TWFwKiA9IG51bGxwdHIpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsg
fQogCiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNl
LCBjb21wdXRlIGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVj
dCBpbiB2aWV3IGNvb3JkaW5hdGVzLgogICAgIHZvaWQgY29tcHV0ZUFic29sdXRlUmVwYWludFJl
Y3QoTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdAogICAgIHsKLSAgICAg
ICAgY29tcHV0ZVJlY3RGb3JSZXBhaW50KDAsIHIsIGZpeGVkKTsKKyAgICAgICAgY29tcHV0ZVJl
Y3RGb3JSZXBhaW50KG51bGxwdHIsIHIsIGZpeGVkKTsKICAgICB9CiAgICAgLy8gR2l2ZW4gYSBy
ZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRlIGEgcmVjdCBzdWl0
YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB0aGUgY29vcmRpbmF0ZSBz
cGFjZSBvZiByZXBhaW50Q29udGFpbmVyLgpAQCAtNzc3LDcgKzc3Nyw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEEgc2luZ2xlIHJlY3RhbmdsZSB0aGF0IGVuY29tcGFzc2VzIGFsbCBvZiB0aGUgc2Vs
ZWN0ZWQgb2JqZWN0cyB3aXRoaW4gdGhpcyBvYmplY3QuICBVc2VkIHRvIGRldGVybWluZSB0aGUg
dGlnaHRlc3QKICAgICAvLyBwb3NzaWJsZSBib3VuZGluZyBib3ggZm9yIHRoZSBzZWxlY3Rpb24u
Ci0gICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQg
PSB0cnVlKSB7IHJldHVybiBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludCgwLCBjbGlwVG9WaXNpYmxl
Q29udGVudCk7IH0KKyAgICBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3QoYm9vbCBjbGlwVG9WaXNp
YmxlQ29udGVudCA9IHRydWUpIHsgcmV0dXJuIHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KG51bGxw
dHIsIGNsaXBUb1Zpc2libGVDb250ZW50KTsgfQogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzZWxl
Y3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKnJlcGFp
bnRDb250YWluZXIqLywgYm9vbCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8gPSB0cnVlKSB7IHJl
dHVybiBMYXlvdXRSZWN0KCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxl
YWYoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNzkyLDcgKzc5Miw3IEBAIHB1YmxpYzoK
ICAgICAgKiBAcGFyYW0gZXh0cmFXaWR0aFRvRW5kT2ZMaW5lIG9wdGlvbmFsIG91dCBhcmcgdG8g
Z2l2ZSBleHRyYSB3aWR0aCB0byBlbmQgb2YgbGluZSAtCiAgICAgICogdXNlZnVsIGZvciBjaGFy
YWN0ZXIgcmFuZ2UgcmVjdCBjb21wdXRhdGlvbnMKICAgICAgKi8KLSAgICB2aXJ0dWFsIExheW91
dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRV
bml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwKTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
bG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBl
eHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBudWxscHRyKTsKIAogICAgIC8vIFdoZW4gcGVyZm9ybWlu
ZyBhIGdsb2JhbCBkb2N1bWVudCB0ZWFyLWRvd24sIHRoZSByZW5kZXJlciBvZiB0aGUgZG9jdW1l
bnQgaXMgY2xlYXJlZC4gIFdlIHVzZSB0aGlzCiAgICAgLy8gYXMgYSBob29rIHRvIGRldGVjdCB0
aGUgY2FzZSBvZiBkb2N1bWVudCBkZXN0cnVjdGlvbiBhbmQgZG9uJ3Qgd2FzdGUgdGltZSBkb2lu
ZyB1bm5lY2Vzc2FyeSB3b3JrLgpAQCAtODIxLDggKzgyMSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGludCBwcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVsZXRpb24oaW50IGN1cnJlbnQpIGNv
bnN0OwogICAgIHZpcnR1YWwgaW50IG5leHRPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3Qq
ID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1h
Z2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hh
bmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJl
Y3QqID0gbnVsbHB0cikgeyB9CiAKICAgICBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgc2VsZWN0aW9u
Um9vdCgpIGNvbnN0OwogICAgIHZvaWQgc2VsZWN0aW9uU3RhcnRFbmQoaW50JiBzcG9zLCBpbnQm
IGVwb3MpIGNvbnN0OwpAQCAtODMzLDcgKzgzMyw3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1hcCBw
b2ludHMgYW5kIHF1YWRzIHRocm91Z2ggZWxlbWVudHMsIHBvdGVudGlhbGx5IHZpYSAzZCB0cmFu
c2Zvcm1zLiBZb3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gY2FsbCB0aGVzZSBkaXJlY3RseTsgdXNl
CiAgICAgLy8gbG9jYWxUb0Fic29sdXRlL2Fic29sdXRlVG9Mb2NhbCBtZXRob2RzIGluc3RlYWQu
Ci0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGlu
YXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRp
bmF0ZXNGbGFncyA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSBudWxscHRy
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29v
cmRpbmF0ZXNGbGFncywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKIAogICAgIC8vIFB1c2hlcyBz
dGF0ZSBvbnRvIFJlbmRlckdlb21ldHJ5TWFwIGFib3V0IGhvdyB0byBtYXAgY29vcmRpbmF0ZXMg
ZnJvbSB0aGlzIHJlbmRlcmVyIHRvIGl0cyBjb250YWluZXIsIG9yIGFuY2VzdG9yVG9TdG9wQXQg
KHdoaWNoZXZlciBpcyBlbmNvdW50ZXJlZCBmaXJzdCkuCkBAIC04NDMsMTEgKzg0MywxMSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzaG91bGRVc2VUcmFuc2Zvcm1Gcm9tQ29udGFpbmVyKGNvbnN0IFJl
bmRlck9iamVjdCogY29udGFpbmVyKSBjb25zdDsKICAgICB2b2lkIGdldFRyYW5zZm9ybUZyb21D
b250YWluZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBjb250YWluZXIsIGNvbnN0IExheW91dFNpemUm
IG9mZnNldEluQ29udGFpbmVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0OwogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25z
dCBMYXlvdXRQb2ludCYgLyogYWRkaXRpb25hbE9mZnNldCAqLywgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogLyogcGFpbnRDb250YWluZXIgKi8gPSAwKSB7IH07CisgICAgdmlydHVhbCB2
b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JiAvKiBhZGRpdGlvbmFsT2Zmc2V0ICovLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAv
KiBwYWludENvbnRhaW5lciAqLyA9IG51bGxwdHIpIHsgfTsKIAogICAgIExheW91dFJlY3QgYWJz
b2x1dGVPdXRsaW5lQm91bmRzKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBvdXRsaW5l
Qm91bmRzRm9yUmVwYWludCgwKTsKKyAgICAgICAgcmV0dXJuIG91dGxpbmVCb3VuZHNGb3JSZXBh
aW50KG51bGxwdHIpOwogICAgIH0KIAogICAgIFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uRW51bSBz
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDRhMzVhMDEwZDljOTEwYTE1N2Q4MDNmZDI3YjU2Njk4
OTgwNWIxZDguLjRmMzM5MTk0MmM0YTBhYTM0NmU3MmZiOTA4NGQzZWE3NDhhMWRmODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3Ry
dWN0IFNlbGVjdGlvbkl0ZXJhdG9yIHsKICAgICAKICAgICBSZW5kZXJPYmplY3QqIG5leHQoKQog
ICAgIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50U3BhbiA9IG1fc3Bhbm5lclN0YWNr
LmlzRW1wdHkoKSA/IDAgOiBtX3NwYW5uZXJTdGFjay5sYXN0KCktPnNwYW5uZXIoKTsKKyAgICAg
ICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50U3BhbiA9IG1fc3Bhbm5lclN0YWNrLmlzRW1wdHkoKSA/
IG51bGxwdHIgOiBtX3NwYW5uZXJTdGFjay5sYXN0KCktPnNwYW5uZXIoKTsKICAgICAgICAgbV9j
dXJyZW50ID0gbV9jdXJyZW50LT5uZXh0SW5QcmVPcmRlcihjdXJyZW50U3Bhbik7CiAgICAgICAg
IGNoZWNrRm9yU3Bhbm5lcigpOwogICAgICAgICBpZiAoIW1fY3VycmVudCAmJiBjdXJyZW50U3Bh
bikgewpAQCAtOTYsOCArOTYsOCBAQCBzdHJ1Y3QgU2VsZWN0aW9uSXRlcmF0b3IgewogUmVuZGVy
Vmlldzo6UmVuZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
ICAgICAsIG1fZnJhbWVWaWV3KCpkb2N1bWVudC52aWV3KCkpCi0gICAgLCBtX3NlbGVjdGlvblVu
c3BsaXRTdGFydCgwKQotICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0RW5kKDApCisgICAgLCBtX3Nl
bGVjdGlvblVuc3BsaXRTdGFydChudWxscHRyKQorICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0RW5k
KG51bGxwdHIpCiAgICAgLCBtX3NlbGVjdGlvblVuc3BsaXRTdGFydFBvcygtMSkKICAgICAsIG1f
c2VsZWN0aW9uVW5zcGxpdEVuZFBvcygtMSkKICAgICAsIG1fcmVuZGVyZXJDb3VudCgwKQpAQCAt
MTA3LDcgKzEwNyw3IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCiAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hh
bmdlZChmYWxzZSkKICAgICAsIG1fbGF5b3V0U3RhdGUobnVsbHB0cikKICAgICAsIG1fbGF5b3V0
U3RhdGVEaXNhYmxlQ291bnQoMCkKLSAgICAsIG1fcmVuZGVyUXVvdGVIZWFkKDApCisgICAgLCBt
X3JlbmRlclF1b3RlSGVhZChudWxscHRyKQogICAgICwgbV9yZW5kZXJDb3VudGVyQ291bnQoMCkK
ICAgICAsIG1fc2VsZWN0aW9uV2FzQ2FyZXQoZmFsc2UpCiAgICAgLCBtX2hhc1NvZnR3YXJlRmls
dGVycyhmYWxzZSkKQEAgLTQxNSw3ICs0MTUsNyBAQCBzdGF0aWMgaW5saW5lIExheW91dFNpemUg
Zml4ZWRQb3NpdGlvbk9mZnNldChjb25zdCBGcmFtZVZpZXcmIGZyYW1lVmlldykKIAogdm9pZCBS
ZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSwgTWFw
Q29vcmRpbmF0ZXNGbGFncyBtb2RlLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICAvLyBJ
ZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJW
aWV3LAorICAgIC8vIElmIGEgY29udGFpbmVyIHdhcyBzcGVjaWZpZWQsIGFuZCB3YXMgbm90IG51
bGxwdHIgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgaGF2ZSBmb3Vu
ZCBpdCBieSBub3cuCiAgICAgQVNTRVJUX0FSRyhyZXBhaW50Q29udGFpbmVyLCAhcmVwYWludENv
bnRhaW5lciB8fCByZXBhaW50Q29udGFpbmVyID09IHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQo
d2FzRml4ZWQsICF3YXNGaXhlZCB8fCAqd2FzRml4ZWQgPT0gKG1vZGUgJiBJc0ZpeGVkKSk7CkBA
IC00MzYsNyArNDM2LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjptYXBMb2NhbFRvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWkKIAogY29uc3QgUmVuZGVy
T2JqZWN0KiBSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJiBnZW9t
ZXRyeU1hcCkgY29uc3QKIHsKLSAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBh
bmQgd2FzIG5vdCAwIG9yIHRoZSBSZW5kZXJWaWV3LAorICAgIC8vIElmIGEgY29udGFpbmVyIHdh
cyBzcGVjaWZpZWQsIGFuZCB3YXMgbm90IG51bGxwdHIgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAg
Ly8gdGhlbiB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBpdCBieSBub3cuCiAgICAgQVNTRVJUX0FSRyhh
bmNlc3RvclRvU3RvcEF0LCAhYW5jZXN0b3JUb1N0b3BBdCB8fCBhbmNlc3RvclRvU3RvcEF0ID09
IHRoaXMpOwogCkBAIC00NTMsNyArNDUzLDcgQEAgY29uc3QgUmVuZGVyT2JqZWN0KiBSZW5kZXJW
aWV3OjpwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmoKICAg
ICB9IGVsc2UKICAgICAgICAgZ2VvbWV0cnlNYXAucHVzaFZpZXcodGhpcywgc2Nyb2xsT2Zmc2V0
KTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIFJlbmRl
clZpZXc6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9kZSwg
VHJhbnNmb3JtU3RhdGUmIHRyYW5zZm9ybVN0YXRlKSBjb25zdApAQCAtNjgxLDcgKzY4MSw3IEBA
IExheW91dFJlY3QgUmVuZGVyVmlldzo6dmlzdWFsT3ZlcmZsb3dSZWN0KCkgY29uc3QKIAogdm9p
ZCBSZW5kZXJWaWV3Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkg
Y29uc3QKIHsKLSAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5v
dCAwIG9yIHRoZSBSZW5kZXJWaWV3LAorICAgIC8vIElmIGEgY29udGFpbmVyIHdhcyBzcGVjaWZp
ZWQsIGFuZCB3YXMgbm90IG51bGxwdHIgb3IgdGhlIFJlbmRlclZpZXcsCiAgICAgLy8gdGhlbiB3
ZSBzaG91bGQgaGF2ZSBmb3VuZCBpdCBieSBub3cuCiAgICAgQVNTRVJUX0FSRyhyZXBhaW50Q29u
dGFpbmVyLCAhcmVwYWludENvbnRhaW5lciB8fCByZXBhaW50Q29udGFpbmVyID09IHRoaXMpOwog
CkBAIC03MzMsNyArNzMzLDcgQEAgdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiBzdGF0aWMgUmVuZGVy
T2JqZWN0KiByZW5kZXJlckFmdGVyUG9zaXRpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2ln
bmVkIG9mZnNldCkKIHsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVuZGVyT2JqZWN0KiBjaGlsZCA9IG9iamVjdC0+
Y2hpbGRBdChvZmZzZXQpOwogICAgIHJldHVybiBjaGlsZCA/IGNoaWxkIDogb2JqZWN0LT5uZXh0
SW5QcmVPcmRlckFmdGVyQ2hpbGRyZW4oKTsKQEAgLTExMjYsNyArMTEyNiw3IEBAIEludFJlY3Qg
UmVuZGVyVmlldzo6dW5zY2FsZWREb2N1bWVudFJlY3QoKSBjb25zdAogCiBib29sIFJlbmRlclZp
ZXc6OnJvb3RCYWNrZ3JvdW5kSXNFbnRpcmVseUZpeGVkKCkgY29uc3QKIHsKLSAgICBSZW5kZXJF
bGVtZW50KiByb290T2JqZWN0ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiAwOworICAgIFJlbmRlckVsZW1l
bnQqIHJvb3RPYmplY3QgPSBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQo
KS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFyb290
T2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCmluZGV4IGQ0YzM2OTBjMjE2MmRiYzQwM2E2MWVhZWJiMWExNTE0NWQ1NTQ1YWMu
LmFiMDQ3ZDQyNzM3YzhiYTdkNmQ5N2QxMDEyMTVmOGVhMGYwODViODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjQzLDcgKzI0Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVuc2NoZWR1bGVMYXp5UmVwYWludChSZW5kZXJCb3gmKTsKIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNG
bGFncyA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENv
b3JkaW5hdGVzRmxhZ3MgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gbnVs
bHB0cikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1
c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0
b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncywgVHJh
bnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXND
b2x1bW5zKGludCBkZXNpcmVkQ29sdW1uQ291bnQpIGNvbnN0IG92ZXJyaWRlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247244</attachid>
            <date>2015-02-24 10:34:52 -0800</date>
            <delta_ts>2015-02-24 10:46:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141974-20150224103440.patch</filename>
            <type>text/plain</type>
            <size>39543</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThjYjljY2JjYTM5YTE2
NWUzYWU2ZGVkMjQ2NTBmM2EzZGRhNzUxZS4uMzJkNzRhZjQ3Njg4ZWZiNWYwZThmMTA1MjE0NGU5
ZmEzMzYzMzlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE1LTAyLTI0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBudWxscHRy
IGluIG1vcmUgcGxhY2VzIGluIEZyYW1lVmlldywgUmVuZGVyVmlldywgUmVuZGVyT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5NzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAwIC0+IG51bGxw
dHIgaW4gRnJhbWVWaWV3LmgvY3BwLCBSZW5kZXJWaWV3LmgvY3BwLCBSZW5kZXJPYmplY3QuaC9j
cHAuCisgICAgICAgIAorICAgICAgICBSZW5hbWUgRnJhbWVWaWV3OjptX2RlZmVyU2V0TmVlZHNM
YXlvdXRzIHRvIEZyYW1lVmlldzo6bV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQKKyAgICAgICAg
dG8gbWFrZSBpdCBtb3JlIGNsZWFyIHRoYXQgaXQncyBhIGNvdW50LgorCisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpGcmFtZVZpZXcp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnNldENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6bGF5ZXJGb3JTY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6bGF5ZXJGb3JTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp0aWxlZEJhY2tpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxM
YXllcklEKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5ZXJGb3JPdmVyaGFuZ0Fy
ZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0V2FudHNMYXllckZvclRvcE92
ZXJIYW5nQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFdhbnRzTGF5ZXJG
b3JCb3R0b21PdmVySGFuZ0FyZWEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpoYXND
b21wb3NpdGVkQ29udGVudEluY2x1ZGluZ0Rlc2NlbmRhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6bGF5b3V0Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZv
cmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6aG9zdFdpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpzY2hlZHVsZVJlbGF5b3V0T2ZTdWJ0cmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6bmVlZHNMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpzZXROZWVkc0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmVu
Y2xvc2luZ1Njcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFy
ZW50RnJhbWVWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250cm9s
VGludHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGp1c3RQYWdlSGVpZ2h0RGVw
cmVjYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmF4T2JqZWN0Q2FjaGUpOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om5leHRJblByZU9yZGVyQWZ0ZXJDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnByZXZpb3VzSW5QcmVPcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmZpcnN0TGVhZkNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bGFzdExlYWZDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnRyYXZlcnNlTmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmZpcnN0TGluZUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6Y29udGFpbmVyRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OnNob3dSZW5kZXJTdWJUcmVlQW5kTWFyayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmxvY2FsVG9BYnNvbHV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmNvbnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp2aXJ0dWFsQ29udGludWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6Om5vblBzZXVkb05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojps
b2NhbFRvQWJzb2x1dGVRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJz
b2x1dGVRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om91dGxp
bmVCb3VuZHNGb3JSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29t
cHV0ZUFic29sdXRlUmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
OjpzZWxlY3Rpb25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6aW1hZ2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkRm9jdXNSaW5nUmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZU91dGxpbmVCb3Vu
ZHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkl0ZXJhdG9yOjpuZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OlJlbmRlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6bWFwTG9jYWxU
b0NvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpwdXNoTWFwcGluZ1Rv
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlckFmdGVyUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cm9vdEJhY2tncm91bmRJc0VudGlyZWx5
Rml4ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisKIDIwMTUtMDItMjQg
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5u
IEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtTdHJlYW1z
IEFQSV0gUmVhZGluZyBSZWFkYWJsZVN0cmVhbSByZWFkeSBhbmQgY2xvc2VkIGF0dHJpYnV0ZXMg
c2hvdWxkIG5vdCBhbHdheXMgY3JlYXRlIGEgbmV3IHByb21pc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCAxMDg2NmFjZDIxNGI5NTU5NTdhYjQyYjRhM2I0MTFlN2MwYzBjNmU4Li44
MWFhYTk0NGJiNjk2NjdlZTIxYjVhNzRkMjJjMDhlZmRlZTk0NjNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC0xNjQsNyArMTY0LDcgQEAgRnJhbWVWaWV3OjpGcmFtZVZpZXcoRnJh
bWUmIGZyYW1lKQogICAgIDogbV9mcmFtZSgmZnJhbWUpCiAgICAgLCBtX2NhbkhhdmVTY3JvbGxi
YXJzKHRydWUpCiAgICAgLCBtX2xheW91dFRpbWVyKCp0aGlzLCAmRnJhbWVWaWV3OjpsYXlvdXRU
aW1lckZpcmVkKQotICAgICwgbV9sYXlvdXRSb290KDApCisgICAgLCBtX2xheW91dFJvb3QobnVs
bHB0cikKICAgICAsIG1fbGF5b3V0UGhhc2UoT3V0c2lkZUxheW91dCkKICAgICAsIG1faW5TeW5j
aHJvbm91c1Bvc3RMYXlvdXQoZmFsc2UpCiAgICAgLCBtX3Bvc3RMYXlvdXRUYXNrc1RpbWVyKCp0
aGlzLCAmRnJhbWVWaWV3Ojpwb3N0TGF5b3V0VGltZXJGaXJlZCkKQEAgLTE3Myw3ICsxNzMsNyBA
QCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAgLCBtX2Jhc2VCYWNrZ3Jv
dW5kQ29sb3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9tZWRpYVR5cGUoInNjcmVlbiIpCiAgICAg
LCBtX292ZXJmbG93U3RhdHVzRGlydHkodHJ1ZSkKLSAgICAsIG1fdmlld3BvcnRSZW5kZXJlcigw
KQorICAgICwgbV92aWV3cG9ydFJlbmRlcmVyKG51bGxwdHIpCiAgICAgLCBtX3dhc1Njcm9sbGVk
QnlVc2VyKGZhbHNlKQogICAgICwgbV9pblByb2dyYW1tYXRpY1Njcm9sbChmYWxzZSkKICAgICAs
IG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQodHJ1ZSkKQEAgLTE4MSw3ICsxODEsNyBA
QCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYgZnJhbWUpCiAgICAgLCBtX2lzVHJhY2tpbmdS
ZXBhaW50cyhmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3JlZW4odHJ1ZSkK
ICAgICAsIG1fZXhwb3NlZFJlY3QoRmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSkKLSAgICAsIG1f
ZGVmZXJTZXROZWVkc0xheW91dHMoMCkKKyAgICAsIG1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KDApCiAgICAgLCBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQoZmFsc2UpCiAgICAgLCBtX3Nw
ZWN1bGF0aXZlVGlsaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc3BlY3VsYXRpdmVUaWxpbmdF
bmFibGVUaW1lcigqdGhpcywgJkZyYW1lVmlldzo6c3BlY3VsYXRpdmVUaWxpbmdFbmFibGVUaW1l
ckZpcmVkKQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAg
bV9pc092ZXJsYXBwZWQgPSBmYWxzZTsKICAgICBtX2NvbnRlbnRJc09wYXF1ZSA9IGZhbHNlOwog
ICAgIG1fbGF5b3V0VGltZXIuc3RvcCgpOwotICAgIG1fbGF5b3V0Um9vdCA9IDA7CisgICAgbV9s
YXlvdXRSb290ID0gbnVsbHB0cjsKICAgICBtX2RlbGF5ZWRMYXlvdXQgPSBmYWxzZTsKICAgICBt
X25lZWRzRnVsbFJlcGFpbnQgPSB0cnVlOwogICAgIG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQg
PSB0cnVlOwpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRDb250ZW50c1Np
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoc2l6ZSA9PSBjb250ZW50c1NpemUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kZWZlclNldE5lZWRzTGF5b3V0cysrOworICAgIG1f
ZGVmZXJTZXROZWVkc0xheW91dENvdW50Kys7CiAKICAgICBTY3JvbGxWaWV3OjpzZXRDb250ZW50
c1NpemUoc2l6ZSk7CiAgICAgU2Nyb2xsVmlldzo6Y29udGVudHNSZXNpemVkKCk7CkBAIC01Nzks
MTAgKzU3OSwxMCBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Q29udGVudHNTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgZnJhbWUo
KS5tYWluRnJhbWUoKS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VEb2N1bWVudFNp
emUoKTsKIAotICAgIEFTU0VSVChtX2RlZmVyU2V0TmVlZHNMYXlvdXRzKTsKLSAgICBtX2RlZmVy
U2V0TmVlZHNMYXlvdXRzLS07CisgICAgQVNTRVJUKG1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KTsKKyAgICBtX2RlZmVyU2V0TmVlZHNMYXlvdXRDb3VudC0tOwogICAgIAotICAgIGlmICghbV9k
ZWZlclNldE5lZWRzTGF5b3V0cykKKyAgICBpZiAoIW1fZGVmZXJTZXROZWVkc0xheW91dENvdW50
KQogICAgICAgICBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQgPSBmYWxzZTsgLy8gRklYTUU6
IEZpbmQgYSB3YXkgdG8gbWFrZSB0aGUgZGVmZXJyZWQgbGF5b3V0IGFjdHVhbGx5IGhhcHBlbi4K
IH0KIApAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgRnJhbWVWaWV3OjphcHBseVBhZ2luYXRpb25U
b1ZpZXdwb3J0KCkKIAogdm9pZCBGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9y
TGF5b3V0KFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Nyb2xs
YmFyTW9kZXNDYWxjdWxhdGlvblN0cmF0ZWd5IHN0cmF0ZWd5KQogewotICAgIG1fdmlld3BvcnRS
ZW5kZXJlciA9IDA7CisgICAgbV92aWV3cG9ydFJlbmRlcmVyID0gbnVsbHB0cjsKIAogICAgIGNv
bnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBmcmFtZSgpLm93bmVyRWxlbWVudCgp
OwogICAgIGlmIChvd25lciAmJiAob3duZXItPnNjcm9sbGluZ01vZGUoKSA9PSBTY3JvbGxiYXJB
bHdheXNPZmYpKSB7CkBAIC03ODQsNyArNzg0LDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3
OjpsYXllckZvclNjcm9sbGluZygpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+
Y29tcG9zaXRvcigpLnNjcm9sbExheWVyKCk7CiB9CiAKQEAgLTc5Miw3ICs3OTIsNyBAQCBHcmFw
aGljc0xheWVyKiBGcmFtZVZpZXc6OmxheWVyRm9ySG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0
CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAg
ICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLmxheWVyRm9ySG9yaXpv
bnRhbFNjcm9sbGJhcigpOwogfQogCkBAIC04MDAsNyArODAwLDcgQEAgR3JhcGhpY3NMYXllciog
RnJhbWVWaWV3OjpsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVy
VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiByZW5kZXJWaWV3LT5jb21wb3NpdG9yKCkubGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigp
OwogfQogCkBAIC04MDgsNyArODA4LDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3OjpsYXll
ckZvclNjcm9sbENvcm5lcigpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9
IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29t
cG9zaXRvcigpLmxheWVyRm9yU2Nyb2xsQ29ybmVyKCk7CiB9CiAKQEAgLTgxNiwxMSArODE2LDEx
IEBAIFRpbGVkQmFja2luZyogRnJhbWVWaWV3Ojp0aWxlZEJhY2tpbmcoKSBjb25zdAogewogICAg
IFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFy
ZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSByZW5kZXJWaWV3LT5sYXllcigpLT5i
YWNraW5nKCk7CiAgICAgaWYgKCFiYWNraW5nKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT50
aWxlZEJhY2tpbmcoKTsKIH0KQEAgLTg1Miw3ICs4NTIsNyBAQCBHcmFwaGljc0xheWVyKiBGcmFt
ZVZpZXc6OmxheWVyRm9yT3ZlcmhhbmdBcmVhcygpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJlbmRlclZpZXcpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVu
ZGVyVmlldy0+Y29tcG9zaXRvcigpLmxheWVyRm9yT3ZlcmhhbmdBcmVhcygpOwogfQogCkBAIC04
NjAsNyArODYwLDcgQEAgR3JhcGhpY3NMYXllciogRnJhbWVWaWV3OjpzZXRXYW50c0xheWVyRm9y
VG9wT3ZlckhhbmdBcmVhKGJvb2wgd2FudHNMYXllcikgY29uc3QKIHsKICAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVyVmlldykK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJu
IHJlbmRlclZpZXctPmNvbXBvc2l0b3IoKS51cGRhdGVMYXllckZvclRvcE92ZXJoYW5nQXJlYSh3
YW50c0xheWVyKTsKIH0KQEAgLTg2OSw3ICs4NjksNyBAQCBHcmFwaGljc0xheWVyKiBGcmFtZVZp
ZXc6OnNldFdhbnRzTGF5ZXJGb3JCb3R0b21PdmVySGFuZ0FyZWEoYm9vbCB3YW50c0xheWVyKSBj
bwogewogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCk7CiAg
ICAgaWYgKCFyZW5kZXJWaWV3KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICByZXR1cm4gcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpLnVwZGF0ZUxheWVy
Rm9yQm90dG9tT3ZlcmhhbmdBcmVhKHdhbnRzTGF5ZXIpOwogfQpAQCAtMTAxNiw3ICsxMDE2LDcg
QEAgYm9vbCBGcmFtZVZpZXc6Omhhc0NvbXBvc2l0ZWRDb250ZW50SW5jbHVkaW5nRGVzY2VuZGFu
dHMoKSBjb25zdAogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQobV9mcmFtZS5nZXQoKSkpIHsK
ICAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KTsKLSAgICAgICAgaWYgKFJlbmRlckxheWVyQ29tcG9zaXRvciogY29tcG9zaXRvciA9IHJlbmRl
clZpZXcgPyAmcmVuZGVyVmlldy0+Y29tcG9zaXRvcigpIDogMCkgeworICAgICAgICBpZiAoUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0gcmVuZGVyVmlldyA/ICZyZW5kZXJWaWV3
LT5jb21wb3NpdG9yKCkgOiBudWxscHRyKSB7CiAgICAgICAgICAgICBpZiAoY29tcG9zaXRvci0+
aW5Db21wb3NpdGluZ01vZGUoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAt
MTA4NCw3ICsxMDg0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldElzSW5XaW5kb3coYm9vbCBpc0lu
V2luZG93KQogCiBSZW5kZXJPYmplY3QqIEZyYW1lVmlldzo6bGF5b3V0Um9vdChib29sIG9ubHlE
dXJpbmdMYXlvdXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG9ubHlEdXJpbmdMYXlvdXQgJiYgbGF5
b3V0UGVuZGluZygpID8gMCA6IG1fbGF5b3V0Um9vdDsKKyAgICByZXR1cm4gb25seUR1cmluZ0xh
eW91dCAmJiBsYXlvdXRQZW5kaW5nKCkgPyBudWxscHRyIDogbV9sYXlvdXRSb290OwogfQogCiBp
bmxpbmUgdm9pZCBGcmFtZVZpZXc6OmZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKCkKQEAg
LTExMDMsNyArMTEwMyw3IEBAIGlubGluZSB2b2lkIEZyYW1lVmlldzo6Zm9yY2VMYXlvdXRQYXJl
bnRWaWV3SWZOZWVkZWQoKQogCiAgICAgLy8gSWYgdGhlIGVtYmVkZGVkIFNWRyBkb2N1bWVudCBh
cHBlYXJzIHRoZSBmaXJzdCB0aW1lLCB0aGUgb3duZXJSZW5kZXJlciBoYXMgYWxyZWFkeSBmaW5p
c2hlZAogICAgIC8vIGxheW91dCB3aXRob3V0IGtub3dpbmcgYWJvdXQgdGhlIGV4aXN0ZW5jZSBv
ZiB0aGUgZW1iZWRkZWQgU1ZHIGRvY3VtZW50LCBiZWNhdXNlIFJlbmRlclJlcGxhY2VkCi0gICAg
Ly8gZW1iZWRkZWRDb250ZW50Qm94KCkgcmV0dXJucyAwLCBhcyBsb25nIGFzIHRoZSBlbWJlZGRl
ZCBkb2N1bWVudCBpc24ndCBsb2FkZWQgeWV0LiBCZWZvcmUKKyAgICAvLyBlbWJlZGRlZENvbnRl
bnRCb3goKSByZXR1cm5zIG51bGxwdHIsIGFzIGxvbmcgYXMgdGhlIGVtYmVkZGVkIGRvY3VtZW50
IGlzbid0IGxvYWRlZCB5ZXQuIEJlZm9yZQogICAgIC8vIGJvdGhlcmluZyB0byBsYXkgb3V0IHRo
ZSBTVkcgZG9jdW1lbnQsIG1hcmsgdGhlIG93bmVyUmVuZGVyZXIgbmVlZGluZyBsYXlvdXQgYW5k
IGFzayBpdHMKICAgICAvLyBGcmFtZVZpZXcgZm9yIGEgbGF5b3V0LiBBZnRlciB0aGF0IHRoZSBS
ZW5kZXJFbWJlZGRlZE9iamVjdCAob3duZXJSZW5kZXJlcikgY2FycmllcyB0aGUKICAgICAvLyBj
b3JyZWN0IHNpemUsIHdoaWNoIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aC9IZWlnaHQgcmVseSBvbiwgd2hlbiBsYXlpbmcKQEAgLTEzMDQsNyArMTMwNCw3IEBAIHZv
aWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAgICAgICBkaXNh
YmxlTGF5b3V0U3RhdGUgPSByb290LT52aWV3KCkuc2hvdWxkRGlzYWJsZUxheW91dFN0YXRlRm9y
U3VidHJlZShyb290KTsKICAgICAgICAgICAgIHJvb3QtPnZpZXcoKS5wdXNoTGF5b3V0U3RhdGUo
KnJvb3QpOwogICAgICAgICB9Ci0gICAgICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3Rh
dGVEaXNhYmxlcihkaXNhYmxlTGF5b3V0U3RhdGUgPyAmcm9vdC0+dmlldygpIDogMCk7CisgICAg
ICAgIExheW91dFN0YXRlRGlzYWJsZXIgbGF5b3V0U3RhdGVEaXNhYmxlcihkaXNhYmxlTGF5b3V0
U3RhdGUgPyAmcm9vdC0+dmlldygpIDogbnVsbHB0cik7CiAgICAgICAgIFJlbmRlclZpZXc6OlJl
cGFpbnRSZWdpb25BY2N1bXVsYXRvciByZXBhaW50UmVnaW9uQWNjdW11bGF0b3IoJnJvb3QtPnZp
ZXcoKSk7CiAKICAgICAgICAgQVNTRVJUKG1fbGF5b3V0UGhhc2UgPT0gSW5QcmVMYXlvdXQpOwpA
QCAtMjI0Nyw3ICsyMjQ3LDcgQEAgSG9zdFdpbmRvdyogRnJhbWVWaWV3Ojpob3N0V2luZG93KCkg
Y29uc3QKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKQogICAgICAgICBy
ZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIEZyYW1lVmlldzo6YWRkVHJhY2tlZFJlcGFpbnRSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcikKQEAgLTI0NjAsNyArMjQ2MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzY2hlZHVsZVJl
bGF5b3V0KCkKIAogICAgIGlmIChtX2xheW91dFJvb3QpIHsKICAgICAgICAgbV9sYXlvdXRSb290
LT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxzZSk7Ci0gICAgICAgIG1fbGF5b3V0
Um9vdCA9IDA7CisgICAgICAgIG1fbGF5b3V0Um9vdCA9IG51bGxwdHI7CiAgICAgfQogICAgIGlm
ICghbV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU1MSw3
ICsyNTUxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUoUmVu
ZGVyRWxlbWVudCYgbmV3UmVsYXlvdXRSb290KQogCiAgICAgLy8gSnVzdCBkbyBhIGZ1bGwgcmVs
YXlvdXQuCiAgICAgbV9sYXlvdXRSb290LT5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChm
YWxzZSk7Ci0gICAgbV9sYXlvdXRSb290ID0gMDsKKyAgICBtX2xheW91dFJvb3QgPSBudWxscHRy
OwogICAgIG5ld1JlbGF5b3V0Um9vdC5tYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChmYWxz
ZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KGZy
YW1lKCkpOwogfQpAQCAtMjU5NywxMiArMjU5NywxMiBAQCBib29sIEZyYW1lVmlldzo6bmVlZHNM
YXlvdXQoKSBjb25zdAogICAgIHJldHVybiBsYXlvdXRQZW5kaW5nKCkKICAgICAgICAgfHwgKHJl
bmRlclZpZXcgJiYgcmVuZGVyVmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgfHwgbV9sYXlv
dXRSb290Ci0gICAgICAgIHx8IChtX2RlZmVyU2V0TmVlZHNMYXlvdXRzICYmIG1fc2V0TmVlZHNM
YXlvdXRXYXNEZWZlcnJlZCk7CisgICAgICAgIHx8IChtX2RlZmVyU2V0TmVlZHNMYXlvdXRDb3Vu
dCAmJiBtX3NldE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6
c2V0TmVlZHNMYXlvdXQoKQogewotICAgIGlmIChtX2RlZmVyU2V0TmVlZHNMYXlvdXRzKSB7Cisg
ICAgaWYgKG1fZGVmZXJTZXROZWVkc0xheW91dENvdW50KSB7CiAgICAgICAgIG1fc2V0TmVlZHNM
YXlvdXRXYXNEZWZlcnJlZCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMzk5
LDcgKzMzOTksNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0
KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIpCiBTY3JvbGxhYmxlQXJlYSogRnJhbWVWaWV3
OjplbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFdhbGsg
dXAgdGhlIGZyYW1lIHRyZWUgYW5kIGxvb2sgZm9yIGEgc2Nyb2xsYWJsZSBwYXJlbnQgZnJhbWUg
b3IgUmVuZGVyTGF5ZXIuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IEludFJlY3QgRnJhbWVWaWV3OjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KCkgY29uc3QKQEAg
LTM2NzEsMTIgKzM2NzEsMTIgQEAgYm9vbCBGcmFtZVZpZXc6Omhhc0N1c3RvbVNjcm9sbGJhcnMo
KSBjb25zdAogRnJhbWVWaWV3KiBGcmFtZVZpZXc6OnBhcmVudEZyYW1lVmlldygpIGNvbnN0CiB7
CiAgICAgaWYgKCFwYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IGZyYW1lKCkudHJlZSgpLnBh
cmVudCgpKQogICAgICAgICByZXR1cm4gcGFyZW50RnJhbWUtPnZpZXcoKTsKIAotICAgIHJldHVy
biAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIEZyYW1lVmlldzo6aXNJbkNoaWxk
RnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkgY29uc3QKQEAgLTM3NDcsOCArMzc0Nyw4IEBAIHZv
aWQgRnJhbWVWaWV3OjpwYWludENvbnRyb2xUaW50cygpCiB7CiAgICAgaWYgKG5lZWRzTGF5b3V0
KCkpCiAgICAgICAgIGxheW91dCgpOwotICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBjb25z
dCBub0NvbnRleHQgPSAwOwotICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KG5vQ29udGV4dCk7
CisKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCgoUGxhdGZvcm1HcmFwaGljc0NvbnRleHQq
KW51bGxwdHIpOwogICAgIGNvbnRleHQuc2V0VXBkYXRpbmdDb250cm9sVGludHModHJ1ZSk7CiAg
ICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpIHsKICAgICAgICAgLy8gRklYTUU6IGNvbnN1bHQgcGFp
bnRzRW50aXJlQ29udGVudHMoKS4KQEAgLTQxNDEsNyArNDE0MSw3IEBAIHZvaWQgRnJhbWVWaWV3
OjphZGp1c3RQYWdlSGVpZ2h0RGVwcmVjYXRlZChmbG9hdCAqbmV3Qm90dG9tLCBmbG9hdCBvbGRU
b3AsIGZsb2F0CiAKICAgICB9CiAgICAgLy8gVXNlIGEgY29udGV4dCB3aXRoIHBhaW50aW5nIGRp
c2FibGVkLgotICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KChQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dCopMCk7CisgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoKFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KiludWxscHRyKTsKICAgICByZW5kZXJWaWV3LT5zZXRUcnVuY2F0ZWRBdChzdGF0aWNf
Y2FzdDxpbnQ+KGZsb29yZihvbGRCb3R0b20pKSk7CiAgICAgSW50UmVjdCBkaXJ0eVJlY3QoMCwg
c3RhdGljX2Nhc3Q8aW50PihmbG9vcmYob2xkVG9wKSksIHJlbmRlclZpZXctPmxheW91dE92ZXJm
bG93UmVjdCgpLm1heFgoKSwgc3RhdGljX2Nhc3Q8aW50PihjZWlsZihvbGRCb3R0b20gLSBvbGRU
b3ApKSk7CiAgICAgcmVuZGVyVmlldy0+c2V0UHJpbnRSZWN0KGRpcnR5UmVjdCk7CkBAIC00NDU2
LDcgKzQ0NTYsNyBAQCBBWE9iamVjdENhY2hlKiBGcmFtZVZpZXc6OmF4T2JqZWN0Q2FjaGUoKSBj
b25zdAogewogICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBmcmFt
ZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOwotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogICAgIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCmluZGV4IDBhMjljMzhhMmRhMDgxNjIwMzgwZjdjNWM1MjBkNTI4MGU0ODk0
NzcuLjY1YzdiYmRhMjU5YzY2NmQ4Y2NiYzRjMjcwMzI3ZGNmNGE5NTdhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaApAQCAtNzEwLDcgKzcxMCw3IEBAIHByaXZhdGU6CiAKICAgICBGbG9hdFJl
Y3QgbV9leHBvc2VkUmVjdDsKIAotICAgIHVuc2lnbmVkIG1fZGVmZXJTZXROZWVkc0xheW91dHM7
CisgICAgdW5zaWduZWQgbV9kZWZlclNldE5lZWRzTGF5b3V0Q291bnQ7CiAgICAgYm9vbCBtX3Nl
dE5lZWRzTGF5b3V0V2FzRGVmZXJyZWQ7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9EcmF3
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA0ZWJjMDZi
ZDQ3ZjQ5YTI0ZjU2MGExYTA1NmI0MjAyMTIzZjgwZjg2Li5lNTA5NWVhZWE3MzdlZmU5Y2U2Mzhm
OGVkM2MzOTFhMjIyMzg0NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcApAQCAtMTA3LDkgKzEwNyw5IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6
OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcmVuZGVyT2JqZWN0Q291bnRlciwgKCJSZW5kCiBSZW5k
ZXJPYmplY3Q6OlJlbmRlck9iamVjdChOb2RlJiBub2RlKQogICAgIDogQ2FjaGVkSW1hZ2VDbGll
bnQoKQogICAgICwgbV9ub2RlKG5vZGUpCi0gICAgLCBtX3BhcmVudCgwKQotICAgICwgbV9wcmV2
aW91cygwKQotICAgICwgbV9uZXh0KDApCisgICAgLCBtX3BhcmVudChudWxscHRyKQorICAgICwg
bV9wcmV2aW91cyhudWxscHRyKQorICAgICwgbV9uZXh0KG51bGxwdHIpCiAjaWZuZGVmIE5ERUJV
RwogICAgICwgbV9oYXNBWE9iamVjdChmYWxzZSkKICAgICAsIG1fc2V0TmVlZHNMYXlvdXRGb3Ji
aWRkZW4oZmFsc2UpCkBAIC0yMjEsMTQgKzIyMSwxNCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9i
amVjdDo6bmV4dEluUHJlT3JkZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluKSBjb25z
dAogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6Om5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJl
bihjb25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4pIGNvbnN0CiB7CiAgICAgaWYgKHRoaXMg
PT0gc3RheVdpdGhpbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gdGhpczsKICAgICBSZW5kZXJP
YmplY3QqIG5leHQ7CiAgICAgd2hpbGUgKCEobmV4dCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCkp
KSB7CiAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKTsKICAgICAgICAgaWYgKCFj
dXJyZW50IHx8IGN1cnJlbnQgPT0gc3RheVdpdGhpbikKLSAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBuZXh0OwogfQpA
QCAtMjQ3LDcgKzI0Nyw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpwcmV2aW91c0lu
UHJlT3JkZXIoKSBjb25zdAogUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnByZXZpb3VzSW5Q
cmVPcmRlcihjb25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4pIGNvbnN0CiB7CiAgICAgaWYg
KHRoaXMgPT0gc3RheVdpdGhpbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgcmV0dXJuIHByZXZpb3VzSW5QcmVPcmRlcigpOwogfQpAQCAtMjY0LDcg
KzI2NCw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0OjpmaXJzdExlYWZDaGlsZCgpIGNv
bnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByID0gZmlyc3RDaGlsZFNsb3coKTsKICAgICB3aGls
ZSAocikgewotICAgICAgICBSZW5kZXJPYmplY3QqIG4gPSAwOworICAgICAgICBSZW5kZXJPYmpl
Y3QqIG4gPSBudWxscHRyOwogICAgICAgICBuID0gci0+Zmlyc3RDaGlsZFNsb3coKTsKICAgICAg
ICAgaWYgKCFuKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzcsNyArMjc3LDcgQEAgUmVuZGVy
T2JqZWN0KiBSZW5kZXJPYmplY3Q6Omxhc3RMZWFmQ2hpbGQoKSBjb25zdAogewogICAgIFJlbmRl
ck9iamVjdCogciA9IGxhc3RDaGlsZFNsb3coKTsKICAgICB3aGlsZSAocikgewotICAgICAgICBS
ZW5kZXJPYmplY3QqIG4gPSAwOworICAgICAgICBSZW5kZXJPYmplY3QqIG4gPSBudWxscHRyOwog
ICAgICAgICBuID0gci0+bGFzdENoaWxkU2xvdygpOwogICAgICAgICBpZiAoIW4pCiAgICAgICAg
ICAgICBicmVhazsKQEAgLTI5Niw3ICsyOTYsNyBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVj
dDo6dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbikgY29uc3QKICAg
ICAgICAgcmV0dXJuIGNoaWxkOwogICAgIH0KICAgICBpZiAodGhpcyA9PSBzdGF5V2l0aGluKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKG5leHRT
aWJsaW5nKCkpIHsKICAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IG5leHRTaWJsaW5nKCkt
PmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5n
KCk7CkBAIC0zMDgsNyArMzA4LDcgQEAgUmVuZGVyT2JqZWN0KiBSZW5kZXJPYmplY3Q6OnRyYXZl
cnNlTmV4dChjb25zdCBSZW5kZXJPYmplY3QqIHN0YXlXaXRoaW4pIGNvbnN0CiAgICAgICAgIEFT
U0VSVCghc3RheVdpdGhpbiB8fCAhbi0+bmV4dFNpYmxpbmcoKSB8fCBuLT5uZXh0U2libGluZygp
LT5pc0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CiAgICAgICAgIHJldHVybiBuLT5uZXh0U2li
bGluZygpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
Ly8gTm9uLXJlY3Vyc2l2ZSB2ZXJzaW9uIG9mIHRoZSBERlMgc2VhcmNoLgpAQCAtMzI5LDcgKzMy
OSw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29uc3QgUmVu
ZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBIZWlnaHRUCiAgICAgfQogCiAgICAgaWYgKHRoaXMgPT0g
c3RheVdpdGhpbikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgLy8gTm93IHdlIHRyYXZlcnNlIG90aGVyIG5vZGVzIGlmIHRoZXkgZXhpc3QsIG90aGVy
d2lzZQogICAgIC8vIHdlIGdvIHRvIHRoZSBwYXJlbnQgbm9kZSBhbmQgdHJ5IGRvaW5nIHRoZSBz
YW1lLgpAQCAtMzQwLDcgKzM0MCw3IEBAIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2
ZXJzZU5leHQoY29uc3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBIZWlnaHRUCiAgICAgICAg
ICAgICBjdXJyZW50RGVwdGgtLTsKICAgICAgICAgfQogICAgICAgICBpZiAoIW4pCi0gICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBmb3Ig
KFJlbmRlck9iamVjdCogc2libGluZyA9IG4tPm5leHRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxp
bmcgPSBzaWJsaW5nLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBvdmVyZmxvd1R5cGUg
PSBpbmNsdXNpb25GdW5jdGlvbihzaWJsaW5nKTsKICAgICAgICAgICAgIGlmIChvdmVyZmxvd1R5
cGUgIT0gRml4ZWRIZWlnaHQpIHsKQEAgLTM1NCw5ICszNTQsOSBAQCBSZW5kZXJPYmplY3QqIFJl
bmRlck9iamVjdDo6dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbiwg
SGVpZ2h0VAogICAgICAgICAgICAgbiA9IG4tPnBhcmVudCgpOwogICAgICAgICAgICAgY3VycmVu
dERlcHRoLS07CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKIFJlbmRlck9iamVjdCogUmVuZGVyT2JqZWN0Ojp0cmF2ZXJzZU5leHQoY29u
c3QgUmVuZGVyT2JqZWN0KiBzdGF5V2l0aGluLCBUcmF2ZXJzZU5leHRJbmNsdXNpb25GdW5jdGlv
biBpbmNsdXNpb25GdW5jdGlvbikgY29uc3QKQEAgLTM2OSw3ICszNjksNyBAQCBSZW5kZXJPYmpl
Y3QqIFJlbmRlck9iamVjdDo6dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdp
dGhpbiwgVHJhdmVycwogICAgIH0KIAogICAgIGlmICh0aGlzID09IHN0YXlXaXRoaW4pCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBzaWJsaW5nID0gbmV4dFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxp
bmctPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGluY2x1c2lvbkZ1bmN0aW9uKHNpYmxp
bmcpKSB7CkBAIC0zOTIsMTAgKzM5MiwxMCBAQCBSZW5kZXJPYmplY3QqIFJlbmRlck9iamVjdDo6
dHJhdmVyc2VOZXh0KGNvbnN0IFJlbmRlck9iamVjdCogc3RheVdpdGhpbiwgVHJhdmVycwogICAg
ICAgICAgICAgaWYgKCghc3RheVdpdGhpbiB8fCBuLT5wYXJlbnQoKSAhPSBzdGF5V2l0aGluKSkK
ICAgICAgICAgICAgICAgICBuID0gbi0+cGFyZW50KCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IHN0YXRpYyBSZW5kZXJPYmplY3Q6OkJsb2NrQ29udGVudEhlaWdodFR5cGUgaW5jbHVkZU5vbkZp
eGVkSGVpZ2h0KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC01MjMsNyArNTIzLDcg
QEAgc3RhdGljIGJvb2wgaGFzRml4ZWRQb3NJbk5hbWVkRmxvd0NvbnRhaW5pbmdCbG9jayhjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiBSZW5kZXJCbG9jayogUmVuZGVyT2JqZWN0Ojpm
aXJzdExpbmVCbG9jaygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBvYmplY3RJc1JlbGF5b3V0Qm91bmRhcnkoY29u
c3QgUmVuZGVyRWxlbWVudCogb2JqZWN0KQpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogUmVuZGVyT2JqZWN0Ojpjb250YWluZXJGb3JSZXBhaW50KCkgY29uc3QK
ICAgICAgICAgICAgIHJldHVybiByZXBhaW50Q29udGFpbmVyOwogICAgICAgICAvLyBJZiB3ZSBo
YXZlIGFscmVhZHkgZm91bmQgYSByZXBhaW50IGNvbnRhaW5lciB0aGVuIHdlIHdpbGwgcmVwYWlu
dCBpbnRvIHRoYXQgY29udGFpbmVyIG9ubHkgaWYgaXQgaXMgcGFydCBvZiB0aGUgc2FtZQogICAg
ICAgICAvLyBmbG93IHRocmVhZC4gT3RoZXJ3aXNlIHdlIHdpbGwgbmVlZCB0byBjYXRjaCB0aGUg
cmVwYWludCBjYWxsIGFuZCBzZW5kIGl0IHRvIHRoZSBmbG93IHRocmVhZC4KLSAgICAgICAgUmVu
ZGVyRmxvd1RocmVhZCogcmVwYWludENvbnRhaW5lckZsb3dUaHJlYWQgPSByZXBhaW50Q29udGFp
bmVyID8gcmVwYWludENvbnRhaW5lci0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpIDogMDsK
KyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogcmVwYWludENvbnRhaW5lckZsb3dUaHJlYWQgPSBy
ZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lci0+Zmxvd1RocmVhZENvbnRhaW5pbmdC
bG9jaygpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyRmxvd1RocmVh
ZCB8fCByZXBhaW50Q29udGFpbmVyRmxvd1RocmVhZCAhPSBwYXJlbnRSZW5kZXJGbG93VGhyZWFk
KQogICAgICAgICAgICAgcmVwYWludENvbnRhaW5lciA9IHBhcmVudFJlbmRlckZsb3dUaHJlYWQ7
CiAgICAgfQpAQCAtMTU0OCw3ICsxNTQ4LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNob3dSZW5k
ZXJTdWJUcmVlQW5kTWFyayhjb25zdCBSZW5kZXJPYmplY3QqIG1hcmtlZE9iamVjdCwgaW4KICNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKICNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VuZGVmaW5lZC1ib29sLWNvbnZlcnNpb24i
CiAjZW5kaWYKLSAgICAvLyBBcyB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQg
d2hlbiBkZWJ1Z2dpbmcsIHRoZSB8dGhpc3wgcG9pbnRlciBtYXkgYmUgMC4KKyAgICAvLyBBcyB0
aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBkZWJ1Z2dpbmcsIHRoZSB8
dGhpc3wgcG9pbnRlciBtYXkgYmUgbnVsbHB0ci4KICAgICBpZiAoIXRoaXMpCiAgICAgICAgIHJl
dHVybjsKICNpZiBDT01QSUxFUihDTEFORykKQEAgLTE1ODIsNyArMTU4Miw3IEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpzZWxlY3Rpb25TdGFydEVuZChpbnQmIHNwb3MsIGludCYgZXBvcykgY29uc3QK
IEZsb2F0UG9pbnQgUmVuZGVyT2JqZWN0Ojpsb2NhbFRvQWJzb2x1dGUoY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxQb2ludCwgTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlKSBjb25zdAogewogICAgIFRy
YW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRlKFRyYW5zZm9ybVN0YXRlOjpBcHBseVRyYW5zZm9y
bURpcmVjdGlvbiwgbG9jYWxQb2ludCk7Ci0gICAgbWFwTG9jYWxUb0NvbnRhaW5lcigwLCB0cmFu
c2Zvcm1TdGF0ZSwgbW9kZSB8IEFwcGx5Q29udGFpbmVyRmxpcCk7CisgICAgbWFwTG9jYWxUb0Nv
bnRhaW5lcihudWxscHRyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSB8IEFwcGx5Q29udGFpbmVyRmxp
cCk7CiAgICAgdHJhbnNmb3JtU3RhdGUuZmxhdHRlbigpOwogICAgIAogICAgIHJldHVybiB0cmFu
c2Zvcm1TdGF0ZS5sYXN0UGxhbmFyUG9pbnQoKTsKQEAgLTE4MTYsNyArMTgxNiw3IEBAIFJlbmRl
ckVsZW1lbnQqIFJlbmRlck9iamVjdDo6Y29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250CiAgICAgICAgIC8vIGNhbid0IGdldCBiYWNrIHRvIHRoZSBjYW52
YXMuICBJbnN0ZWFkIHdlIGp1c3Qgd2FsayBhcyBoaWdoIHVwCiAgICAgICAgIC8vIGFzIHdlIGNh
bi4gIElmIHdlJ3JlIGluIHRoZSB0cmVlLCB3ZSdsbCBnZXQgdGhlIHJvb3QuICBJZiB3ZQogICAg
ICAgICAvLyBhcmVuJ3Qgd2UnbGwgZ2V0IHRoZSByb290IG9mIG91ciBsaXR0bGUgc3VidHJlZSAo
bW9zdCBsaWtlbHkKLSAgICAgICAgLy8gd2UnbGwganVzdCByZXR1cm4gMCkuCisgICAgICAgIC8v
IHdlJ2xsIGp1c3QgcmV0dXJuIG51bGxwdHIpLgogICAgICAgICAvLyBGSVhNRTogVGhlIGRlZmlu
aXRpb24gb2YgdmlldygpIGhhcyBjaGFuZ2VkIHRvIG5vdCBjcmF3bCB1cCB0aGUgcmVuZGVyIHRy
ZWUuICBJdCBtaWdodAogICAgICAgICAvLyBiZSBzYWZlIG5vdyB0byB1c2UgaXQuCiAgICAgICAg
IC8vIEZJWE1FOiBzaGFyZSBjb2RlIHdpdGggY29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlv
bigpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGFjZmExNGU3
ZTkyZDIxODBlMzRlMGFmZTkzODM0MjU2ZGQ3NGFkYmQuLjBkODVhMTc3ZjVhNWIwNzA1ZjA0ZGY0
ODA0YWRjYmU1MTFiYTI2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKQEAgLTQ5Niw3ICs0OTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VsZW1lbnRDb250aW51
YXRpb24oKSBjb25zdCB7IHJldHVybiBub2RlKCkgJiYgbm9kZSgpLT5yZW5kZXJlcigpICE9IHRo
aXM7IH0KICAgICBib29sIGlzSW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIGlzRWxlbWVudENvbnRpbnVhdGlvbigpICYmIGlzSW5saW5lKCk7IH0KICAgICBib29sIGlz
QmxvY2tFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNFbGVtZW50Q29udGlu
dWF0aW9uKCkgJiYgIWlzSW5saW5lKCk7IH0KLSAgICB2aXJ0dWFsIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiB2aXJ0dWFsQ29udGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgUmVuZGVyQm94TW9kZWxPYmplY3QqIHZpcnR1YWxDb250aW51YXRpb24oKSBjb25zdCB7IHJl
dHVybiBudWxscHRyOyB9CiAKICAgICBib29sIGlzRmxvYXRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5mbG9hdGluZygpOyB9CiAKQEAgLTU2NCwxMCArNTY0LDEwIEBAIHB1YmxpYzoK
ICAgICBSZW5kZXJWaWV3JiB2aWV3KCkgY29uc3QgeyByZXR1cm4gKmRvY3VtZW50KCkucmVuZGVy
VmlldygpOyB9OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgcmVuZGVyZXIgaXMgcm9v
dGVkLCBhbmQgb3B0aW9uYWxseSByZXR1cm5zIHRoZSBob3N0aW5nIHZpZXcgKHRoZSByb290IG9m
IHRoZSBoaWVyYXJjaHkpLgotICAgIGJvb2wgaXNSb290ZWQoUmVuZGVyVmlldyoqID0gMCkgY29u
c3Q7CisgICAgYm9vbCBpc1Jvb3RlZChSZW5kZXJWaWV3KiogPSBudWxscHRyKSBjb25zdDsKIAot
ICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBpc0Fub255bW91cygpID8gMCA6ICZtX25v
ZGU7IH0KLSAgICBOb2RlKiBub25Qc2V1ZG9Ob2RlKCkgY29uc3QgeyByZXR1cm4gaXNQc2V1ZG9F
bGVtZW50KCkgPyAwIDogbm9kZSgpOyB9CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJu
IGlzQW5vbnltb3VzKCkgPyBudWxscHRyIDogJm1fbm9kZTsgfQorICAgIE5vZGUqIG5vblBzZXVk
b05vZGUoKSBjb25zdCB7IHJldHVybiBpc1BzZXVkb0VsZW1lbnQoKSA/IG51bGxwdHIgOiBub2Rl
KCk7IH0KIAogICAgIC8vIFJldHVybnMgdGhlIHN0eWxlZCBub2RlIHRoYXQgY2F1c2VkIHRoZSBn
ZW5lcmF0aW9uIG9mIHRoaXMgcmVuZGVyZXIuCiAgICAgLy8gVGhpcyBpcyB0aGUgc2FtZSBhcyBu
b2RlKCkgZXhjZXB0IGZvciByZW5kZXJlcnMgb2YgOmJlZm9yZSBhbmQgOmFmdGVyCkBAIC01NzUs
NyArNTc1LDcgQEAgcHVibGljOgogICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gaXNQc2V1ZG9FbGVtZW50KCkgPyBnZW5lcmF0aW5nUHNldWRvSG9zdEVsZW1lbnQoKSA6
IG5vZGUoKTsgfQogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlLmRvY3VtZW50KCk7IH0KLSAgICBGcmFtZSYgZnJhbWUoKSBjb25zdDsgLy8gRGVmaW5lZCBp
biBSZW5kZXJWaWV3LmgKKyAgICBGcmFtZSYgZnJhbWUoKSBjb25zdDsKIAogICAgIGJvb2wgaGFz
T3V0bGluZUFubm90YXRpb24oKSBjb25zdDsKICAgICBib29sIGhhc091dGxpbmUoKSBjb25zdCB7
IHJldHVybiBzdHlsZSgpLmhhc091dGxpbmUoKSB8fCBoYXNPdXRsaW5lQW5ub3RhdGlvbigpOyB9
CkBAIC01ODMsMTEgKzU4MywxMSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgb2JqZWN0
IGNvbnRhaW5pbmcgdGhpcyBvbmUuIENhbiBiZSBkaWZmZXJlbnQgZnJvbSBwYXJlbnQgZm9yIHBv
c2l0aW9uZWQgZWxlbWVudHMuCiAgICAgLy8gSWYgcmVwYWludENvbnRhaW5lciBhbmQgcmVwYWlu
dENvbnRhaW5lclNraXBwZWQgYXJlIG5vdCBudWxsLCBvbiByZXR1cm4gKnJlcGFpbnRDb250YWlu
ZXJTa2lwcGVkCiAgICAgLy8gaXMgdHJ1ZSBpZiB0aGUgcmVuZGVyZXIgcmV0dXJuZWQgaXMgYW4g
YW5jZXN0b3Igb2YgcmVwYWludENvbnRhaW5lci4KLSAgICBSZW5kZXJFbGVtZW50KiBjb250YWlu
ZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IDAsIGJv
b2wqIHJlcGFpbnRDb250YWluZXJTa2lwcGVkID0gMCkgY29uc3Q7CisgICAgUmVuZGVyRWxlbWVu
dCogY29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIgPSBudWxscHRyLCBib29sKiByZXBhaW50Q29udGFpbmVyU2tpcHBlZCA9IG51bGxwdHIpIGNv
bnN0OwogCiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9mZnNldFBhcmVudCgpIGNvbnN0Owog
Ci0gICAgdm9pZCBtYXJrQ29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChib29sIHNjaGVkdWxlUmVs
YXlvdXQgPSB0cnVlLCBSZW5kZXJFbGVtZW50KiBuZXdSb290ID0gMCk7CisgICAgdm9pZCBtYXJr
Q29udGFpbmluZ0Jsb2Nrc0ZvckxheW91dChib29sIHNjaGVkdWxlUmVsYXlvdXQgPSB0cnVlLCBS
ZW5kZXJFbGVtZW50KiBuZXdSb290ID0gbnVsbHB0cik7CiAgICAgdm9pZCBzZXROZWVkc0xheW91
dChNYXJraW5nQmVoYXZpb3IgPSBNYXJrQ29udGFpbmluZ0Jsb2NrQ2hhaW4pOwogICAgIHZvaWQg
Y2xlYXJOZWVkc0xheW91dCgpOwogICAgIHZvaWQgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0Rp
cnR5KGJvb2wsIE1hcmtpbmdCZWhhdmlvciA9IE1hcmtDb250YWluaW5nQmxvY2tDaGFpbik7CkBA
IC02NTYsMjAgKzY1NiwyMCBAQCBwdWJsaWM6CiAgICAgRmxvYXRQb2ludCBhYnNvbHV0ZVRvTG9j
YWwoY29uc3QgRmxvYXRQb2ludCYsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSAwKSBjb25zdDsKIAog
ICAgIC8vIENvbnZlcnQgYSBsb2NhbCBxdWFkIHRvIGFic29sdXRlIGNvb3JkaW5hdGVzLCB0YWtp
bmcgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQuCi0gICAgRmxvYXRRdWFkIGxvY2FsVG9BYnNvbHV0
ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUgPSAw
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0CisgICAgRmxvYXRRdWFkIGxvY2FsVG9BYnNvbHV0
ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUgPSAw
LCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bG9jYWxUb0NvbnRhaW5lclF1YWQocXVhZCwgMCwgbW9kZSwgd2FzRml4ZWQpOworICAgICAgICBy
ZXR1cm4gbG9jYWxUb0NvbnRhaW5lclF1YWQocXVhZCwgbnVsbHB0ciwgbW9kZSwgd2FzRml4ZWQp
OwogICAgIH0KICAgICAvLyBDb252ZXJ0IGFuIGFic29sdXRlIHF1YWQgdG8gbG9jYWwgY29vcmRp
bmF0ZXMuCiAgICAgRmxvYXRRdWFkIGFic29sdXRlVG9Mb2NhbFF1YWQoY29uc3QgRmxvYXRRdWFk
JiwgTWFwQ29vcmRpbmF0ZXNGbGFncyBtb2RlID0gMCkgY29uc3Q7CiAKICAgICAvLyBDb252ZXJ0
IGEgbG9jYWwgcXVhZCBpbnRvIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiBjb250YWluZXIsIHRh
a2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFF1
YWQgbG9jYWxUb0NvbnRhaW5lclF1YWQoY29uc3QgRmxvYXRRdWFkJiwgY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTWFwQ29vcmRpbmF0ZXNGbGFncyA9IDAs
IGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRmxvYXRQb2lu
dCBsb2NhbFRvQ29udGFpbmVyUG9pbnQoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSAw
LCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UXVh
ZCBsb2NhbFRvQ29udGFpbmVyUXVhZChjb25zdCBGbG9hdFF1YWQmLCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gMCwg
Ym9vbCogd2FzRml4ZWQgPSBudWxscHRyKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9h
dFBvaW50IGxvY2FsVG9Db250YWluZXJQb2ludChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTWFwQ29vcmRpbmF0ZXNGbGFn
cyA9IDAsIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4g
dGhlIG9mZnNldCBmcm9tIHRoZSBjb250YWluZXIoKSByZW5kZXJlciAoZXhjbHVkaW5nIHRyYW5z
Zm9ybXMpLiBJbiBtdWx0aS1jb2x1bW4gbGF5b3V0LAogICAgIC8vIGRpZmZlcmVudCBvZmZzZXRz
IGFwcGx5IGF0IGRpZmZlcmVudCBwb2ludHMsIHNvIHJldHVybiB0aGUgb2Zmc2V0IHRoYXQgYXBw
bGllcyB0byB0aGUgZ2l2ZW4gcG9pbnQuCi0gICAgdmlydHVhbCBMYXlvdXRTaXplIG9mZnNldEZy
b21Db250YWluZXIoUmVuZGVyRWxlbWVudCYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zm
c2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zm
c2V0RnJvbUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29s
KiBvZmZzZXREZXBlbmRzT25Qb2ludCA9IG51bGxwdHIpIGNvbnN0OwogICAgIC8vIFJldHVybiB0
aGUgb2Zmc2V0IGZyb20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0
cyB0aGF0IG5vbmUgb2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4K
ICAgICBMYXlvdXRTaXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJFbGVtZW50
JikgY29uc3Q7CiAKQEAgLTY4NSw3ICs2ODUsNyBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBhYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIGFi
c29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKTsgfQogCiAgICAgLy8gQnVpbGQgYW4gYXJyYXkg
b2YgcXVhZHMgaW4gYWJzb2x1dGUgY29vcmRzIGZvciBsaW5lIGJveGVzCi0gICAgdmlydHVhbCB2
b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiAvKndhc0ZpeGVkKi8g
PSAwKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4ZWQqLyA9IG51bGxwdHIpIGNvbnN0IHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGFic29sdXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsK
IApAQCAtNzA5LDEyICs3MDksMTIgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0VGV4dERlY29yYXRp
b25Db2xvcnNBbmRTdHlsZXMoaW50IGRlY29yYXRpb25zLCBDb2xvciYgdW5kZXJsaW5lQ29sb3Is
IENvbG9yJiBvdmVybGluZUNvbG9yLCBDb2xvciYgbGluZXRocm91Z2hDb2xvciwKICAgICAgICAg
VGV4dERlY29yYXRpb25TdHlsZSYgdW5kZXJsaW5lU3R5bGUsIFRleHREZWNvcmF0aW9uU3R5bGUm
IG92ZXJsaW5lU3R5bGUsIFRleHREZWNvcmF0aW9uU3R5bGUmIGxpbmV0aHJvdWdoU3R5bGUsIGJv
b2wgZmlyc3RsaW5lU3R5bGUgPSBmYWxzZSk7CiAKLSAgICAvLyBSZXR1cm4gdGhlIFJlbmRlckxh
eWVyTW9kZWxPYmplY3QgaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25zaWJs
ZSBmb3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIDAKKyAgICAvLyBSZXR1cm4gdGhlIFJlbmRl
ckxheWVyTW9kZWxPYmplY3QgaW4gdGhlIGNvbnRhaW5lciBjaGFpbiB3aGljaCBpcyByZXNwb25z
aWJsZSBmb3IgcGFpbnRpbmcgdGhpcyBvYmplY3QsIG9yIG51bGxwdHIKICAgICAvLyBpZiBwYWlu
dGluZyBpcyByb290LXJlbGF0aXZlLiBUaGlzIGlzIHRoZSBjb250YWluZXIgdGhhdCBzaG91bGQg
YmUgcGFzc2VkIHRvIHRoZSAnZm9yUmVwYWludCcKICAgICAvLyBtZXRob2RzLgogICAgIFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lckZvclJlcGFpbnQoKSBjb25zdDsKICAgICAvLyBB
Y3R1YWxseSBkbyB0aGUgcmVwYWludCBvZiByZWN0IHIgZm9yIHRoaXMgb2JqZWN0IHdoaWNoIGhh
cyBiZWVuIGNvbXB1dGVkIGluIHRoZSBjb29yZGluYXRlIHNwYWNlCi0gICAgLy8gb2YgcmVwYWlu
dENvbnRhaW5lci4gSWYgcmVwYWludENvbnRhaW5lciBpcyAwLCByZXBhaW50IHZpYSB0aGUgdmll
dy4KKyAgICAvLyBvZiByZXBhaW50Q29udGFpbmVyLiBJZiByZXBhaW50Q29udGFpbmVyIGlzIG51
bGxwdHIsIHJlcGFpbnQgdmlhIHRoZSB2aWV3LgogICAgIHZvaWQgcmVwYWludFVzaW5nQ29udGFp
bmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0
IExheW91dFJlY3QmLCBib29sIHNob3VsZENsaXBUb0xheWVyID0gdHJ1ZSkgY29uc3Q7CiAgICAg
CiAgICAgLy8gUmVwYWludCB0aGUgZW50aXJlIG9iamVjdC4gIENhbGxlZCB3aGVuLCBlLmcuLCB0
aGUgY29sb3Igb2YgYSBib3JkZXIgY2hhbmdlcywgb3Igd2hlbiBhIGJvcmRlcgpAQCAtNzMzLDE4
ICs3MzMsMTggQEAgcHVibGljOgogICAgIC8vIGNvb3JkaW5hdGUgc3BhY2UuICBUaGlzIG1ldGhv
ZCBkZWFscyB3aXRoIG91dGxpbmVzIGFuZCBvdmVyZmxvdy4KICAgICBMYXlvdXRSZWN0IGFic29s
dXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoMCk7CisgICAgICAgIHJldHVybiBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChudWxscHRyKTsKICAgICB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
SW50UmVjdCBwaXhlbFNuYXBwZWRBYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAg
dmlydHVhbCBMYXlvdXRSZWN0IHJlY3RXaXRoT3V0bGluZUZvclJlcGFpbnQoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgTGF5b3V0VW5pdCBvdXRsaW5lV2lk
dGgpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWlu
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgY29u
c3QgUmVuZGVyR2VvbWV0cnlNYXAqID0gMCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9
CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBjb25zdCBSZW5kZXJH
ZW9tZXRyeU1hcCogPSBudWxscHRyKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KIAog
ICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29t
cHV0ZSBhIHJlY3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4g
dmlldyBjb29yZGluYXRlcy4KICAgICB2b2lkIGNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KExh
eW91dFJlY3QmIHIsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3QKICAgICB7Ci0gICAgICAgIGNv
bXB1dGVSZWN0Rm9yUmVwYWludCgwLCByLCBmaXhlZCk7CisgICAgICAgIGNvbXB1dGVSZWN0Rm9y
UmVwYWludChudWxscHRyLCByLCBmaXhlZCk7CiAgICAgfQogICAgIC8vIEdpdmVuIGEgcmVjdCBp
biB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJlY3Qgc3VpdGFibGUg
Zm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ug
b2YgcmVwYWludENvbnRhaW5lci4KQEAgLTc3Nyw3ICs3NzcsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBBIHNpbmdsZSByZWN0YW5nbGUgdGhhdCBlbmNvbXBhc3NlcyBhbGwgb2YgdGhlIHNlbGVjdGVk
IG9iamVjdHMgd2l0aGluIHRoaXMgb2JqZWN0LiAgVXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpZ2h0
ZXN0CiAgICAgLy8gcG9zc2libGUgYm91bmRpbmcgYm94IGZvciB0aGUgc2VsZWN0aW9uLgotICAg
IExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdChib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1
ZSkgeyByZXR1cm4gc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoMCwgY2xpcFRvVmlzaWJsZUNvbnRl
bnQpOyB9CisgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0KGJvb2wgY2xpcFRvVmlzaWJsZUNv
bnRlbnQgPSB0cnVlKSB7IHJldHVybiBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChudWxscHRyLCBj
bGlwVG9WaXNpYmxlQ29udGVudCk7IH0KICAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9u
UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLypyZXBhaW50Q29u
dGFpbmVyKi8sIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29udGVudCovID0gdHJ1ZSkgeyByZXR1cm4g
TGF5b3V0UmVjdCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc5Miw3ICs3OTIsNyBAQCBwdWJsaWM6CiAgICAg
ICogQHBhcmFtIGV4dHJhV2lkdGhUb0VuZE9mTGluZSBvcHRpb25hbCBvdXQgYXJnIHRvIGdpdmUg
ZXh0cmEgd2lkdGggdG8gZW5kIG9mIGxpbmUgLQogICAgICAqIHVzZWZ1bCBmb3IgY2hhcmFjdGVy
IHJhbmdlIHJlY3QgY29tcHV0YXRpb25zCiAgICAgICovCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCog
ZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2Fs
Q2FyZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lID0gbnVsbHB0cik7CiAKICAgICAvLyBXaGVuIHBlcmZvcm1pbmcgYSBn
bG9iYWwgZG9jdW1lbnQgdGVhci1kb3duLCB0aGUgcmVuZGVyZXIgb2YgdGhlIGRvY3VtZW50IGlz
IGNsZWFyZWQuICBXZSB1c2UgdGhpcwogICAgIC8vIGFzIGEgaG9vayB0byBkZXRlY3QgdGhlIGNh
c2Ugb2YgZG9jdW1lbnQgZGVzdHJ1Y3Rpb24gYW5kIGRvbid0IHdhc3RlIHRpbWUgZG9pbmcgdW5u
ZWNlc3Nhcnkgd29yay4KQEAgLTgyMSw4ICs4MjEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgcHJldmlvdXNPZmZzZXRGb3JCYWNrd2FyZERlbGV0aW9uKGludCBjdXJyZW50KSBjb25zdDsK
ICAgICB2aXJ0dWFsIGludCBuZXh0T2Zmc2V0KGludCBjdXJyZW50KSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9IDAp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRy
LCBjb25zdCBJbnRSZWN0KiA9IDApIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
Q2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9
IG51bGxwdHIpIHsgfQogCiAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHNlbGVjdGlvblJvb3Qo
KSBjb25zdDsKICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGludCYgc3BvcywgaW50JiBlcG9z
KSBjb25zdDsKQEAgLTgzMyw3ICs4MzMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNYXAgcG9pbnRz
IGFuZCBxdWFkcyB0aHJvdWdoIGVsZW1lbnRzLCBwb3RlbnRpYWxseSB2aWEgM2QgdHJhbnNmb3Jt
cy4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGNhbGwgdGhlc2UgZGlyZWN0bHk7IHVzZQogICAg
IC8vIGxvY2FsVG9BYnNvbHV0ZS9hYnNvbHV0ZVRvTG9jYWwgbWV0aG9kcyBpbnN0ZWFkLgotICAg
IHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNG
bGFncyA9IEFwcGx5Q29udGFpbmVyRmxpcCwgYm9vbCogd2FzRml4ZWQgPSAwKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVz
RmxhZ3MgPSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gbnVsbHB0cikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5h
dGVzRmxhZ3MsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Q7CiAKICAgICAvLyBQdXNoZXMgc3RhdGUg
b250byBSZW5kZXJHZW9tZXRyeU1hcCBhYm91dCBob3cgdG8gbWFwIGNvb3JkaW5hdGVzIGZyb20g
dGhpcyByZW5kZXJlciB0byBpdHMgY29udGFpbmVyLCBvciBhbmNlc3RvclRvU3RvcEF0ICh3aGlj
aGV2ZXIgaXMgZW5jb3VudGVyZWQgZmlyc3QpLgpAQCAtODQzLDExICs4NDMsMTEgQEAgcHVibGlj
OgogICAgIGJvb2wgc2hvdWxkVXNlVHJhbnNmb3JtRnJvbUNvbnRhaW5lcihjb25zdCBSZW5kZXJP
YmplY3QqIGNvbnRhaW5lcikgY29uc3Q7CiAgICAgdm9pZCBnZXRUcmFuc2Zvcm1Gcm9tQ29udGFp
bmVyKGNvbnN0IFJlbmRlck9iamVjdCogY29udGFpbmVyLCBjb25zdCBMYXlvdXRTaXplJiBvZmZz
ZXRJbkNvbnRhaW5lciwgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBjb25zdDsKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5
b3V0UG9pbnQmIC8qIGFkZGl0aW9uYWxPZmZzZXQgKi8sIGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIC8qIHBhaW50Q29udGFpbmVyICovID0gMCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBh
ZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgLyog
YWRkaXRpb25hbE9mZnNldCAqLywgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLyogcGFp
bnRDb250YWluZXIgKi8gPSBudWxscHRyKSB7IH07CiAKICAgICBMYXlvdXRSZWN0IGFic29sdXRl
T3V0bGluZUJvdW5kcygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gb3V0bGluZUJvdW5k
c0ZvclJlcGFpbnQoMCk7CisgICAgICAgIHJldHVybiBvdXRsaW5lQm91bmRzRm9yUmVwYWludChu
dWxscHRyKTsKICAgICB9CiAKICAgICBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbkVudW0gc2hvdWxk
UmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcAppbmRleCA0YTM1YTAxMGQ5YzkxMGExNTdkODAzZmQyN2I1NjY5ODk4MDVi
MWQ4Li40ZjMzOTE5NDJjNGEwYWEzNDZlNzJmYjkwODRkM2VhNzQ4YTFkZjgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0cnVjdCBT
ZWxlY3Rpb25JdGVyYXRvciB7CiAgICAgCiAgICAgUmVuZGVyT2JqZWN0KiBuZXh0KCkKICAgICB7
Ci0gICAgICAgIFJlbmRlck9iamVjdCogY3VycmVudFNwYW4gPSBtX3NwYW5uZXJTdGFjay5pc0Vt
cHR5KCkgPyAwIDogbV9zcGFubmVyU3RhY2subGFzdCgpLT5zcGFubmVyKCk7CisgICAgICAgIFJl
bmRlck9iamVjdCogY3VycmVudFNwYW4gPSBtX3NwYW5uZXJTdGFjay5pc0VtcHR5KCkgPyBudWxs
cHRyIDogbV9zcGFubmVyU3RhY2subGFzdCgpLT5zcGFubmVyKCk7CiAgICAgICAgIG1fY3VycmVu
dCA9IG1fY3VycmVudC0+bmV4dEluUHJlT3JkZXIoY3VycmVudFNwYW4pOwogICAgICAgICBjaGVj
a0ZvclNwYW5uZXIoKTsKICAgICAgICAgaWYgKCFtX2N1cnJlbnQgJiYgY3VycmVudFNwYW4pIHsK
QEAgLTk2LDggKzk2LDggQEAgc3RydWN0IFNlbGVjdGlvbkl0ZXJhdG9yIHsKIFJlbmRlclZpZXc6
OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCiAgICAg
LCBtX2ZyYW1lVmlldygqZG9jdW1lbnQudmlldygpKQotICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0
U3RhcnQoMCkKLSAgICAsIG1fc2VsZWN0aW9uVW5zcGxpdEVuZCgwKQorICAgICwgbV9zZWxlY3Rp
b25VbnNwbGl0U3RhcnQobnVsbHB0cikKKyAgICAsIG1fc2VsZWN0aW9uVW5zcGxpdEVuZChudWxs
cHRyKQogICAgICwgbV9zZWxlY3Rpb25VbnNwbGl0U3RhcnRQb3MoLTEpCiAgICAgLCBtX3NlbGVj
dGlvblVuc3BsaXRFbmRQb3MoLTEpCiAgICAgLCBtX3JlbmRlcmVyQ291bnQoMCkKQEAgLTEwNyw3
ICsxMDcsNyBAQCBSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KERvY3VtZW50JiBkb2N1bWVudCwgUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlKQogICAgICwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQo
ZmFsc2UpCiAgICAgLCBtX2xheW91dFN0YXRlKG51bGxwdHIpCiAgICAgLCBtX2xheW91dFN0YXRl
RGlzYWJsZUNvdW50KDApCi0gICAgLCBtX3JlbmRlclF1b3RlSGVhZCgwKQorICAgICwgbV9yZW5k
ZXJRdW90ZUhlYWQobnVsbHB0cikKICAgICAsIG1fcmVuZGVyQ291bnRlckNvdW50KDApCiAgICAg
LCBtX3NlbGVjdGlvbldhc0NhcmV0KGZhbHNlKQogICAgICwgbV9oYXNTb2Z0d2FyZUZpbHRlcnMo
ZmFsc2UpCkBAIC00MTUsNyArNDE1LDcgQEAgc3RhdGljIGlubGluZSBMYXlvdXRTaXplIGZpeGVk
UG9zaXRpb25PZmZzZXQoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCiAKIHZvaWQgUmVuZGVy
Vmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUsIE1hcENvb3Jk
aW5hdGVzRmxhZ3MgbW9kZSwgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7Ci0gICAgLy8gSWYgYSBj
b250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywK
KyAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBhbmQgd2FzIG5vdCBudWxscHRy
IG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQg
Ynkgbm93LgogICAgIEFTU0VSVF9BUkcocmVwYWludENvbnRhaW5lciwgIXJlcGFpbnRDb250YWlu
ZXIgfHwgcmVwYWludENvbnRhaW5lciA9PSB0aGlzKTsKICAgICBBU1NFUlRfVU5VU0VEKHdhc0Zp
eGVkLCAhd2FzRml4ZWQgfHwgKndhc0ZpeGVkID09IChtb2RlICYgSXNGaXhlZCkpOwpAQCAtNDM2
LDcgKzQzNiw3IEBAIHZvaWQgUmVuZGVyVmlldzo6bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpCiAKIGNvbnN0IFJlbmRlck9iamVj
dCogUmVuZGVyVmlldzo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYgZ2VvbWV0cnlN
YXApIGNvbnN0CiB7Ci0gICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdh
cyBub3QgMCBvciB0aGUgUmVuZGVyVmlldywKKyAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3Bl
Y2lmaWVkLCBhbmQgd2FzIG5vdCBudWxscHRyIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRo
ZW4gd2Ugc2hvdWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgogICAgIEFTU0VSVF9BUkcoYW5jZXN0
b3JUb1N0b3BBdCwgIWFuY2VzdG9yVG9TdG9wQXQgfHwgYW5jZXN0b3JUb1N0b3BBdCA9PSB0aGlz
KTsKIApAQCAtNDUzLDcgKzQ1Myw3IEBAIGNvbnN0IFJlbmRlck9iamVjdCogUmVuZGVyVmlldzo6
cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqCiAgICAgfSBl
bHNlCiAgICAgICAgIGdlb21ldHJ5TWFwLnB1c2hWaWV3KHRoaXMsIHNjcm9sbE9mZnNldCk7CiAK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW5kZXJWaWV3
OjptYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzIG1vZGUsIFRyYW5z
Zm9ybVN0YXRlJiB0cmFuc2Zvcm1TdGF0ZSkgY29uc3QKQEAgLTY4MSw3ICs2ODEsNyBAQCBMYXlv
dXRSZWN0IFJlbmRlclZpZXc6OnZpc3VhbE92ZXJmbG93UmVjdCgpIGNvbnN0CiAKIHZvaWQgUmVu
ZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0
CiB7Ci0gICAgLy8gSWYgYSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBv
ciB0aGUgUmVuZGVyVmlldywKKyAgICAvLyBJZiBhIGNvbnRhaW5lciB3YXMgc3BlY2lmaWVkLCBh
bmQgd2FzIG5vdCBudWxscHRyIG9yIHRoZSBSZW5kZXJWaWV3LAogICAgIC8vIHRoZW4gd2Ugc2hv
dWxkIGhhdmUgZm91bmQgaXQgYnkgbm93LgogICAgIEFTU0VSVF9BUkcocmVwYWludENvbnRhaW5l
ciwgIXJlcGFpbnRDb250YWluZXIgfHwgcmVwYWludENvbnRhaW5lciA9PSB0aGlzKTsKIApAQCAt
NzMzLDcgKzczMyw3IEBAIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogc3RhdGljIFJlbmRlck9iamVj
dCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBv
ZmZzZXQpCiB7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSBvYmplY3QtPmNoaWxk
QXQob2Zmc2V0KTsKICAgICByZXR1cm4gY2hpbGQgPyBjaGlsZCA6IG9iamVjdC0+bmV4dEluUHJl
T3JkZXJBZnRlckNoaWxkcmVuKCk7CkBAIC0xMTI2LDcgKzExMjYsNyBAQCBJbnRSZWN0IFJlbmRl
clZpZXc6OnVuc2NhbGVkRG9jdW1lbnRSZWN0KCkgY29uc3QKIAogYm9vbCBSZW5kZXJWaWV3Ojpy
b290QmFja2dyb3VuZElzRW50aXJlbHlGaXhlZCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyRWxlbWVu
dCogcm9vdE9iamVjdCA9IGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudCgp
LmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDogMDsKKyAgICBSZW5kZXJFbGVtZW50KiBy
b290T2JqZWN0ID0gZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgIGlmICghcm9vdE9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaAppbmRleCBkNGMzNjkwYzIxNjJkYmM0MDNhNjFlYWViYjFhMTUxNDVkNTU0NWFjLi5hYjA0
N2Q0MjczN2M4YmE3ZDZkOTdkMTAxMjE1ZjhlYTBmMDg1Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmgKQEAgLTI0Myw3ICsyNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
bnNjaGVkdWxlTGF6eVJlcGFpbnQoUmVuZGVyQm94Jik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0
dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3Mg
PSBBcHBseUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGlu
YXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFw
cGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9T
dG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MsIFRyYW5zZm9y
bVN0YXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzQ29sdW1u
cyhpbnQgZGVzaXJlZENvbHVtbkNvdW50KSBjb25zdCBvdmVycmlkZTsK
</data>
<flag name="review"
          id="272185"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>