<?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>131199</bug_id>
          
          <creation_ts>2014-04-03 18:09:03 -0700</creation_ts>
          <short_desc>Run filter animations in the UI process with UI-side compositing</short_desc>
          <delta_ts>2014-04-14 13:48:16 -0700</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>dino</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997406</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-03 18:09:03 -0700</bug_when>
    <thetext>Run filter animations in the UI process with UI-side compositing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997413</commentid>
    <comment_count>1</comment_count>
      <attachid>228570</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-03 18:16:23 -0700</bug_when>
    <thetext>Created attachment 228570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997415</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-03 18:18:53 -0700</bug_when>
    <thetext>Attachment 228570 did not pass style-queue:


ERROR: Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1678:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/filters/FilterOperation.h:130:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/filters/FilterOperation.h:159:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/filters/FilterOperation.h:186:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/filters/FilterOperation.h:227:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/filters/FilterOperation.h:260:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/filters/FilterOperation.h:294:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/filters/FilterOperation.h:327:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 10 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000591</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-14 13:48:16 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/167266</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228570</attachid>
            <date>2014-04-03 18:16:23 -0700</date>
            <delta_ts>2014-04-03 22:46:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131199-20140403181602.patch</filename>
            <type>text/plain</type>
            <size>42243</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEwOGI5Nzc1MjJiZjFm
MzZmZTlmYzczODYzYzBkZTJiYWVmMzE2OC4uNDk3NWQ4YTExY2JlM2NiOTE3YjhiZGQ0ODYyOGRi
ZDExYzkyYmJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE0LTA0LTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIFJ1biBmaWx0ZXIg
YW5pbWF0aW9ucyBpbiB0aGUgVUkgcHJvY2VzcyB3aXRoIFVJLXNpZGUgY29tcG9zaXRpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTE5OQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTY0Nzk0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKwkJQWRkIEZpbHRlck9wZXJhdGlvbjo6Y2xvbmUoKSB3aGljaCBpcyB1
c2VkIGR1cmluZyBkZWNvZGluZy4KKwkJRXhwb3J0IHNvbWUgdGhpbmdzLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJPcGVyYXRpb24uaDoKKworMjAxNC0wNC0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KKwogICAgICAgICBQaXhlbGF0ZWQgV2ViVmlldyB3aGVuIGRpc3BsYXkgaXMg
Y2hhbmdlZCBmcm9tIGhpRFBJIHRvIHJlZ3VsYXJEUEkKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTE4NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTQyYjY3MTc0
OTJjMjcxM2IyMWQxMGNlMmFjMmMzZjc4MTcxMDU4ZC4uOGY0OGI3NDg4NmU1ODJhODdhZmVkYmE5
NTg0OTM5YzExNTYxYmNmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDE0LTA0LTAz
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIFJ1biBm
aWx0ZXIgYW5pbWF0aW9ucyBpbiB0aGUgVUkgcHJvY2VzcyB3aXRoIFVJLXNpZGUgY29tcG9zaXRp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTE5
OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY0Nzk0ODc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwOiBSZW1vdmVkIGxvdHMgb2YgV2ViQ29yZTo6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uUmVjdD46OmRlY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjplbmNvZGUpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVjb2RlKToKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkSW1hZ2U+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRJbWFnZT46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8VVJMPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxVc2VyU3R5bGVTaGVldD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8VXNlclN0eWxlU2hlZXQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFVzZXJTY3JpcHQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFVzZXJT
Y3JpcHQ+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz46OmVuY29kZSk6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+Ojpk
ZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFN0aWNreVBvc2l0aW9uVmlld3Bv
cnRDb25zdHJhaW50cz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U3Rp
Y2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxGaWx0ZXJPcGVyYXRpb24+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpk
ZWNvZGVGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEZpbHRl
ck9wZXJhdGlvbnM+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlVzZXJTdHlsZVNoZWV0Pjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5bGVTaGVldD46OmRlY29kZSk6IERlbGV0ZWQuCisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclNjcmlwdD46OmVuY29kZSk6
IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclNjcmlw
dD46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+Ojpk
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZp
eGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZW5jb2RlKTogRGVsZXRlZC4KKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50cz46OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZW5jb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpl
bmNvZGVGaWx0ZXJPcGVyYXRpb24pOiBEZWxldGVkLgorICAgICAgICBBZGQgZW5jb2RpbmcvZGVj
b2Rpbmcgc3VwcG9ydCBmb3IgRmlsdGVyT3BlcmF0aW9uLgorICAgICAgICBkZWNvZGVGaWx0ZXJP
cGVyYXRpb24oKSBoYXMgdG8gYmUgYSBiYXJlIGZ1bmN0aW9uIGJlY2F1c2Ugb2YgdGhlIFJlZlB0
cgorICAgICAgICBvdXQgcGFyYW1ldGVyLgorICAgICAgICBSRUZFUkVOQ0UgZmlsdGVycyBzaG91
bGQgbmV2ZXIgYmUgZW5jb2RlZCwgc2luY2UgdGhleSBoYXZlIENhY2hlZFNWR0RvY3VtZW50UmVm
ZXJlbmNlcy4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKwor
ICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwpOgorICAg
ICAgICBBZGQgbG9nZ2luZyBmb3IgZmlsdGVyIGFuaW1hdGlvbnMgdG8gdGhlIFJlbW90ZUxheWVy
VHJlZSBsb2cgb3V0cHV0LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFw
aGljc0xheWVyQ0FSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dy
YXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdyYXBoaWNzTGF5ZXJD
QVJlbW90ZTo6YWRkQW5pbWF0aW9uKTogRGVsZXRlZC4gV2UgY2FuIHJ1bgorICAgICAgICBmaWx0
ZXIgYW5pbWF0aW9ucyBub3cuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaDoKKyAgICAgICAgS2V5VmFsdWVzIGhhdmUgYSBSZWZQ
dHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiBub3cgKHdoaWNoIGNhbid0IGJlIHBhcnQgb2YK
KyAgICAgICAgdGhlIHVuaW9uIGJlY2F1c2Ugd2UgbmVlZCBpdHMgY29uc3RydWN0b3IgdG8gZ2V0
IGNhbGxlZCkuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlOjpLZXlmcmFtZVZhbHVlOjplbmNvZGUpOiBFbmNvZGUgdGhlIGZpbHRlci4KKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZTo6ZGVjb2Rl
KTogRGVjb2RlIHRoZSBmaWx0ZXIuCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGU6OnNldEZyb21WYWx1ZSk6IEltcGxlbWVudC4KKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VG9WYWx1ZSk6IEltcGxlbWVudC4KKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VmFsdWVzKTogSW1wbGVtZW50
LgorICAgICAgICAoV2ViS2l0OjphbmltYXRpb25WYWx1ZUZyb21LZXlmcmFtZVZhbHVlKTogSGFu
ZGxlIGZpbHRlcnMuCisKKzIwMTQtMDQtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CisKICAgICAgICAgUGl4ZWxhdGVkIFdlYlZpZXcgd2hlbiBkaXNwbGF5IGlzIGNo
YW5nZWQgZnJvbSBoaURQSSB0byByZWd1bGFyRFBJCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzExODUKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2
NTEyMTg0JjE2NTAzNzE0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAxOWI5NDc4MTg3MmFlZTZh
ZGY0MTNlNjc4OGFiNWM3NjJjYjg3NGY5Li4yOWU2ZDMzMDk5ZGRiMDk2MzIyYzFmN2M1NTM1Yzc4
NWVlZmE4ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTA0LDYgKzEwNCw3IEBAIF9fWk43
V2ViQ29yZTEwVGV4dFN0cmVhbTdyZWxlYXNlRXYKIF9fWk43V2ViQ29yZTEwVGV4dFN0cmVhbWxz
RVBLYwogX19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNFUEt2CiBfX1pON1dlYkNvcmUxMFRleHRT
dHJlYW1sc0VSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTEwVGV4dFN0cmVhbWxzRVJLTlNf
OEludFBvaW50RQogX19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNFUktOU185RmxvYXRTaXplRQog
X19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNFYgogX19aTjdXZWJDb3JlMTBUZXh0U3RyZWFtbHNF
ZApAQCAtNzMyLDYgKzczMyw3IEBAIF9fWk43V2ViQ29yZTE3SlNET01HbG9iYWxPYmplY3Q2c19p
bmZvRQogX19aTjdXZWJDb3JlMTdNb3VzZVJlbGF0ZWRFdmVudDdvZmZzZXRYRXYKIF9fWk43V2Vi
Q29yZTE3TW91c2VSZWxhdGVkRXZlbnQ3b2Zmc2V0WUV2CiBfX1pON1dlYkNvcmUxN1BsYXRmb3Jt
Q0FGaWx0ZXJzMTdzZXRGaWx0ZXJzT25MYXllckVQN0NBTGF5ZXJSS05TXzE2RmlsdGVyT3BlcmF0
aW9uc0UKK19fWk43V2ViQ29yZTE3UGxhdGZvcm1DQUZpbHRlcnMyM2ZpbHRlclZhbHVlRm9yT3Bl
cmF0aW9uRVBLTlNfMTVGaWx0ZXJPcGVyYXRpb25FaQogX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFu
c2FjdGlvbjViZWdpbkV2CiBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9uNmNvbW1pdEV2
CiBfX1pON1dlYkNvcmUxN1NRTGl0ZVRyYW5zYWN0aW9uOHJvbGxiYWNrRXYKQEAgLTgxMCw2ICs4
MTIsNyBAQCBfX1pON1dlYkNvcmUxOVRleHRSZXNvdXJjZURlY29kZXI2ZGVjb2RlRVBLY20KIF9f
Wk43V2ViQ29yZTE5VGV4dFJlc291cmNlRGVjb2RlckMxRVJLTjNXVEY2U3RyaW5nRVJLTlNfMTJU
ZXh0RW5jb2RpbmdFYgogX19aTjdXZWJDb3JlMTlUZXh0UmVzb3VyY2VEZWNvZGVyRDFFdgogX19a
TjdXZWJDb3JlMTllbmNsb3NpbmdMYXlvdXRSZWN0RVJLTlNfOUZsb2F0UmVjdEUKK19fWk43V2Vi
Q29yZTE5ZmxvYXRWYWx1ZUZvckxlbmd0aEVSS05TXzZMZW5ndGhFZlBOU18xMFJlbmRlclZpZXdF
CiBfX1pON1dlYkNvcmUxOWdldEZpbGVDcmVhdGlvblRpbWVFUktOM1dURjZTdHJpbmdFUmwKIF9f
Wk43V2ViQ29yZTE5dG9JbnQzMkVuZm9yY2VSYW5nZUVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNW
YWx1ZUUKIF9fWk43V2ViQ29yZTIwQ2FjaGVkUmVzb3VyY2VMb2FkZXIzMWdhcmJhZ2VDb2xsZWN0
RG9jdW1lbnRSZXNvdXJjZXNFdgpAQCAtOTUzLDcgKzk1Niw2IEBAIF9fWk43V2ViQ29yZTI0RnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyMTR3aWxsRGV0YWNoUGFnZUV2CiBfX1pON1dlYkNvcmUyNEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlckMyRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUyNEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlckQyRXYKIF9fWk43V2ViQ29yZTI0SW1tdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzRDFFdgotX19aTjdXZWJDb3JlMjRSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb25DMUVSS04z
V1RGNlN0cmluZ0VTNF8KIF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwRVJO
U184RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFUzVfTlNfMTlQYXJzZXJDb250ZW50UG9saWN5RQog
X19aTjdXZWJDb3JlMjRkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uRVJLTjNXVEY2U3RyaW5nRQpAQCAtMTk1NSw2ICsxOTU3LDcgQEAgX19aVFZON1dl
YkNvcmUxNkRhdGFiYXNlU3RyYXRlZ3lFCiBfX1pUVk43V2ViQ29yZTE2SWNvbkRhdGFiYXNlQmFz
ZUUKIF9fWlRWTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWlRWTjdXZWJDb3JlMTlC
bHVyRmlsdGVyT3BlcmF0aW9uRQorX19aVFZON1dlYkNvcmUyMkRlZmF1bHRGaWx0ZXJPcGVyYXRp
b25FCiBfX1pUVk43V2ViQ29yZTI1RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbkUKIF9fWlRWTjdX
ZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOFNldHRpbmdzRQogX19aVFZON1dl
YkNvcmUzMUJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb25FCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24u
aAppbmRleCAyMzA2YjdlMWY1MjkyNGMzMGQzMTk3MTNkZTE5NTBhOGQ0OTcwNzMyLi41ZjczZjBh
OGZiMzk0MTNhNDFlNWYzOTMwMTQ5YWNiNWJhYzEzOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgK
QEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RmlsdGVyT3BlcmF0aW9u
KCkgeyB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgp
IGNvbnN0ID0gMDsKKwogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKQEAgLTEyNCw2ICsx
MjYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlZmF1bHRGaWx0
ZXJPcGVyYXRpb24ocmVwcmVzZW50ZWRUeXBlKSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uKHJlcHJlc2Vu
dGVkVHlwZSgpKSk7CisgICAgfQorCiAgICAgT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3JlcHJlc2VudGVkVHlwZTsgfQogCiBwcml2YXRlOgpAQCAtMTQ4
LDYgKzE1NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFzc3Ro
cm91Z2hGaWx0ZXJPcGVyYXRpb24oKSk7CiAgICAgfQogCisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbigpKTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3Bl
cmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZQogICAgIHsKQEAgLTE3MCw2ICsxODIsMTMgQEAgcHVi
bGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5SZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oKTsKIAor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIC8vIFJlZmVyZW5jZSBmaWx0ZXJzIGNhbm5vdCBiZSBjbG9u
ZWQuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0yMDQsNiArMjIzLDExIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihhbW91bnQo
KSwgdHlwZSgpKSk7CisgICAgfQorCiAgICAgZG91YmxlIGFtb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYW1vdW50OyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBi
bGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBi
bGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CkBAIC0yMzIsNiArMjU2LDExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0KIAorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CisgICAgfQorCiAgICAgZG91YmxlIGFtb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0
c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gT1BBQ0lUWTsgfQpA
QCAtMjYxLDYgKzI5MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Qmx1ckZpbHRlck9wZXJhdGlvbihzdGQ6Om1vdmUoc3RkRGV2aWF0aW9uKSkpOwogICAgIH0KIAor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmx1ckZpbHRlck9wZXJh
dGlvbihzdGREZXZpYXRpb24oKSkpOworICAgIH0KKwogICAgIGNvbnN0IExlbmd0aCYgc3RkRGV2
aWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGREZXZpYXRpb247IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAg
LTI4OSw2ICszMjMsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERy
b3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24obG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IpKTsK
ICAgICB9CiAKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24obG9jYXRpb24oKSwgc3RkRGV2aWF0aW9uKCksIGNvbG9yKCkp
KTsKKyAgICB9CisKICAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ueCgpOyB9
CiAgICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uLnkoKTsgfQogICAgIEludFBv
aW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBjZTI4NDE0OTE5
ZGQ1ZDBhMjdkZTQ2YmU1YjZjYzc2MTY4YzFmNzExLi5jYWMzMmFmNzI4YTU3MzdiYzNjMTU2Mjli
MWNjMDA2NTM4MzI0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMjc3LDkgKzI3Nyw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJ
bnRTaXplPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSW50U2l6ZSYgaW50U2l6
ZSkKICAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxJbnRTaXplPjo6ZGVjb2RlKGRlY29k
ZXIsIGludFNpemUpOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlJlZ2lvbjo6U3Bhbj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXImLCBjb25zdCBXZWJDb3JlOjpSZWdpb246OlNwYW4mKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVnaW9uOjpTcGFuJik7Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZ2lvbjo6U3Bhbj4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBSZWdpb246OlNwYW4mKTsKKyAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgUmVnaW9uOjpTcGFuJik7CiB9OwogCiB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVnaW9uOjpTcGFuPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgUmVnaW9uOjpTcGFuJiBzcGFuKQpAQCAtODQzLDcgKzg0Myw3IEBAIHZvaWQg
QXJndW1lbnRDb2RlcjxTZWxlY3Rpb25SZWN0Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU2VsZWN0CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxTZWxlY3Rpb25SZWN0Pjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgU2VsZWN0aW9uUmVjdCYgc2VsZWN0aW9u
UmVjdCkKIHsKLSAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Q7CisgICAgSW50UmVjdCByZWN0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBzZWxlY3Rpb25SZWN0LnNldFJlY3QocmVjdCk7CkBAIC04NTEsNyArODUxLDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFNlbGVjdGlvblJlY3Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBTZWxlY3Rpb25SZWMKICAgICB1aW50MzJfdCBkaXJlY3Rpb247CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkaXJlY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc2VsZWN0
aW9uUmVjdC5zZXREaXJlY3Rpb24oKFdlYkNvcmU6OlRleHREaXJlY3Rpb24pZGlyZWN0aW9uKTsK
KyAgICBzZWxlY3Rpb25SZWN0LnNldERpcmVjdGlvbigoVGV4dERpcmVjdGlvbilkaXJlY3Rpb24p
OwogCiAgICAgaW50IGludFZhbHVlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaW50VmFsdWUp
KQpAQCAtMTEyMiw3ICsxMTIyLDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlU2hhcmVkQnVmZmVyKEFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mIGIKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZFdlYkNvbnRlbnQmIGNvbnRlbnQpCit2b2lkIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNv
bnRlbnQ+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQYXN0ZWJvYXJk
V2ViQ29udGVudCYgY29udGVudCkKIHsKICAgICBlbmNvZGVyIDw8IGNvbnRlbnQuY2FuU21hcnRD
b3B5T3JEZWxldGU7CiAgICAgZW5jb2RlciA8PCBjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdDsK
QEAgLTExMzcsNyArMTEzNyw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkV2ViQ29u
dGVudD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiAgICAgICAgIGVu
Y29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBjb250ZW50LmNsaWVudERhdGFbaV0uZ2V0KCkpOwog
fQogCi1ib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjpkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKK2Jvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkV2ViQ29udGVudD46OmRlY29kZShB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQog
ewogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGVudC5jYW5TbWFydENvcHlPckRlbGV0ZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExNjEsNyArMTE2MSw3IEBAIGJvb2wgQXJndW1l
bnRDb2RlcjxQYXN0ZWJvYXJkV2ViQ29udGVudD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFdlYkNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxQ
YXN0ZWJvYXJkSW1hZ2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKK3ZvaWQgQXJndW1lbnRD
b2RlcjxQYXN0ZWJvYXJkSW1hZ2U+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKICAgICBlbmNvZGVJbWFn
ZShlbmNvZGVyLCBwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2UuZ2V0KCkpOwogICAgIGVuY29kZXIgPDwg
cGFzdGVib2FyZEltYWdlLnVybC51cmw7CkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8UGFzdGVib2FyZEltYWdlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgV2ViQwogICAgICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgcGFzdGVi
b2FyZEltYWdlLnJlc291cmNlRGF0YS5nZXQoKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxQ
YXN0ZWJvYXJkSW1hZ2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKK2Jvb2wgQXJndW1lbnRDb2RlcjxQ
YXN0ZWJvYXJkSW1hZ2U+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKICAgICBpZiAoIWRlY29kZUltYWdlKGRlY29k
ZXIsIHBhc3RlYm9hcmRJbWFnZS5pbWFnZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEz
MzgsMTEgKzEzMzgsMTEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVSTD46OmRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFVSTCYgcmVzdWx0KQogICAgIFN0cmluZyB1cmxBc1N0cmluZzsK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHVybEFzU3RyaW5nKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJlc3VsdCA9IFVSTChXZWJDb3JlOjpQYXJzZWRVUkxTdHJpbmcsIHVybEFzU3Ry
aW5nKTsKKyAgICByZXN1bHQgPSBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxBc1N0cmluZyk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpVc2VyU3R5
bGVTaGVldD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6
OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKK3ZvaWQgQXJndW1lbnRDb2RlcjxVc2Vy
U3R5bGVTaGVldD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFVzZXJT
dHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKICAgICBlbmNvZGVyIDw8IHVzZXJTdHlsZVNo
ZWV0LnNvdXJjZSgpOwogICAgIGVuY29kZXIgPDwgdXNlclN0eWxlU2hlZXQudXJsKCk7CkBAIC0x
MzUyLDcgKzEzNTIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclN0eWxlU2hl
ZXQ+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjbwogICAgIGVuY29kZXIuZW5j
b2RlRW51bSh1c2VyU3R5bGVTaGVldC5sZXZlbCgpKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQorYm9vbCBBcmd1bWVu
dENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0KQogewogICAgIFN0cmluZyBzb3VyY2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UpKQpAQCAtMTM3MCwxOSArMTM3MCwxOSBAQCBi
b29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+OjpkZWNvZGUoQXJndW1l
bnREZWNvZGVyJiBkZWNvZGVyLCBXZQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYmxhY2tsaXN0
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV2ViQ29yZTo6VXNlckNvbnRlbnRJbmpl
Y3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lczsKKyAgICBVc2VyQ29udGVudEluamVjdGVkRnJhbWVz
IGluamVjdGVkRnJhbWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGluamVjdGVkRnJh
bWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV2ViQ29yZTo6VXNlclN0eWxlTGV2
ZWwgbGV2ZWw7CisgICAgVXNlclN0eWxlTGV2ZWwgbGV2ZWw7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUVudW0obGV2ZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1c2VyU3R5bGVT
aGVldCA9IFdlYkNvcmU6OlVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJs
YWNrbGlzdCwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsKKyAgICB1c2VyU3R5bGVTaGVldCA9IFVz
ZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0ZWRG
cmFtZXMsIGxldmVsKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OlVzZXJTY3JpcHQ+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQordm9pZCBBcmd1bWVudENvZGVy
PFVzZXJTY3JpcHQ+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVc2Vy
U2NyaXB0JiB1c2VyU2NyaXB0KQogewogICAgIGVuY29kZXIgPDwgdXNlclNjcmlwdC5zb3VyY2Uo
KTsKICAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHQudXJsKCk7CkBAIC0xMzkyLDcgKzEzOTIsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclNjcmlwdD46OmVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJTY3Jp
cHQuaW5qZWN0ZWRGcmFtZXMoKSk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpV
c2VyU2NyaXB0Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6VXNl
clNjcmlwdCYgdXNlclNjcmlwdCkKK2Jvb2wgQXJndW1lbnRDb2RlcjxVc2VyU2NyaXB0Pjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgVXNlclNjcmlwdCYgdXNlclNjcmlwdCkKIHsK
ICAgICBTdHJpbmcgc291cmNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlKSkKQEAg
LTE0MTAsMTkgKzE0MTAsMTkgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlVzZXJTY3Jp
cHQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3IKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGJsYWNrbGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFdl
YkNvcmU6OlVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWU7CisgICAgVXNlclNj
cmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShpbmplY3Rpb25UaW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgV2ViQ29y
ZTo6VXNlckNvbnRlbnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lczsKKyAgICBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzIGluamVjdGVkRnJhbWVzOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGluamVjdGVkRnJhbWVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdXNl
clNjcmlwdCA9IFdlYkNvcmU6OlVzZXJTY3JpcHQoc291cmNlLCB1cmwsIHdoaXRlbGlzdCwgYmxh
Y2tsaXN0LCBpbmplY3Rpb25UaW1lLCBpbmplY3RlZEZyYW1lcyk7CisgICAgdXNlclNjcmlwdCA9
IFVzZXJTY3JpcHQoc291cmNlLCB1cmwsIHdoaXRlbGlzdCwgYmxhY2tsaXN0LCBpbmplY3Rpb25U
aW1lLCBpbmplY3RlZEZyYW1lcyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM+OjplbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYVBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCit2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShwYXJh
bWV0ZXJzLmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KTsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0ocGFyYW1ldGVycy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkpOwpAQCAtMTQzNCw3ICsxNDM0
LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhUGFyYW1ldGVy
cz46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGUKICAgICBlbmNvZGVyIDw8IHBhcmFtZXRlcnMu
aGFzRW5hYmxlZFZlcnRpY2FsU2Nyb2xsYmFyOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbXMpCitib29s
IEFyZ3VtZW50Q29kZXI8U2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzPjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBwYXJhbXMpCiB7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocGFyYW1zLmhvcml6b250YWxTY3JvbGxFbGFzdGlj
aXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQ1NCw3ICsxNDU0LDcgQEAgYm9vbCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhUGFyYW1ldGVycz46OmRlY29kZShB
cmd1bWVudERlY29kZXImIGQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Rml4ZWRQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHMmIHZpZXdwb3J0Q29uc3RyYWludHMpCit2b2lkIEFyZ3VtZW50Q29kZXI8
Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYgdmlld3Bv
cnRDb25zdHJhaW50cykKIHsKICAgICBlbmNvZGVyIDw8IHZpZXdwb3J0Q29uc3RyYWludHMuYWxp
Z25tZW50T2Zmc2V0KCk7CiAgICAgZW5jb2RlciA8PCB2aWV3cG9ydENvbnN0cmFpbnRzLmFuY2hv
ckVkZ2VzKCk7CkBAIC0xNDYzLDcgKzE0NjMsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+OjplbmNvZGUoQXJndW1lbnRFbgog
ICAgIGVuY29kZXIgPDwgdmlld3BvcnRDb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5
b3V0KCk7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaXhlZFBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50cz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNv
cmU6OkZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiB2aWV3cG9ydENvbnN0cmFpbnRz
KQorYm9vbCBBcmd1bWVudENvZGVyPEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHMmIHZpZXdwb3J0Q29uc3RyYWludHMpCiB7CiAgICAgRmxvYXRTaXplIGFsaWdubWVu
dE9mZnNldDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsaWdubWVudE9mZnNldCkpCkBAIC0x
NDgxLDcgKzE0ODEsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rml4ZWRQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM+OjpkZWNvZGUoQXJndW1lbnREZQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHZpZXdwb3J0Q29uc3RyYWludHMgPSBXZWJDb3JlOjpGaXhlZFBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50cygpOworICAgIHZpZXdwb3J0Q29uc3RyYWludHMgPSBGaXhlZFBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50cygpOwogICAgIHZpZXdwb3J0Q29uc3RyYWludHMuc2V0QWxp
Z25tZW50T2Zmc2V0KGFsaWdubWVudE9mZnNldCk7CiAgICAgdmlld3BvcnRDb25zdHJhaW50cy5z
ZXRBbmNob3JFZGdlcyhhbmNob3JFZGdlcyk7CiAKQEAgLTE0OTEsNyArMTQ5MSw3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cz46
OmRlY29kZShBcmd1bWVudERlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMmIHZpZXdwb3J0Q29uc3RyYWludHMpCit2b2lkIEFyZ3VtZW50Q29k
ZXI8U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgY29uc3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiB2
aWV3cG9ydENvbnN0cmFpbnRzKQogewogICAgIGVuY29kZXIgPDwgdmlld3BvcnRDb25zdHJhaW50
cy5hbGlnbm1lbnRPZmZzZXQoKTsKICAgICBlbmNvZGVyIDw8IHZpZXdwb3J0Q29uc3RyYWludHMu
YW5jaG9yRWRnZXMoKTsKQEAgLTE1MDksNyArMTUwOSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM+OjplbmNvZGUoQXJndW1l
bnRFCiAgICAgZW5jb2RlciA8PCB2aWV3cG9ydENvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExh
c3RMYXlvdXQoKTsKIH0KIAotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlN0aWNreVBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50cz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYgdmlld3BvcnRDb25z
dHJhaW50cykKK2Jvb2wgQXJndW1lbnRDb2RlcjxTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBTdGlja3lQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMmIHZpZXdwb3J0Q29uc3RyYWludHMpCiB7CiAgICAgRmxvYXRTaXpl
IGFsaWdubWVudE9mZnNldDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFsaWdubWVudE9mZnNl
dCkpCkBAIC0xNTU1LDcgKzE1NTUsNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U3Rp
Y2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzPjo6ZGVjb2RlKEFyZ3VtZW50RAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICB2aWV3cG9ydENvbnN0cmFpbnRzID0gV2ViQ29yZTo6U3Rp
Y2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzKCk7CisgICAgdmlld3BvcnRDb25zdHJhaW50
cyA9IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cygpOwogICAgIHZpZXdwb3J0Q29u
c3RyYWludHMuc2V0QWxpZ25tZW50T2Zmc2V0KGFsaWdubWVudE9mZnNldCk7CiAgICAgdmlld3Bv
cnRDb25zdHJhaW50cy5zZXRBbmNob3JFZGdlcyhhbmNob3JFZGdlcyk7CiAKQEAgLTE1NzUsNjMg
KzE1NzUsNTggQEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50cz46OmRlY29kZShBcmd1bWVudEQKIH0KIAogI2lmIEVOQUJMRShDU1Nf
RklMVEVSUykgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLXN0YXRpYyB2b2lkIGVuY29k
ZUZpbHRlck9wZXJhdGlvbihBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgZmlsdGVyKQordm9pZCBBcmd1bWVudENvZGVyPEZpbHRlck9wZXJhdGlvbj46OmVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgZmls
dGVyKQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShmaWx0ZXIudHlwZSgpKTsKIAogICAgIHN3
aXRjaCAoZmlsdGVyLnR5cGUoKSkgewogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVO
Q0U6IHsKLSAgICAgICAgY29uc3QgYXV0byYgcmVmZXJlbmNlRmlsdGVyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uJj4oZmlsdGVyKTsKLSAgICAgICAgZW5jb2Rl
ciA8PCByZWZlcmVuY2VGaWx0ZXIudXJsKCk7Ci0gICAgICAgIGVuY29kZXIgPDwgcmVmZXJlbmNl
RmlsdGVyLmZyYWdtZW50KCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlNBVFVSQVRFOgogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgotICAgICAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb24mPihmaWx0ZXIpLmFtb3VudCgpOworICAgICAgICBlbmNvZGVyIDw8IHRvQmFzaWNDb2xv
ck1hdHJpeEZpbHRlck9wZXJhdGlvbihmaWx0ZXIpLmFtb3VudCgpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgogICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpPUEFDSVRZOgogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgogICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uJj4oZmls
dGVyKS5hbW91bnQoKTsKKyAgICAgICAgZW5jb2RlciA8PCB0b0Jhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24oZmlsdGVyKS5hbW91bnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6Ci0gICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nh
c3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiY+KGZpbHRlcikuc3RkRGV2aWF0aW9uKCk7Cisg
ICAgICAgIGVuY29kZXIgPDwgdG9CbHVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlcikuc3RkRGV2aWF0
aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NI
QURPVzogewotICAgICAgICBjb25zdCBhdXRvJiBkcm9wU2hhZG93RmlsdGVyID0gc3RhdGljX2Nh
c3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiY+KGZpbHRlcik7CisgICAgICAgIGNv
bnN0IGF1dG8mIGRyb3BTaGFkb3dGaWx0ZXIgPSB0b0Ryb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24o
ZmlsdGVyKTsKICAgICAgICAgZW5jb2RlciA8PCBkcm9wU2hhZG93RmlsdGVyLmxvY2F0aW9uKCk7
CiAgICAgICAgIGVuY29kZXIgPDwgZHJvcFNoYWRvd0ZpbHRlci5zdGREZXZpYXRpb24oKTsKICAg
ICAgICAgZW5jb2RlciA8PCBkcm9wU2hhZG93RmlsdGVyLmNvbG9yKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6REVGQVVMVDoKKyAgICAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKHRvRGVmYXVsdEZpbHRlck9wZXJhdGlvbihmaWx0ZXIpLnJlcHJlc2Vu
dGVkVHlwZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlBB
U1NUSFJPVUdIOgogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpOT05FOgogICAgICAgICBicmVh
azsKLSAgICB9OworICAgIH0KIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlRmlsdGVyT3BlcmF0aW9u
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4mIGZpbHRl
cikKK2Jvb2wgZGVjb2RlRmlsdGVyT3BlcmF0aW9uKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rlciwg
UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4mIGZpbHRlcikKIHsKICAgICBGaWx0ZXJPcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUgdHlwZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bSh0eXBlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRTogewotICAgICAgICBTdHJpbmcgdXJsOwotICAgICAg
ICBTdHJpbmcgZnJhZ21lbnQ7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJsKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShmcmFn
bWVudCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGZpbHRlciA9IFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHVybCwgZnJhZ21lbnQpOworICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Tk9O
RToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfQogICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpHUkFZU0NBTEU6CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgogICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKQEAgLTE2NzIsMTIgKzE2NjcsMTUgQEAg
c3RhdGljIGJvb2wgZGVjb2RlRmlsdGVyT3BlcmF0aW9uKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgUmVmUHRyPEZpbHRlck9wZXJhdGkKICAgICAgICAgZmlsdGVyID0gRHJvcFNoYWRvd0ZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpERUZBVUxUOgotICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKLSAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6Tk9ORToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6REVGQVVMVDogeworICAgICAg
ICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgcmVwcmVzZW50ZWRUeXBlOworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXByZXNlbnRlZFR5cGUpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBmaWx0ZXIgPSBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUocmVwcmVzZW50ZWRUeXBlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgfTsKLQorICAgIH0K
KyAgICB9CisgICAgICAgICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY4Nyw3ICsx
Njg1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPEZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUoQXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGaWwKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90PihmaWx0ZXJzLnNpemUoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIGZp
bHRlciA6IGZpbHRlcnMub3BlcmF0aW9ucygpKQotICAgICAgICBlbmNvZGVGaWx0ZXJPcGVyYXRp
b24oZW5jb2RlciwgKmZpbHRlcik7CisgICAgICAgIGVuY29kZXIgPDwgKmZpbHRlcjsKIH0KIAog
Ym9vbCBBcmd1bWVudENvZGVyPEZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGJhM2U3YjU3YTYxZDkxMGE3
ZGM0ZmVlYTNjNTI1NWY1NTUzODBjMGYuLmU3N2M3N2MwZmQ2ZmZmYjJjZTdmOTc3NjdiOGE1NWRk
YWYzZWJiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb247CiBjbGFzcyBDdXJzb3I7CiBjbGFzcyBEYXRhYmFzZURldGFpbHM7
CitjbGFzcyBGaWx0ZXJPcGVyYXRpb247CiBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3Mg
RmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0UG9pbnQzRDsKQEAgLTM3OSw2ICszODAsMTEgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7
CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OkZpbHRlck9wZXJhdGlvbnMmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyJiwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOwogfTsKKyAgICAKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9w
ZXJhdGlvbiYpOworfTsKK2Jvb2wgZGVjb2RlRmlsdGVyT3BlcmF0aW9uKEFyZ3VtZW50RGVjb2Rl
ciYsIFJlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+Jik7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggZWNmYzE4YWQ1ODYxOGM2
NWI5NDQzMTdlMGY5MTg4N2UzMWYzMzczNS4uMmJkNTAzMjI4OTBkNDM4OGUxN2ZiYjFmNzc0YzA4
ODQyNDQ4MjM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0xl
bmd0aEZ1bmN0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UZXh0U3RyZWFtLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RpbWluZ0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+
CkBAIC01NjAsNiArNTYxLDcgQEAgcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoQ29sb3IpOwogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoRmxvYXRSZWN0KTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQ+Jik7CisgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBG
aWx0ZXJPcGVyYXRpb24mKTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRp
ZXMmKTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlJik7CkBAIC02MzEsNTcgKzYzMyw4NiBAQCBSZW1vdGVMYXll
clRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNv
bnN0IEZpbHRlck9wZQogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGNvbnN0IGF1dG8gZmlsdGVyID0gZmlsdGVycy5hdChpKTsKLSAgICAgICAgc3dpdGNoIChm
aWx0ZXItPnR5cGUoKSkgewotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6REVGQVVMVDoK
LSAgICAgICAgICAgIHRzIDw8ICJkZWZhdWx0IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgotICAgICAgICAgICAgdHMgPDwgInJl
ZmVyZW5jZSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkdSQVlTQ0FMRToKLSAgICAgICAgICAgIHRzIDw8ICJncmF5c2NhbGUiOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKLSAgICAgICAg
ICAgIHRzIDw8ICJzZXBpYSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OlNBVFVSQVRFOgotICAgICAgICAgICAgdHMgPDwgInNhdHVyYXRlIjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFU
RToKLSAgICAgICAgICAgIHRzIDw8ICJodWUgcm90YXRlIjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgotICAgICAgICAgICAgdHMgPDwg
ImludmVydCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246Ok9QQUNJVFk6Ci0gICAgICAgICAgICB0cyA8PCAib3BhY2l0eSI7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAg
ICAgICB0cyA8PCAiYnJpZ2h0bmVzcyI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgotICAgICAgICAgICAgdHMgPDwgImNvbnRyYXN0
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxV
UjoKLSAgICAgICAgICAgIHRzIDw8ICJibHVyIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6Ci0gICAgICAgICAgICB0cyA8PCAi
ZHJvcCBzaGFkb3ciOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpQQVNTVEhST1VHSDoKLSAgICAgICAgICAgIHRzIDw8ICJwYXNzdGhyb3VnaCI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok5PTkU6Ci0g
ICAgICAgICAgICB0cyA8PCAibm9uZSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
CisgICAgICAgIHRzIDw8ICpmaWx0ZXI7CiAgICAgICAgIGlmIChpIDwgZmlsdGVycy5zaXplKCkg
LSAxKQogICAgICAgICAgICAgdHMgPDwgIiAiOwogICAgIH0KICAgICByZXR1cm4gdHM7CiB9Ci0K
KyAgICAKK1JlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW06Om9wZXJhdG9yPDwoY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXIpCit7CisgICAgUmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKKyAgICBzd2l0Y2ggKGZpbHRlci50
eXBlKCkpIHsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgorICAgICAgICB0
cyA8PCAicmVmZXJlbmNlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkdSQVlTQ0FMRTogeworICAgICAgICBjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uJiBjb2xvck1hdHJpeEZpbHRlciA9IHRvQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbihmaWx0ZXIpOworICAgICAgICB0cyA8PCAiZ3JheXNjYWxlKCIgPDwgY29sb3JNYXRyaXhG
aWx0ZXIuYW1vdW50KCkgPDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OlNFUElBOiB7CisgICAgICAgIGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24mIGNvbG9yTWF0cml4RmlsdGVyID0gdG9CYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uKGZpbHRlcik7CisgICAgICAgIHRzIDw8ICJzZXBpYSgiIDw8IGNvbG9yTWF0
cml4RmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogeworICAgICAgICBjb25zdCBCYXNpY0NvbG9y
TWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeEZpbHRlciA9IHRvQmFzaWNDb2xvck1h
dHJpeEZpbHRlck9wZXJhdGlvbihmaWx0ZXIpOworICAgICAgICB0cyA8PCAic2F0dXJhdGUoIiA8
PCBjb2xvck1hdHJpeEZpbHRlci5hbW91bnQoKSA8PCAiKSI7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICBjb25z
dCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uJiBjb2xvck1hdHJpeEZpbHRlciA9IHRv
QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihmaWx0ZXIpOworICAgICAgICB0cyA8PCAi
aHVlLXJvdGF0ZSgiIDw8IGNvbG9yTWF0cml4RmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKKyAg
ICAgICAgY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXIgPSB0b0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRp
b24oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgImludmVydCgiIDw8IGNvbXBvbmVudFRyYW5zZmVy
RmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAgICAgIGNvbnN0IEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIGNvbXBvbmVudFRyYW5zZmVyRmlsdGVyID0gdG9CYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlcik7CisgICAgICAgIHRzIDw8
ICJvcGFjaXR5KCIgPDwgY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIuYW1vdW50KCkgPDwgIikiOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5F
U1M6IHsKKyAgICAgICAgY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
biYgY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIgPSB0b0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgImJyaWdodG5lc3MoIiA8PCBjb21w
b25lbnRUcmFuc2ZlckZpbHRlci5hbW91bnQoKSA8PCAiKSI7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6IHsKKyAgICAgICAgY29uc3Qg
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYgY29tcG9uZW50VHJhbnNmZXJG
aWx0ZXIgPSB0b0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oZmlsdGVyKTsK
KyAgICAgICAgdHMgPDwgImNvbnRyYXN0KCIgPDwgY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIuYW1v
dW50KCkgPDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkJMVVI6IHsKKyAgICAgICAgY29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbiYgYmx1ckZp
bHRlciA9IHRvQmx1ckZpbHRlck9wZXJhdGlvbihmaWx0ZXIpOworICAgICAgICB0cyA8PCAiYmx1
cigiIDw8IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ckZpbHRlci5zdGREZXZpYXRpb24oKSwgMCkg
PDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkRST1BfU0hBRE9XOiB7CisgICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24m
IGRyb3BTaGFkb3dGaWx0ZXIgPSB0b0Ryb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oZmlsdGVyKTsK
KyAgICAgICAgdHMgPDwgImRyb3Atc2hhZG93KCIgPDwgZHJvcFNoYWRvd0ZpbHRlci54KCkgPDwg
IiAiIDw8IGRyb3BTaGFkb3dGaWx0ZXIueSgpIDw8ICIgIiA8PCBkcm9wU2hhZG93RmlsdGVyLmxv
Y2F0aW9uKCkgPDwgIiAiOworICAgICAgICB0cyA8PCBkcm9wU2hhZG93RmlsdGVyLmNvbG9yKCkg
PDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OlBBU1NUSFJPVUdIOgorICAgICAgICB0cyA8PCAicGFzc3Rocm91Z2giOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6REVGQVVMVDogeworICAgICAgICBjb25zdCBE
ZWZhdWx0RmlsdGVyT3BlcmF0aW9uJiBkZWZhdWx0RmlsdGVyID0gdG9EZWZhdWx0RmlsdGVyT3Bl
cmF0aW9uKGZpbHRlcik7CisgICAgICAgIHRzIDw8ICJkZWZhdWx0IHR5cGU9IiA8PCAoaW50KWRl
ZmF1bHRGaWx0ZXIucmVwcmVzZW50ZWRUeXBlKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgdHMgPDwgIm5vbmUiOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorICAgIAogUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUpCiB7CiAgICAgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKQEAgLTc0NCw2ICs3NzUsMTMgQEAgUmVtb3RlTGF5
ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChj
b25zdCBQbGF0Zm9ybUMKICAgICAgICAgdHMgPDwgInRyYW5zZm9ybT0iOwogICAgICAgICB0cyA8
PCB2YWx1ZS50cmFuc2Zvcm1WYWx1ZSgpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWU6OkZpbHRlcktleVR5cGU6CisgICAg
ICAgIHRzIDw8ICJmaWx0ZXI9IjsKKyAgICAgICAgaWYgKHZhbHVlLmZpbHRlclZhbHVlKCkpCisg
ICAgICAgICAgICB0cyA8PCAqdmFsdWUuZmlsdGVyVmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdHMgPDwgIm51bGwiOworICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJu
IHRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwCmluZGV4IDk4YjFjNjMzZTRhNjFl
ZmYwYWEzMzhhNGI3N2U5MTA2MWViMjAzNjAuLmY0NDgwOTM4NGYzYzZiYjVlNGQwNzc4MTQ1Mzdj
YmM1YjUwM2IzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAKQEAgLTU4LDE0ICs1
OCw0IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gR3JhcGhpY3NMYXllckNBUmVt
b3RlOjpjcmVhdGVQbGF0Zm9ybUNBQW5pbWF0aW9uCiAgICAgcmV0dXJuIFBsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGU6OmNyZWF0ZSh0eXBlLCBrZXlQYXRoKTsKIH0KIAotYm9vbCBHcmFwaGljc0xh
eWVyQ0FSZW1vdGU6OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbSwgY29u
c3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCi0gICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVk
UHJvcGVydHlXZWJraXRGaWx0ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAg
IAotICAgIHJldHVybiBHcmFwaGljc0xheWVyQ0E6OmFkZEFuaW1hdGlvbih2YWx1ZUxpc3QsIGJv
eFNpemUsIGFuaW0sIGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oCmluZGV4IDZjOWM0NDgwYjhkZGFi
OTI3ODI3MWY3N2IwY2I5NjM2ZmMxMzRjZTcuLmIzNTFiMmU1NzFkZTRjNTNmYjIzYzU3YTU0YjZm
YWZiNTE5YTE4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaApAQCAtNTcsOCArNTcsNiBA
QCBwcml2YXRlOgogICAgIC8vIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjYW4ndCBjdXJyZW50bHkg
cHJveHkgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZSBjb250ZW50cywgc28gb3B0IG91dCBvZiB0
aGlzIG9wdGltaXphdGlvbi4KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlyZWN0bHlDb21wb3Np
dGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgCi0gICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBXZWJDb3JlOjpLZXlm
cmFtZVZhbHVlTGlzdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6
OkFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGRvdWJsZSk7Ci0gICAgCiAgICAgUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dCogbV9jb250ZXh0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUuaAppbmRleCAyMjdmMGY3ZGQxYTUxMmNkMzhiMzJiZGEzMjJjMTExOWI0MThlNDE5Li44
NzdhM2U5ZDMzYmU4OGRkY2Y2OTllMjgzMTYzMTg5M2U5MTk5YTRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGUuaApAQCAtNTAsMTUgKzUwLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IGNvcHkoKSBjb25zdCBvdmVycmlkZTsKLSAgICAKKwogICAgIHZpcnR1YWwgU3RyaW5nIGtl
eVBhdGgoKSBjb25zdCBvdmVycmlkZTsKLSAgICAKKwogICAgIHZpcnR1YWwgQ0ZUaW1lSW50ZXJ2
YWwgYmVnaW5UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEJlZ2lu
VGltZShDRlRpbWVJbnRlcnZhbCkgb3ZlcnJpZGU7Ci0gICAgCisKICAgICB2aXJ0dWFsIENGVGlt
ZUludGVydmFsIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dER1cmF0aW9uKENGVGltZUludGVydmFsKSBvdmVycmlkZTsKLSAgICAKKwogICAgIHZpcnR1YWwg
ZmxvYXQgc3BlZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U3BlZWQo
ZmxvYXQpIG92ZXJyaWRlOwogCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgRmlsbE1vZGVUeXBlIGZpbGxNb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHNldEZpbGxNb2RlKEZpbGxNb2RlVHlwZSkgb3ZlcnJpZGU7Ci0gICAgCisKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oY29uc3QgV2ViQ29yZTo6VGltaW5nRnVuY3Rpb24q
LCBib29sIHJldmVyc2UgPSBmYWxzZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb3B5VGltaW5nRnVu
Y3Rpb25Gcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsK
IApAQCAtMTI4LDggKzEyOCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBDb2xvcktleVR5cGUs
CiAgICAgICAgICAgICBQb2ludEtleVR5cGUsCiAgICAgICAgICAgICBUcmFuc2Zvcm1LZXlUeXBl
LAorICAgICAgICAgICAgRmlsdGVyS2V5VHlwZSwKICAgICAgICAgfTsKIAorICAgICAgICB+S2V5
ZnJhbWVWYWx1ZSgpCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIEtleWZyYW1lVmFs
dWUoZmxvYXQgdmFsdWUgPSAwKQogICAgICAgICAgICAgOiBrZXlUeXBlKE51bWJlcktleVR5cGUp
CiAgICAgICAgICAgICAsIG51bWJlcih2YWx1ZSkKQEAgLTE1Myw3ICsxNTgsMTMgQEAgcHVibGlj
OgogICAgICAgICAgICAgLCB0cmFuc2Zvcm0odmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQot
ICAgICAgICAKKworICAgICAgICBLZXlmcmFtZVZhbHVlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9uPiB2YWx1ZSkKKyAgICAgICAgICAgIDoga2V5VHlwZShGaWx0ZXJLZXlUeXBl
KQorICAgICAgICAgICAgLCBmaWx0ZXIodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCiAg
ICAgICAgIEtleWZyYW1lVmFsdWUoY29uc3QgS2V5ZnJhbWVWYWx1ZSYgb3RoZXIpCiAgICAgICAg
IHsKICAgICAgICAgICAgICp0aGlzID0gb3RoZXI7CkBAIC0xNzUsMTEgKzE4NiwxNCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBjYXNlIFRyYW5zZm9ybUtleVR5cGU6CiAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtID0gb3RoZXIudHJhbnNmb3JtOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJLZXlUeXBlOgorICAgICAgICAgICAgICAgIGZpbHRlciA9IG90
aGVyLmZpbHRlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIAorCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgS2V5ZnJhbWVUeXBlIGtleWZyYW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGtl
eVR5cGU7IH0KIAogICAgICAgICBmbG9hdCBudW1iZXJWYWx1ZSgpIGNvbnN0CkBAIC0yMDYsNiAr
MjIwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm07CiAgICAgICAg
IH0KIAorICAgICAgICBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24qIGZpbHRlclZhbHVl
KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGtleVR5cGUgPT0gRmlsdGVy
S2V5VHlwZSk7CisgICAgICAgICAgICByZXR1cm4gZmlsdGVyLmdldCgpOworICAgICAgICB9CisK
ICAgICAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKICAgICAg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgS2V5ZnJhbWVWYWx1
ZSYpOwogCkBAIC0yMTcsNiArMjM3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgV2ViQ29yZTo6
RmxvYXRQb2ludDNEIHBvaW50OwogICAgICAgICAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtOwogICAgICAgICB9OworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9uPiBmaWx0ZXI7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQcm9wZXJ0aWVzIHsK
QEAgLTIzNCwxMCArMjU1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgLCBhZGRpdGl2ZShmYWxz
ZSkKICAgICAgICAgICAgICwgcmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyhmYWxzZSkKICAgICAgICAg
ICAgICwgaGFzTm9uWmVyb0JlZ2luVGltZShmYWxzZSkKLSAgICAgICAgCiAgICAgICAgIHsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3VtZW50RW5j
b2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImLCBQcm9wZXJ0aWVzJik7CiAKQEAgLTI0OSwxMCArMjY5LDEwIEBAIHB1YmxpYzoKICAg
ICAgICAgZG91YmxlIHRpbWVPZmZzZXQ7CiAgICAgICAgIGZsb2F0IHJlcGVhdENvdW50OwogICAg
ICAgICBmbG9hdCBzcGVlZDsKLSAgICAgICAgCisKICAgICAgICAgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6RmlsbE1vZGVUeXBlIGZpbGxNb2RlOwogICAgICAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpW
YWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uOwotICAgICAgICAKKwogICAgICAgICBib29s
IGF1dG9SZXZlcnNlczsKICAgICAgICAgYm9vbCByZW1vdmVkT25Db21wbGV0aW9uOwogICAgICAg
ICBib29sIGFkZGl0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4
IGI1MzNiZGYyNjQzOGE2MTQ3YWMwOGIyZTg0NzIxOWYxZmRkNjM5MzguLjFhNDI4YjQ0YjE0ZDYw
ZWFlZTQ1MTVjOTVkYmI0MmIwZGFhZjU2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRp
b25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNB
RmlsdGVycy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgogI2ltcG9ydCA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMDEsNiAr
MTAyLDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpl
bmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY28KICAgICBjYXNlIFRyYW5zZm9ybUtleVR5
cGU6CiAgICAgICAgIGVuY29kZXIgPDwgdHJhbnNmb3JtOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIEZpbHRlcktleVR5cGU6CisgICAgICAgIGVuY29kZXIgPDwgKmZpbHRlci5nZXQoKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xMjYsNiArMTMwLDEwIEBAIGJvb2wgUGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZTo6ZGVjb2RlKElQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodmFsdWUudHJhbnNmb3Jt
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
aWx0ZXJLZXlUeXBlOgorICAgICAgICBpZiAoIWRlY29kZUZpbHRlck9wZXJhdGlvbihkZWNvZGVy
LCB2YWx1ZS5maWx0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ0Niw3ICs0NTQsMTEgQEAgdm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRGcm9tVmFsdWUoY29uc3QgQ29sb3ImIHZhbHVl
KQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZTo6c2V0RnJvbVZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogb3BlcmF0aW9uLCBpbnQgaW50
ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcHJvcGVydGllcy5rZXlWYWx1ZXMucmVzaXplKDIpOworICAgIG1fcHJvcGVydGllcy5rZXlW
YWx1ZXNbMF0gPSBLZXlmcmFtZVZhbHVlKG9wZXJhdGlvbi0+Y2xvbmUoKSk7CiB9CiAjZW5kaWYK
IApAQCAtNDk0LDcgKzUwNiwxMyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNl
dFRvVmFsdWUoY29uc3QgQ29sb3ImIHZhbHVlKQogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKIHZv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIG9wZXJhdGlvbiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkKIHsKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2lj
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgVU5VU0VEX1BBUkFNKGludGVybmFsRmlsdGVy
UHJvcGVydHlJbmRleCk7CisgICAgQVNTRVJUKG9wZXJhdGlvbik7CisgICAgbV9wcm9wZXJ0aWVz
LmtleVZhbHVlcy5yZXNpemUoMik7CisgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlc1sxXSA9IEtl
eWZyYW1lVmFsdWUob3BlcmF0aW9uLT5jbG9uZSgpKTsKIH0KICNlbmRpZgogCkBAIC01NjEsMTAg
KzU3OSwyMCBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFZhbHVlcyhjb25z
dCBWZWN0b3I8Q29sb3I+JiB2YWx1ZXMpCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi12
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4+JiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkK
K3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4mIHZhbHVlcywgaW50IGludGVybmFsRmlsdGVyUHJvcGVy
dHlJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0oaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4
KTsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAKKyAgICBpZiAoYW5pbWF0aW9uVHlw
ZSgpICE9IEtleWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIFZlY3RvcjxL
ZXlmcmFtZVZhbHVlPiBrZXlmcmFtZXM7CisgICAga2V5ZnJhbWVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkodmFsdWVzLnNpemUoKSk7CisgICAgCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2
YWx1ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGtleWZyYW1lcy51bmNoZWNrZWRBcHBlbmQoS2V5
ZnJhbWVWYWx1ZSh2YWx1ZXNbaV0pKTsKKyAgICAKKyAgICBtX3Byb3BlcnRpZXMua2V5VmFsdWVz
ID0gc3RkOjptb3ZlKGtleWZyYW1lcyk7CiB9CiAjZW5kaWYKIApAQCAtNjE3LDYgKzY0NSw5IEBA
IHN0YXRpYyBOU09iamVjdCogYW5pbWF0aW9uVmFsdWVGcm9tS2V5ZnJhbWVWYWx1ZShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlCiAgICAgfQogICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZTo6VHJhbnNmb3JtS2V5VHlwZToKICAgICAgICAgcmV0
dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENBVHJhbnNmb3JtM0Q6a2V5ZnJhbWVWYWx1ZS50cmFuc2Zv
cm1WYWx1ZSgpXTsKKyAgICAgICAgICAgIAorICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZTo6S2V5ZnJhbWVWYWx1ZTo6RmlsdGVyS2V5VHlwZToKKyAgICAgICAgcmV0dXJuIFtQbGF0
Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oa2V5ZnJhbWVWYWx1ZS5maWx0
ZXJWYWx1ZSgpLCAwIC8qIHVudXNlZCAqLykubGVha1JlZigpIGF1dG9yZWxlYXNlXTsKICAgICB9
CiB9CiAK
</data>
<flag name="review"
          id="252866"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>