<?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>28621</bug_id>
          
          <creation_ts>2009-08-21 12:50:48 -0700</creation_ts>
          <short_desc>Restructure Executable types so that host functions do not hold a FunctionExecutable.</short_desc>
          <delta_ts>2009-08-21 16:17:39 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>141944</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-21 12:50:48 -0700</bug_when>
    <thetext>All JSFunction objects have a pointer to an Executable*.  This is currently always a
FunctionExecutable, however this has a couple of drawbacks.  Host functions do not
store a range of information that the FunctionExecutable provides (source, name,
CodeBlock &amp; information presently held on the FunctionBodyNode).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141945</commentid>
    <comment_count>1</comment_count>
      <attachid>38387</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-21 13:00:34 -0700</bug_when>
    <thetext>Created attachment 38387
The Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141946</commentid>
    <comment_count>2</comment_count>
      <attachid>38388</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-21 13:04:43 -0700</bug_when>
    <thetext>Created attachment 38388
damn you svn diff, I resolved those files, why don&apos;t you know that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141971</commentid>
    <comment_count>3</comment_count>
      <attachid>38394</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-21 14:11:13 -0700</bug_when>
    <thetext>Created attachment 38394
Remove dependency on Executable.h from JSFunction.h to make Darin a happy person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141982</commentid>
    <comment_count>4</comment_count>
      <attachid>38394</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-08-21 14:40:12 -0700</bug_when>
    <thetext>Comment on attachment 38394
Remove dependency on Executable.h from JSFunction.h to make Darin a happy person.

r=me, rename JSExecutable to 5cr1pt3x3cut4b13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141994</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-08-21 14:55:09 -0700</bug_when>
    <thetext>Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/bytecode/CodeBlock.cpp
Sending        JavaScriptCore/bytecode/CodeBlock.h
Sending        JavaScriptCore/bytecode/EvalCodeCache.h
Sending        JavaScriptCore/debugger/Debugger.cpp
Sending        JavaScriptCore/interpreter/CachedCall.h
Sending        JavaScriptCore/interpreter/Interpreter.cpp
Sending        JavaScriptCore/jit/JITStubs.cpp
Sending        JavaScriptCore/profiler/Profiler.cpp
Sending        JavaScriptCore/runtime/Arguments.h
Sending        JavaScriptCore/runtime/Executable.cpp
Sending        JavaScriptCore/runtime/Executable.h
Sending        JavaScriptCore/runtime/FunctionPrototype.cpp
Sending        JavaScriptCore/runtime/JSFunction.cpp
Sending        JavaScriptCore/runtime/JSFunction.h
Transmitting file data ...............
Committed revision 47641.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>142039</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-08-21 16:17:39 -0700</bug_when>
    <thetext>Is there a reason we don&apos;t call there HostExecutables?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38387</attachid>
            <date>2009-08-21 13:00:34 -0700</date>
            <delta_ts>2009-08-21 13:04:43 -0700</delta_ts>
            <desc>The Patch</desc>
            <filename>patch.nativeexec.4.txt</filename>
            <type>text/plain</type>
            <size>28571</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE4IEBACisyMDA5LTA4LTIxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXN0cnVjdHVyZSBFeGVjdXRhYmxlIHR5cGVz
IHNvIHRoYXQgaG9zdCBmdW5jdGlvbnMgZG8gbm90IGhvbGQgYSBGdW5jdGlvbkV4ZWN1dGFibGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODYyMQor
CisgICAgICAgIEFsbCBKU0Z1bmN0aW9uIG9iamVjdHMgaGF2ZSBhIHBvaW50ZXIgdG8gYW4gRXhl
Y3V0YWJsZSouICBUaGlzIGlzIGN1cnJlbnRseSBhbHdheXMgYQorICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUsIGhvd2V2ZXIgdGhpcyBoYXMgYSBjb3VwbGUgb2YgZHJhd2JhY2tzLiAgSG9zdCBm
dW5jdGlvbnMgZG8gbm90CisgICAgICAgIHN0b3JlIGEgcmFuZ2Ugb2YgaW5mb3JtYXRpb24gdGhh
dCB0aGUgRnVuY3Rpb25FeGVjdXRhYmxlIHByb3ZpZGVzIChzb3VyY2UsIG5hbWUsCisgICAgICAg
IENvZGVCbG9jayAmIGluZm9ybWF0aW9uIHByZXNlbnRseSBoZWxkIG9uIHRoZSBGdW5jdGlvbkJv
ZHlOb2RlKS4gCisKKyAgICAgICAgWyAqIG5lYXJseSBhbGwuLi4gc2VlIGJlbG93ISBdCisKKyAg
ICAgICAgSW5zdGVhZCwgbWFrZSBKU0Z1bmN0aW9ucyBob2xkIGEgcG9pbnRlciB0byBhbiBFeGFj
dXRhYmxlQmFzZSwgbW92ZSBmaWVsZHMgc3BlY2lmaWMKKyAgICAgICAgdG8gSlMgc291cmNlZCBl
eGVjdXRhYmxlIHR5cGVzIChzb3VyY2UsIG5vZGUpIGludG8gYSBuZXcgc3ViY2xhc3MgKEpTRXhl
Y3V0YWJsZSksCisgICAgICAgIGFuZCBjcmVhdGUgYSBuZXcgTmF0aXZlRXhlY3V0YWJsZSB0eXBl
LiAgV2Ugbm93IHByb3ZpZGUgYSBuZXcgbWV0aG9kIGluIEpTRnVuY3Rpb24KKyAgICAgICAgdG8g
YWNjZXNzICYgZG93bmNhc3QgdG8gRnVuY3Rpb25FeGVjdXRhYmxlLCBidXQgaW4gZG9pbmcgc28g
d2UgY2FuIG1ha2UgYW4gZWFybHkKKyAgICAgICAgY2hlY2sgKHdpdGggYW4gQVNTRVJUKSB0byBl
bnN1cmUgdGhhdCB0aGUgRXhlY3V0YWJsZSByZWFkIGZyb20gYSBmdW5jdGlvbiB3aWxsIG9ubHkK
KyAgICAgICAgYmUgdHJlYXRlZCBhcyBhIEZ1bmN0aW9uRXhlY3V0YWJsZSAoYW5kIHRodXMgdGhl
IEpTIHNlcGNpZmljIGZpZWxkcyB3aWxsIG9ubHkgYmUKKyAgICAgICAgYWNjZXNzZWQpIGlmIHRo
ZSBKU0Z1bmN0aW9uIGlzIG5vdCBhIGhvc3QgZnVuY3Rpb24uCisKKyAgICAgICAgVGhlcmUgaXMg
b25lIEpTRnVuY3Rpb24gdGhhdCBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBhbiBFeGVjdXRhYmxl
LCB3aGljaCBpcyB0aGUKKyAgICAgICAgb2JqZWN0IGNyZWF0ZWQgdG8gYWxsb3cgdXMgdG8gcmVh
ZCBvdXQgdGhlIHZ0YWJsZSBwb2ludGVyLiAgQnkgbWFraW5nIHRoaXMgY2hhbmdlCisgICAgICAg
IHdlIGNhbiBhbHNvIGFkZCBhIG5ldyBFeGVjdXRhYmxlIHR5cGUgZnJvciB0aGlzIG9iamVjdCAo
VlB0ckhhY2tFeGVjdXRhYmxlKS4KKyAgICAgICAgU2luY2UgdGhpcyBtZWFucyB0aGF0IHJlYWxs
eSBhbGwgSlNGdW5jdGlvbnMgaGF2ZSBhbiBFeGVjdXRhYmxlIHdlIG5vIGxvbmdlciBoYXZlCisg
ICAgICAgIHRvIG51bGwtY2hlY2sgbV9leGVjdXRhYmxlIGJlZm9yZSB1cyBpdCAtIHBhcnRpY3Vs
YXJseSBpbiBpc0hvc3RGdW5jdGlvbigpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBD
YWNoZWFibGVFdmFsRXhlY3V0YWJsZSwgc2luY2UgYWxsIHN1YmNsYXNzZXMgb2YgRXhlY3V0YWJs
ZUJhc2UKKyAgICAgICAgY2FuIG5vdyBiZSByZWYtY291bnRlZCAtIHNpbmNlIGJvdGggSlNGdW5j
dGlvbiBob2xkcyAoYW5kIHJlZi1jb3VudHMpIGFuIEV4ZWN1dGFibGVCYXNlCisgICAgICAgIHRo
YXQgbWlnaHQgYmUgYSBGdW5jdGlvbkV4ZWN1dGFibGUgb3IgYSBOYXRpdmVFeGVjdXRhYmxlLiAg
VGhpcyBkb2VzIG5vdyBtZWFuIHRoYXQgYWxsCisgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlcyBh
bmQgRXZhbEV4ZWN1dGFibGVzICh1bm5lY2Vzc2FyaWx5KSBwcm92aWRlIGFuIGludGVyZmFjZSB0
byBiZQorICAgICAgICByZWYtY291bnRlZCwgaG93ZXZlciB0aGlzIHNlZW1zIGxlc3MtYmFkIHRo
YW4gaG9zdCBmdW5jdGlvbnMgdW5uZWNlc3NhcmlseSBwcm92aWRpbmcKKyAgICAgICAgaW50ZXJm
YWNlIHRvIGFjY2VzcyBub24taG9zdCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4KKworICAgICAgICBU
aGUgY2xhc3MgaGllcmFyY3kgaGFzIGNoYW5nZWQgZnJvbSB0aGlzOgorICAgICAgICAKKyAgICAg
ICAgLSBFeGVjdXRhYmxlQmFzZQorICAgICAgICAgICAgLSBQcm9ncmFtRXhlY3V0YWJsZQorICAg
ICAgICAgICAgLSBFdmFsRXhlY3V0YWJsZQorICAgICAgICAgICAgICAgIC0gQ2FjaGVhYmxlRXZh
bEV4ZWN1dGFibGUgKGFsc28gUmVmQ291bnRlZCBieSBtdWx0aXBsZS1pbmhlcml0YW5jZSkKKyAg
ICAgICAgICAgIC0gRnVuY3Rpb25FeGVjdXRhYmxlIChhbHNvIFJlZkNvdW50ZWQgYnkgbXVsdGlw
bGUtaW5oZXJpdGFuY2UsICdzcGVjaWFsJyBGdW5jdGlvbkV4ZWN1dGFibGUgYWxzbyB1c2VkIGZv
ciBob3N0IGZ1bmN0aW9ucykKKworICAgICAgICBUbyB0aGlzOgorICAgICAgICAKKyAgICAgICAg
LSBSZWZDb3VudGVkCisgICAgICAgICAgICAtIEV4ZWN1dGFibGVCYXNlCisgICAgICAgICAgICAg
ICAgLSBOYXRpdmVFeGVjdXRhYmxlCisgICAgICAgICAgICAgICAgLSBWUHRySGFja0V4ZWN1dGFi
bGUKKyAgICAgICAgICAgICAgICAtIEpTRXhlY3V0YWJsZQorICAgICAgICAgICAgICAgICAgICAt
IFByb2dyYW1FeGVjdXRhYmxlCisgICAgICAgICAgICAgICAgICAgIC0gRXZhbEV4ZWN1dGFibGUK
KyAgICAgICAgICAgICAgICAgICAgLSBGdW5jdGlvbkV4ZWN1dGFibGUKKworICAgICAgICBUaGlz
IHBhdGNoIHNwZWVkcyB1cCBzdW5zcGlkZXkgYnkgYSBjb3VwbGUgb2YgbXMgKHByZXN1bWFibHkg
ZHVlIHRvIHRoZSBjaGFuZ2VzIHRvIGlzSG9zdEZ1bmN0aW9uKCkpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om93bmVyRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6Okdsb2JhbENvZGVCbG9jazo6R2xv
YmFsQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNhY2hlLmg6CisgICAg
ICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMp
OgorICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5j
cHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUNhbGxJZGVudGlmaWVyRnJv
bUZ1bmN0aW9uSW1wKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAo
SlNDOjpBcmd1bWVudHM6OmdldEFyZ3VtZW50c0RhdGEpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpWUHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFja0V4ZWN1dGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6RXhl
Y3V0YWJsZUJhc2UpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6fkV4ZWN1dGFibGVC
YXNlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmlzSG9zdEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAg
IChKU0M6OlZQdHJIYWNrRXhlY3V0YWJsZTo6VlB0ckhhY2tFeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6SlNFeGVjdXRhYmxlOjpKU0V4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpKU0V4ZWN1
dGFibGU6OnNvdXJjZSk6CisgICAgICAgIChKU0M6OkpTRXhlY3V0YWJsZTo6c291cmNlSUQpOgor
ICAgICAgICAoSlNDOjpKU0V4ZWN1dGFibGU6OnNvdXJjZVVSTCk6CisgICAgICAgIChKU0M6OkpT
RXhlY3V0YWJsZTo6bGluZU5vKToKKyAgICAgICAgKEpTQzo6SlNFeGVjdXRhYmxlOjpsYXN0TGlu
ZSk6CisgICAgICAgIChKU0M6OkpTRXhlY3V0YWJsZTo6dXNlc0V2YWwpOgorICAgICAgICAoSlND
OjpKU0V4ZWN1dGFibGU6OnVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKU0V4ZWN1dGFi
bGU6Om5lZWRzQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpFdmFs
RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjp+SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om1hcmtDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Y2FsbCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omxlbmd0
aEdldHRlcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpleGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6anNFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24pOgorCiAyMDA5LTA4LTIwICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsu
CkBAIC0xMDYsNyArMjIxLDcgQEAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCiAK
ICAgICAgICAgTnVtYmVyaW5nIG9mIGFyZ3VtZW50cyB0byBlbWl0R2V0SklUU3R1YkFyZy9lbWl0
UHV0SklUU3R1YkFyZyBpbmNvcnJlY3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4NTEzCisgICAgICAgIDxidWcgbG9zdCBpbiB0aGUgZ3JlYXQgYnVn
IGRpc2FzdGVyb29ueSBvZiAwOC8yMC8wOSE+CiAKICAgICAgICAgVGhlIGFyZ3VtZW50TnVtYmVy
IGFyZ3VtZW50IHRvIGVtaXRHZXRKSVRTdHViQXJnL2VtaXRQdXRKSVRTdHViQXJnIHNob3VsZCBt
YXRjaAogICAgICAgICB0aGUgYXJndW1lbnQgbnVtYmVyIHVzZWQgd2l0aGluIHRoZSBzdHViIGZ1
bmN0aW9ucyBpbiBKSVRTdHVicy5jcHAsIGJ1dCBpdCBkb2Vzbid0LgpJbmRleDogSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAkocmV2aXNpb24gNDc2MzcpCisrKyBKYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE1
ICs0MiwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxDb2RlQ2FjaGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUGFzc1JlZlB0cjxDYWNoZWFibGVFdmFsRXhlY3V0YWJsZT4g
Z2V0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgZXZhbFNvdXJjZSwgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4Y2VwdGlvblZhbHVlKQorICAgICAgICBQYXNz
UmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBnZXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5n
JiBldmFsU291cmNlLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiwgSlNWYWx1ZSYgZXhjZXB0
aW9uVmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFJlZlB0cjxDYWNoZWFibGVFdmFsRXhl
Y3V0YWJsZT4gZXZhbEV4ZWN1dGFibGU7CisgICAgICAgICAgICBSZWZQdHI8RXZhbEV4ZWN1dGFi
bGU+IGV2YWxFeGVjdXRhYmxlOwogCiAgICAgICAgICAgICBpZiAoZXZhbFNvdXJjZS5zaXplKCkg
PCBtYXhDYWNoZWFibGVTb3VyY2VMZW5ndGggJiYgKCpzY29wZUNoYWluLT5iZWdpbigpKS0+aXNW
YXJpYWJsZU9iamVjdCgpKQogICAgICAgICAgICAgICAgIGV2YWxFeGVjdXRhYmxlID0gbV9jYWNo
ZU1hcC5nZXQoZXZhbFNvdXJjZS5yZXAoKSk7CiAKICAgICAgICAgICAgIGlmICghZXZhbEV4ZWN1
dGFibGUpIHsKLSAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IENhY2hlYWJsZUV2YWxF
eGVjdXRhYmxlOjpjcmVhdGUobWFrZVNvdXJjZShldmFsU291cmNlKSk7CisgICAgICAgICAgICAg
ICAgZXZhbEV4ZWN1dGFibGUgPSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKG1ha2VTb3VyY2UoZXZh
bFNvdXJjZSkpOwogICAgICAgICAgICAgICAgIGV4Y2VwdGlvblZhbHVlID0gZXZhbEV4ZWN1dGFi
bGUtPnBhcnNlKGV4ZWMpOwogICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb25WYWx1ZSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1heENhY2hlYWJsZVNvdXJjZUxlbmd0aCA9
IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMgPSA2NDsKIAot
ICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIFJlZlB0cjxDYWNo
ZWFibGVFdmFsRXhlY3V0YWJsZT4gPiBFdmFsQ2FjaGVNYXA7CisgICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8VVN0cmluZzo6UmVwPiwgUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiA+IEV2YWxD
YWNoZU1hcDsKICAgICAgICAgRXZhbENhY2hlTWFwIG1fY2FjaGVNYXA7CiAgICAgfTsKIApJbmRl
eDogSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAkocmV2aXNpb24gNDc2MzcpCisrKyBK
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSgogICAg
ICAgICBpZiAoZnVuY3Rpb24tPmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKIAogICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBpbiB0aGUgc2V0IC0gaWYgc28sCiAgICAgICAg
IC8vIHdlJ3ZlIGFscmVhZHkgcmV0cmFuc2xhdGVkIGl0LCBub3RoaW5nIHRvIGRvIGhlcmUuCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCShyZXZpc2lvbiA0NzYz
NykKKysrIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9l
eGNlcHRpb24oZXhjZXB0aW9uKQogICAgICAgICAgICAgLCBtX2dsb2JhbE9iamVjdFNjb3BlKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZHluYW1pY0dsb2JhbE9iamVjdCA/IGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBmdW5jdGlvbi0+c2Nv
cGUoKS5ub2RlKCktPmdsb2JhbE9iamVjdCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX2Ns
b3N1cmUgPSBtX2ludGVycHJldGVyLT5wcmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+ZXhl
Y3V0YWJsZSgpLCBjYWxsRnJhbWUsIGZ1bmN0aW9uLCBhcmdDb3VudCwgZnVuY3Rpb24tPnNjb3Bl
KCkubm9kZSgpLCBleGNlcHRpb24pOworICAgICAgICAgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNI
b3N0RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBtX2Nsb3N1cmUgPSBtX2ludGVycHJldGVyLT5w
cmVwYXJlRm9yUmVwZWF0Q2FsbChmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCksIGNhbGxGcmFtZSwg
ZnVuY3Rpb24sIGFyZ0NvdW50LCBmdW5jdGlvbi0+c2NvcGUoKS5ub2RlKCksIGV4Y2VwdGlvbik7
CiAgICAgICAgICAgICBtX3ZhbGlkID0gISpleGNlcHRpb247CiAgICAgICAgIH0KICAgICAgICAg
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiA0NzYzNykKKysrIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVl
IEludGVycHJldGVyOjpjYWxsRXYKIAogICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0g
Y2FsbEZyYW1lLT5zY29wZUNoYWluKCk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpOwotICAgIFJlZlB0cjxDYWNoZWFibGVFdmFsRXhlY3V0YWJsZT4g
ZXZhbCA9IGNvZGVCbG9jay0+ZXZhbENvZGVDYWNoZSgpLmdldChjYWxsRnJhbWUsIHByb2dyYW1T
b3VyY2UsIHNjb3BlQ2hhaW4sIGV4Y2VwdGlvblZhbHVlKTsKKyAgICBSZWZQdHI8RXZhbEV4ZWN1
dGFibGU+IGV2YWwgPSBjb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXQoY2FsbEZyYW1lLCBw
cm9ncmFtU291cmNlLCBzY29wZUNoYWluLCBleGNlcHRpb25WYWx1ZSk7CiAKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7CiAgICAgaWYgKGV2YWwpCkBAIC0zMDgyLDcgKzMwODIs
OCBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjCiAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uVmFsdWUgPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
KTsKICAgICAgICAgICAgICAgICBnb3RvIHZtX3Rocm93OwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaW50MzJfdCBleHBlY3RlZFBhcmFtcyA9IGNhbGxGcmFtZS0+Y2FsbGVlKCktPmV4ZWN1
dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKTsKKyAgICAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1l
LT5jYWxsZWUoKS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBpbnQzMl90IGV4cGVj
dGVkUGFyYW1zID0gY2FsbEZyYW1lLT5jYWxsZWUoKS0+anNFeGVjdXRhYmxlKCktPnBhcmFtZXRl
ckNvdW50KCk7CiAgICAgICAgICAgICBpbnQzMl90IGlucGxhY2VBcmdzID0gbWluKGFyZ0NvdW50
LCBleHBlY3RlZFBhcmFtcyk7CiAgICAgICAgICAgICBpbnQzMl90IGkgPSAwOwogICAgICAgICAg
ICAgUmVnaXN0ZXIqIGFyZ1N0b3JlID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGFyZ3NPZmZz
ZXQ7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4MCw4ICsx
NDgwLDggQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfSlNGdQogI2VuZGlm
CiAKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGFzRnVuY3Rpb24oc3RhY2tGcmFtZS5hcmdz
WzBdLmpzVmFsdWUoKSk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVu
Y3Rpb24tPmV4ZWN1dGFibGUoKTsKLSAgICBBU1NFUlQoIWV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0
aW9uKCkpOworICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsK
ICAgICBTY29wZUNoYWluTm9kZSogY2FsbERhdGFTY29wZUNoYWluID0gZnVuY3Rpb24tPnNjb3Bl
KCkubm9kZSgpOwogICAgIGV4ZWN1dGFibGUtPmppdENvZGUoY2FsbERhdGFTY29wZUNoYWluKTsK
IApAQCAtMTQ5NCw3ICsxNDk0LDggQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oVm9pZFB0clBhaXIs
IG9wX2NhbAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWUuYXJnc1sw
XS5qc1ZhbHVlKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+ZXhl
Y3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZSgpOworICAgIEFTU0VSVCghY2FsbGVlLT5pc0hv
c3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpz
RXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZSgpOwogICAgIGludCBhcmdDb3VudCA9IHN0
YWNrRnJhbWUuYXJnc1syXS5pbnQzMigpOwogCiAgICAgQVNTRVJUKGFyZ0NvdW50ICE9IG5ld0Nv
ZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKTsKQEAgLTE1MzksMTIgKzE1NDAsMTIgQEAgREVGSU5F
X1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX2xhenlMaW5rQwogewogICAgIFNUVUJfSU5JVF9TVEFD
S19GUkFNRShzdGFja0ZyYW1lKTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9u
KHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCkpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CiAgICAgSklUQ29kZSYgaml0Q29kZSA9
IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGUoKTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IDA7CiAgICAgaWYgKCFleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQotICAg
ICAgICBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Ynl0ZWNvZGUoY2FsbGVlLT5zY29wZSgpLm5v
ZGUoKSk7CisgICAgICAgIGNvZGVCbG9jayA9ICZzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihleGVjdXRhYmxlKS0+Ynl0ZWNvZGUoY2FsbGVlLT5zY29wZSgpLm5vZGUoKSk7CiAgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAmc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNhbGxl
ckZyYW1lKCktPmNvZGVCbG9jaygpLT5nZXRDYWxsTGlua0luZm8oc3RhY2tGcmFtZS5hcmdzWzFd
LnJldHVybkFkZHJlc3MoKSk7CiAKICAgICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vlbk9uY2UoKSkK
QEAgLTE3MTQsOCArMTcxNSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3Bf
Y29uc3QKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBKU0Z1
bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFs
dWUoKSk7Ci0gICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29uc3RydWN0b3It
PmV4ZWN1dGFibGUoKTsKLSAgICBpZiAoZXhlY3V0YWJsZSAmJiBleGVjdXRhYmxlLT5pc0hvc3RG
dW5jdGlvbigpKSB7CisgICAgaWYgKGNvbnN0cnVjdG9yLT5pc0hvc3RGdW5jdGlvbigpKSB7CiAg
ICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICAg
ICAgdW5zaWduZWQgdlBDSW5kZXggPSBjb2RlQmxvY2stPmdldEJ5dGVjb2RlSW5kZXgoY2FsbEZy
YW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKQEAgLTIwNDIsNyArMjA0Miw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKGludCwgb3BfbG9hZF92YXJhcmcKICAgICAgICAgICAgIHN0YWNrRnJhbWUu
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFt
ZSk7CiAgICAgICAgICAgICBWTV9USFJPV19FWENFUFRJT04oKTsKICAgICAgICAgfQotICAgICAg
ICBpbnQzMl90IGV4cGVjdGVkUGFyYW1zID0gY2FsbEZyYW1lLT5jYWxsZWUoKS0+ZXhlY3V0YWJs
ZSgpLT5wYXJhbWV0ZXJDb3VudCgpOworICAgICAgICBpbnQzMl90IGV4cGVjdGVkUGFyYW1zID0g
Y2FsbEZyYW1lLT5jYWxsZWUoKS0+anNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCk7CiAg
ICAgICAgIGludDMyX3QgaW5wbGFjZUFyZ3MgPSBtaW4ocHJvdmlkZWRQYXJhbXMsIGV4cGVjdGVk
UGFyYW1zKTsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVyKiBpbnBsYWNlQXJnc0RzdCA9IGNh
bGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBhcmdzT2Zmc2V0OwpJbmRleDogSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyLmNwcAkocmV2aXNpb24gNDc2MzcpCisrKyBKYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw4ICsxNTMsOSBAQCBDYWxs
SWRlbnRpZmllciBQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50CiAKIENhbGxJZGVudGlmaWVyIGNy
ZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSlNGdW5jdGlvbiogZnVuY3Rpb24pCiB7CisgICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0
RnVuY3Rpb24oKSk7CiAgICAgY29uc3QgVVN0cmluZyYgbmFtZSA9IGZ1bmN0aW9uLT5jYWxjdWxh
dGVkRGlzcGxheU5hbWUoZ2xvYmFsRGF0YSk7Ci0gICAgcmV0dXJuIENhbGxJZGVudGlmaWVyKG5h
bWUuaXNFbXB0eSgpID8gQW5vbnltb3VzRnVuY3Rpb24gOiBuYW1lLCBmdW5jdGlvbi0+ZXhlY3V0
YWJsZSgpLT5zb3VyY2VVUkwoKSwgZnVuY3Rpb24tPmV4ZWN1dGFibGUoKS0+bGluZU5vKCkpOwor
ICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihuYW1lLmlzRW1wdHkoKSA/IEFub255bW91c0Z1bmN0
aW9uIDogbmFtZSwgZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKSwgZnVuY3Rp
b24tPmpzRXhlY3V0YWJsZSgpLT5saW5lTm8oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiA0NzYzNykK
KysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitOYXRpdmVFeGVjdXRhYmxl
Ojp+TmF0aXZlRXhlY3V0YWJsZSgpCit7Cit9CisKK1ZQdHJIYWNrRXhlY3V0YWJsZTo6flZQdHJI
YWNrRXhlY3V0YWJsZSgpCit7Cit9CisKIEV2YWxFeGVjdXRhYmxlOjp+RXZhbEV4ZWN1dGFibGUo
KQogewogICAgIGRlbGV0ZSBtX2V2YWxDb2RlQmxvY2s7CkBAIC0yMDEsMTYgKzIwOSw2IEBAIHZv
aWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpyZWNvbXBpbGUoRXhlY1MKICNlbmRpZgogfQogCi0jaWYg
RU5BQkxFKEpJVCkKLUZ1bmN0aW9uRXhlY3V0YWJsZTo6RnVuY3Rpb25FeGVjdXRhYmxlKEV4ZWNT
dGF0ZSogZXhlYykKLSAgICA6IG1fY29kZUJsb2NrKDApCi0gICAgLCBtX25hbWUoSWRlbnRpZmll
cihleGVjLCAiPG5hdGl2ZSB0aHVuaz4iKSkKLXsKLSAgICBtX2ppdENvZGUgPSBKSVRDb2RlKEpJ
VENvZGU6Okhvc3RGdW5jdGlvbihleGVjLT5nbG9iYWxEYXRhKCkuaml0U3R1YnMuY3RpTmF0aXZl
Q2FsbFRodW5rKCkpKTsKLSAgICBtX251bVBhcmFtZXRlcnMgPSBOVU1fUEFSQU1FVEVSU19JU19I
T1NUOwotfQotI2VuZGlmCi0KIH07CiAKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDQ5ICszNywyNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHN0cnVjdCBFeGNlcHRpb25JbmZvOwogCi0gICAgY2xhc3MgRXhlY3V0YWJsZUJhc2Ug
eworICAgIGNsYXNzIEV4ZWN1dGFibGVCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJs
ZUJhc2U+IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IGVudW0gTW9kZSB7Ci0gICAgICAgICAgICBOb0pJVENvZGUsCi0gICAgICAgICAgICBIYXNKSVRD
b2RlLAotICAgICAgICAgICAgSXNIb3N0Ci0gICAgICAgIH07CisKKyAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBpbnQgTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCA9IDA7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgTlVNX1BBUkFNRVRFUlNfTk9UX0NPTVBJTEVEID0gLTE7CiAg
ICAgCi0gICAgICAgIHZpcnR1YWwgfkV4ZWN1dGFibGVCYXNlKCkge30KLQotICAgICAgICBFeGVj
dXRhYmxlQmFzZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgICAgICAgICA6IG1fc291
cmNlKHNvdXJjZSkKLSAgICAgICAgICAgICwgbV9udW1QYXJhbWV0ZXJzKE5VTV9QQVJBTUVURVJT
X05PVF9DT01QSUxFRCkKKyAgICBwdWJsaWM6CisgICAgICAgIEV4ZWN1dGFibGVCYXNlKGludCBu
dW1QYXJhbWV0ZXJzKQorICAgICAgICAgICAgOiBtX251bVBhcmFtZXRlcnMobnVtUGFyYW1ldGVy
cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgU291cmNlQ29kZSYgc291
cmNlKCkgeyByZXR1cm4gbV9zb3VyY2U7IH0KLSAgICAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBj
b25zdCB7IHJldHVybiBtX25vZGUtPnNvdXJjZUlEKCk7IH0KLSAgICAgICAgY29uc3QgVVN0cmlu
ZyYgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5zb3VyY2VVUkwoKTsgfQotICAg
ICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5saW5lTm8oKTsgfQotICAg
ICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPmxhc3RMaW5lKCk7IH0K
LQotICAgICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT51c2VzRXZh
bCgpOyB9Ci0gICAgICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZS0+dXNlc0FyZ3VtZW50cygpOyB9Ci0gICAgICAgIGJvb2wgbmVlZHNBY3RpdmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9ub2RlLT5uZWVkc0FjdGl2YXRpb24oKTsgfQorICAgICAgICB2aXJ0dWFs
IH5FeGVjdXRhYmxlQmFzZSgpIHt9CiAKLSAgICAgICAgdmlydHVhbCBFeGNlcHRpb25JbmZvKiBy
ZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqLCBTY29wZUNoYWluTm9kZSosIENvZGVC
bG9jayopID0gMDsKKyAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtUGFyYW1ldGVycyA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUOyB9CiAKICAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIFJlZlB0cjxTY29wZU5vZGU+IG1fbm9kZTsKLSAgICAgICAgU291cmNl
Q29kZSBtX3NvdXJjZTsKICAgICAgICAgaW50IG1fbnVtUGFyYW1ldGVyczsKIAotICAgIHByaXZh
dGU6Ci0gICAgICAgIC8vIEZvciB1c2UgbWFraW5nIG5hdGl2ZSB0aHVuay4KLSAgICAgICAgZnJp
ZW5kIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKLSAgICAgICAgRXhlY3V0YWJsZUJhc2UoKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLQogI2lmIEVOQUJMRShKSVQpCiAgICAgcHVibGljOgogICAg
ICAgICBKSVRDb2RlJiBnZW5lcmF0ZWRKSVRDb2RlKCkKQEAgLTk4LDEwICs3NSw1NiBAQCBuYW1l
c3BhY2UgSlNDIHsKICNlbmRpZgogICAgIH07CiAKLSAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6
IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CisgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZSA6IHB1
YmxpYyBFeGVjdXRhYmxlQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBOYXRpdmVFeGVjdXRh
YmxlKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoTlVNX1BB
UkFNRVRFUlNfSVNfSE9TVCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9qaXRDb2RlID0gSklU
Q29kZShKSVRDb2RlOjpIb3N0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLmppdFN0dWJzLmN0
aU5hdGl2ZUNhbGxUaHVuaygpKSk7CisgICAgICAgIH0KKworICAgICAgICB+TmF0aXZlRXhlY3V0
YWJsZSgpOworICAgIH07CisKKyAgICBjbGFzcyBWUHRySGFja0V4ZWN1dGFibGUgOiBwdWJsaWMg
RXhlY3V0YWJsZUJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgVlB0ckhhY2tFeGVjdXRhYmxl
KCkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoTlVNX1BBUkFNRVRFUlNfSVNfSE9TVCkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgflZQdHJIYWNrRXhlY3V0YWJsZSgpOwor
ICAgIH07CisKKyAgICBjbGFzcyBKU0V4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2Ug
eworICAgIHB1YmxpYzoKKyAgICAgICAgSlNFeGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSkKKyAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2UoTlVNX1BBUkFNRVRFUlNfTk9UX0NP
TVBJTEVEKQorICAgICAgICAgICAgLCBtX3NvdXJjZShzb3VyY2UpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291
cmNlOyB9CisgICAgICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9ub2Rl
LT5zb3VyY2VJRCgpOyB9CisgICAgICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0
IHsgcmV0dXJuIG1fbm9kZS0+c291cmNlVVJMKCk7IH0KKyAgICAgICAgaW50IGxpbmVObygpIGNv
bnN0IHsgcmV0dXJuIG1fbm9kZS0+bGluZU5vKCk7IH0KKyAgICAgICAgaW50IGxhc3RMaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9ub2RlLT5sYXN0TGluZSgpOyB9CisKKyAgICAgICAgYm9vbCB1c2Vz
RXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+dXNlc0V2YWwoKTsgfQorICAgICAgICBib29s
IHVzZXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPnVzZXNBcmd1bWVudHMoKTsg
fQorICAgICAgICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+
bmVlZHNBY3RpdmF0aW9uKCk7IH0KKworICAgICAgICB2aXJ0dWFsIEV4Y2VwdGlvbkluZm8qIHJl
cGFyc2VFeGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSosIFNjb3BlQ2hhaW5Ob2RlKiwgQ29kZUJs
b2NrKikgPSAwOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBTb3VyY2VDb2RlIG1fc291cmNl
OworICAgICAgICBSZWZQdHI8U2NvcGVOb2RlPiBtX25vZGU7CisgICAgfTsKKworICAgIGNsYXNz
IEV2YWxFeGVjdXRhYmxlIDogcHVibGljIEpTRXhlY3V0YWJsZSB7CiAgICAgcHVibGljOgogICAg
ICAgICBFdmFsRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgICAgICAg
ICA6IEV4ZWN1dGFibGVCYXNlKHNvdXJjZSkKKyAgICAgICAgICAgIDogSlNFeGVjdXRhYmxlKHNv
dXJjZSkKICAgICAgICAgICAgICwgbV9ldmFsQ29kZUJsb2NrKDApCiAgICAgICAgIHsKICAgICAg
ICAgfQpAQCAtMTE5LDYgKzE0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEV4Y2Vw
dGlvbkluZm8qIHJlcGFyc2VFeGNlcHRpb25JbmZvKEpTR2xvYmFsRGF0YSosIFNjb3BlQ2hhaW5O
b2RlKiwgQ29kZUJsb2NrKik7CiAKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbEV4ZWN1
dGFibGU+IGNyZWF0ZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBFdmFsRXhlY3V0YWJsZShzb3VyY2UpKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAg
RXZhbE5vZGUqIGV2YWxOb2RlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbE5vZGUqPihtX25v
ZGUuZ2V0KCkpOyB9CiAKQEAgLTE0MCwyMSArMTY1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogI2Vu
ZGlmCiAgICAgfTsKIAotICAgIGNsYXNzIENhY2hlYWJsZUV2YWxFeGVjdXRhYmxlIDogcHVibGlj
IEV2YWxFeGVjdXRhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWFibGVFdmFsRXhlY3V0YWJs
ZT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FjaGVhYmxlRXZh
bEV4ZWN1dGFibGU+IGNyZWF0ZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDYWNoZWFibGVFdmFsRXhlY3V0YWJsZShzb3VyY2UpKTsgfQotCi0gICAgcHJp
dmF0ZToKLSAgICAgICAgQ2FjaGVhYmxlRXZhbEV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQotICAgICAgICAgICAgOiBFdmFsRXhlY3V0YWJsZShzb3VyY2UpCi0gICAgICAgIHsK
LSAgICAgICAgfQotICAgIH07Ci0KLSAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1Ymxp
YyBFeGVjdXRhYmxlQmFzZSB7CisgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMg
SlNFeGVjdXRhYmxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlKGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICAgICAgICAgIDogRXhlY3V0YWJsZUJhc2Uoc291
cmNlKQorICAgICAgICAgICAgOiBKU0V4ZWN1dGFibGUoc291cmNlKQogICAgICAgICAgICAgLCBt
X3Byb2dyYW1Db2RlQmxvY2soMCkKICAgICAgICAgewogICAgICAgICB9CkBAIC0xOTQsMTEgKzIw
OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgIH07CiAKLSAgICBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UsIHB1YmxpYyBSZWZDb3VudGVk
PEZ1bmN0aW9uRXhlY3V0YWJsZT4geworICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1
YmxpYyBKU0V4ZWN1dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1Ymxp
YzoKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHkpCi0gICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKGJvZHkt
PnNvdXJjZSgpKQorICAgICAgICAgICAgOiBKU0V4ZWN1dGFibGUoYm9keS0+c291cmNlKCkpCiAg
ICAgICAgICAgICAsIG1fY29kZUJsb2NrKDApCiAgICAgICAgICAgICAsIG1fbmFtZShuYW1lKQog
ICAgICAgICAgICAgLCBtX251bVZhcmlhYmxlcygwKQpAQCAtMjMxLDcgKzI0NSw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzaXplX3QgdmFyaWFibGVDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtVmFyaWFibGVzOyB9CiAgICAgICAgIFVTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdCB7
IHJldHVybiBib2R5KCktPnBhcmFtU3RyaW5nKCk7IH0KIAotICAgICAgICBib29sIGlzSG9zdEZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9udW1QYXJhbWV0ZXJzID09IE5VTV9QQVJBTUVURVJT
X0lTX0hPU1Q7IH0KICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZCgpIGNvbnN0CiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBtX2NvZGVCbG9jazsKQEAgLTI2MSwxMyArMjc0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlOwogICAgICAgICB9CiAK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBjcmVhdGVOYXRp
dmVUaHVuayhFeGVjU3RhdGUqIGV4ZWMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRnVuY3Rpb25FeGVjdXRhYmxlKGV4ZWMpKTsKLSAgICAgICAgfQotCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKEV4ZWNTdGF0ZSogZXhlYyk7CiAg
ICAgICAgIHZvaWQgZ2VuZXJhdGVKSVRDb2RlKFNjb3BlQ2hhaW5Ob2RlKik7CiAjZW5kaWYKICAg
ICB9OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDggQEAgSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUHJvdG9GdW5jVAogewogICAgIGlmICh0aGlzVmFsdWUuaW5oZXJp
dHMoJkpTRnVuY3Rpb246OmluZm8pKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
YXNGdW5jdGlvbih0aGlzVmFsdWUpOwotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwotICAgICAgICBpZiAoIWV4ZWN1dGFibGUt
PmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgaWYgKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rp
b24oKSkgeworICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVu
Y3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICAgICAgVVN0cmluZyBzb3VyY2VTdHJpbmcg
PSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmluZygpOwogICAgICAgICAgICAgaW5zZXJ0U2Vt
aWNvbG9uSWZOZWVkZWQoc291cmNlU3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCAiZnVuY3Rpb24gIiArIGZ1bmN0aW9uLT5uYW1lKCZleGVjLT5nbG9iYWxEYXRhKCkp
ICsgIigiICsgZXhlY3V0YWJsZS0+cGFyYW1TdHJpbmcoKSArICIpICIgKyBzb3VyY2VTdHJpbmcp
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiA0NzYz
NykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDExICs0NSw2IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGdW5jdGlv
bik7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0Z1bmN0aW9uOjppbmZvID0geyAiRnVuY3Rpb24iLCAm
SW50ZXJuYWxGdW5jdGlvbjo6aW5mbywgMCwgMCB9OwogCi1pbmxpbmUgYm9vbCBKU0Z1bmN0aW9u
Ojppc0hvc3RGdW5jdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZXhlY3V0YWJsZSAmJiBt
X2V4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCk7Ci19Ci0KIGJvb2wgSlNGdW5jdGlvbjo6aXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdAogewogICAgIHJldHVybiBpc0hvc3RGdW5jdGlv
bigpOwpAQCAtNTcsMTQgKzUyLDE2IEBAIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb25O
b25JbmxpbmUKIAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlKQogICAgIDogQmFzZShzdHJ1Y3R1cmUpCisjaWYgRU5BQkxFKEpJVCkKKyAgICAs
IG1fZXhlY3V0YWJsZShhZG9wdFJlZihuZXcgVlB0ckhhY2tFeGVjdXRhYmxlKCkpKQorI2VuZGlm
CiB7Ci0gICAgY2xlYXJTY29wZUNoYWluKCk7CiB9CiAKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBmdW5jKQogICAgIDog
QmFzZSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUsIG5hbWUpCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICAsIG1fZXhlY3V0YWJsZShGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZU5hdGl2ZVRo
dW5rKGV4ZWMpKQorICAgICwgbV9leGVjdXRhYmxlKGFkb3B0UmVmKG5ldyBOYXRpdmVFeGVjdXRh
YmxlKGV4ZWMpKSkKICNlbmRpZgogewogI2lmIEVOQUJMRShKSVQpCkBAIC05MSw4ICs4OCw5IEBA
IEpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCkKICAgICAvLyB0aGlzIG1lbW9yeSBpcyBmcmVlZCBh
bmQgbWF5IGJlIHJldXNlZCAocG90ZW50aWFsbHkgZm9yIGFub3RoZXIsIGRpZmZlcmVudCBKU0Z1
bmN0aW9uKS4KICAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKCkpIHsKICNpZiBFTkFCTEUoSklUX09Q
VElNSVpFX0NBTEwpCi0gICAgICAgIGlmIChtX2V4ZWN1dGFibGUgJiYgbV9leGVjdXRhYmxlLT5p
c0dlbmVyYXRlZCgpKQotICAgICAgICAgICAgbV9leGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29k
ZSgpLnVubGlua0NhbGxlcnMoKTsKKyAgICAgICAgQVNTRVJUKG1fZXhlY3V0YWJsZSk7CisgICAg
ICAgIGlmIChqc0V4ZWN1dGFibGUoKS0+aXNHZW5lcmF0ZWQoKSkKKyAgICAgICAgICAgIGpzRXhl
Y3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZSgpLnVubGlua0NhbGxlcnMoKTsKICNlbmRpZgog
ICAgICAgICBzY29wZUNoYWluKCkuflNjb3BlQ2hhaW4oKTsgLy8gRklYTUU6IERvbid0IHdlIG5l
ZWQgdG8gZG8gdGhpcyBpbiB0aGUgaW50ZXJwcmV0ZXIgdG9vPwogICAgIH0KQEAgLTEwMSw5ICs5
OSwxMCBAQCBKU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCiB2b2lkIEpTRnVuY3Rpb246Om1hcmtD
aGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBCYXNlOjptYXJrQ2hpbGRyZW4o
bWFya1N0YWNrKTsKLSAgICBtX2V4ZWN1dGFibGUtPm1hcmtBZ2dyZWdhdGUobWFya1N0YWNrKTsK
LSAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKCkpCisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbigpKSB7
CisgICAgICAgIGpzRXhlY3V0YWJsZSgpLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiAgICAg
ICAgIHNjb3BlQ2hhaW4oKS5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CisgICAgfQogfQogCiBD
YWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCkBAIC0x
MTIsNyArMTExLDcgQEAgQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdAog
ICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBuYXRpdmVGdW5jdGlvbigpOwogICAg
ICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogICAgIH0KLSAgICBjYWxsRGF0YS5qcy5mdW5jdGlv
bkV4ZWN1dGFibGUgPSBtX2V4ZWN1dGFibGUuZ2V0KCk7CisgICAgY2FsbERhdGEuanMuZnVuY3Rp
b25FeGVjdXRhYmxlID0ganNFeGVjdXRhYmxlKCk7CiAgICAgY2FsbERhdGEuanMuc2NvcGVDaGFp
biA9IHNjb3BlQ2hhaW4oKS5ub2RlKCk7CiAgICAgcmV0dXJuIENhbGxUeXBlSlM7CiB9CkBAIC0x
MjAsNyArMTE5LDcgQEAgQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdAog
SlNWYWx1ZSBKU0Z1bmN0aW9uOjpjYWxsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlzVmFs
dWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CiAgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbigp
KTsKLSAgICByZXR1cm4gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShtX2V4ZWN1dGFibGUu
Z2V0KCksIGV4ZWMsIHRoaXMsIHRoaXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYyksIGFyZ3MsIHNj
b3BlQ2hhaW4oKS5ub2RlKCksIGV4ZWMtPmV4Y2VwdGlvblNsb3QoKSk7CisgICAgcmV0dXJuIGV4
ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUoanNFeGVjdXRhYmxlKCksIGV4ZWMsIHRoaXMsIHRo
aXNWYWx1ZS50b1RoaXNPYmplY3QoZXhlYyksIGFyZ3MsIHNjb3BlQ2hhaW4oKS5ub2RlKCksIGV4
ZWMtPmV4Y2VwdGlvblNsb3QoKSk7CiB9CiAKIEpTVmFsdWUgSlNGdW5jdGlvbjo6YXJndW1lbnRz
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCkKQEAgLTE0MSw3ICsxNDAsNyBAQCBKU1ZhbHVlIEpTRnVuY3Rpb246Omxlbmd0
aEdldHRlcihFeGVjU3RhCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGFzRnVuY3Rpb24o
c2xvdC5zbG90QmFzZSgpKTsKICAgICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkp
OwotICAgIHJldHVybiBqc051bWJlcihleGVjLCB0aGlzT2JqLT5tX2V4ZWN1dGFibGUtPnBhcmFt
ZXRlckNvdW50KCkpOworICAgIHJldHVybiBqc051bWJlcihleGVjLCB0aGlzT2JqLT5qc0V4ZWN1
dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0yMDUsNyArMjA0LDcgQEAgQ29uc3RydWN0VHlw
ZSBKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3REYQogewogICAgIGlmIChpc0hvc3RGdW5jdGlvbigp
KQogICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7Ci0gICAgY29uc3RydWN0RGF0YS5q
cy5mdW5jdGlvbkV4ZWN1dGFibGUgPSBtX2V4ZWN1dGFibGUuZ2V0KCk7CisgICAgY29uc3RydWN0
RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0V4ZWN1dGFibGUoKTsKICAgICBjb25zdHJ1
Y3REYXRhLmpzLnNjb3BlQ2hhaW4gPSBzY29wZUNoYWluKCkubm9kZSgpOwogICAgIHJldHVybiBD
b25zdHJ1Y3RUeXBlSlM7CiB9CkBAIC0yMjEsNyArMjIwLDcgQEAgSlNPYmplY3QqIEpTRnVuY3Rp
b246OmNvbnN0cnVjdChFeGVjU3RhdAogICAgICAgICBzdHJ1Y3R1cmUgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CiAgICAgSlNPYmplY3QqIHRo
aXNPYmogPSBuZXcgKGV4ZWMpIEpTT2JqZWN0KHN0cnVjdHVyZSk7CiAKLSAgICBKU1ZhbHVlIHJl
c3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUobV9leGVjdXRhYmxlLmdldCgpLCBl
eGVjLCB0aGlzLCB0aGlzT2JqLCBhcmdzLCBzY29wZUNoYWluKCkubm9kZSgpLCBleGVjLT5leGNl
cHRpb25TbG90KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+
ZXhlY3V0ZShqc0V4ZWN1dGFibGUoKSwgZXhlYywgdGhpcywgdGhpc09iaiwgYXJncywgc2NvcGVD
aGFpbigpLm5vZGUoKSwgZXhlYy0+ZXhjZXB0aW9uU2xvdCgpKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkgfHwgIXJlc3VsdC5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhpc09i
ajsKICAgICByZXR1cm4gYXNPYmplY3QocmVzdWx0KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCShyZXZpc2lvbiA0NzYzNykKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIHNldFNjb3BlKGNvbnN0IFNjb3BlQ2hhaW4mIHNjb3BlQ2hhaW4p
IHsgc2V0U2NvcGVDaGFpbihzY29wZUNoYWluKTsgfQogICAgICAgICBTY29wZUNoYWluJiBzY29w
ZSgpIHsgcmV0dXJuIHNjb3BlQ2hhaW4oKTsgfQogCi0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0YWJsZS5nZXQoKTsgfQorICAg
ICAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0
YWJsZS5nZXQoKTsgfQorICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJsZSgp
IGNvbnN0IHsgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbigpKTsgcmV0dXJuIHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSk7IH0KIAogICAgICAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gaW5mbzsKIApAQCAtNjcsMTAgKzY4LDE1
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoQ2FsbERhdGEmKTsKIAorICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fZXhlY3V0YWJsZSk7CisgICAgICAg
ICAgICByZXR1cm4gbV9leGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpOworICAgICAgICB9CisK
ICAgICBwcml2YXRlOgogICAgICAgICBKU0Z1bmN0aW9uKFBhc3NSZWZQdHI8U3RydWN0dXJlPik7
CiAKLSAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OwogICAgICAgICBib29sIGlz
SG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7CkBAIC04NSw3ICs5MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
SlNWYWx1ZSBjYWxsZXJHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYpOwogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhHZXR0ZXIoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogCi0gICAg
ICAgIFJlZlB0cjxGdW5jdGlvbkV4ZWN1dGFibGU+IG1fZXhlY3V0YWJsZTsKKyAgICAgICAgUmVm
UHRyPEV4ZWN1dGFibGVCYXNlPiBtX2V4ZWN1dGFibGU7CiAgICAgICAgIFNjb3BlQ2hhaW4mIHNj
b3BlQ2hhaW4oKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWlzSG9zdEZ1bmN0aW9u
Tm9uSW5saW5lKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38388</attachid>
            <date>2009-08-21 13:04:43 -0700</date>
            <delta_ts>2009-08-21 14:11:13 -0700</delta_ts>
            <desc>damn you svn diff, I resolved those files, why don&apos;t you know that?</desc>
            <filename>patch.nativeexec.5.txt</filename>
            <type>text/plain</type>
            <size>32475</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE4IEBACisyMDA5LTA4LTIxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXN0cnVjdHVyZSBFeGVjdXRhYmxlIHR5cGVz
IHNvIHRoYXQgaG9zdCBmdW5jdGlvbnMgZG8gbm90IGhvbGQgYSBGdW5jdGlvbkV4ZWN1dGFibGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODYyMQor
CisgICAgICAgIEFsbCBKU0Z1bmN0aW9uIG9iamVjdHMgaGF2ZSBhIHBvaW50ZXIgdG8gYW4gRXhl
Y3V0YWJsZSouICBUaGlzIGlzIGN1cnJlbnRseSBhbHdheXMgYQorICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUsIGhvd2V2ZXIgdGhpcyBoYXMgYSBjb3VwbGUgb2YgZHJhd2JhY2tzLiAgSG9zdCBm
dW5jdGlvbnMgZG8gbm90CisgICAgICAgIHN0b3JlIGEgcmFuZ2Ugb2YgaW5mb3JtYXRpb24gdGhh
dCB0aGUgRnVuY3Rpb25FeGVjdXRhYmxlIHByb3ZpZGVzIChzb3VyY2UsIG5hbWUsCisgICAgICAg
IENvZGVCbG9jayAmIGluZm9ybWF0aW9uIHByZXNlbnRseSBoZWxkIG9uIHRoZSBGdW5jdGlvbkJv
ZHlOb2RlKS4gCisKKyAgICAgICAgWyAqIG5lYXJseSBhbGwuLi4gc2VlIGJlbG93ISBdCisKKyAg
ICAgICAgSW5zdGVhZCwgbWFrZSBKU0Z1bmN0aW9ucyBob2xkIGEgcG9pbnRlciB0byBhbiBFeGFj
dXRhYmxlQmFzZSwgbW92ZSBmaWVsZHMgc3BlY2lmaWMKKyAgICAgICAgdG8gSlMgc291cmNlZCBl
eGVjdXRhYmxlIHR5cGVzIChzb3VyY2UsIG5vZGUpIGludG8gYSBuZXcgc3ViY2xhc3MgKEpTRXhl
Y3V0YWJsZSksCisgICAgICAgIGFuZCBjcmVhdGUgYSBuZXcgTmF0aXZlRXhlY3V0YWJsZSB0eXBl
LiAgV2Ugbm93IHByb3ZpZGUgYSBuZXcgbWV0aG9kIGluIEpTRnVuY3Rpb24KKyAgICAgICAgdG8g
YWNjZXNzICYgZG93bmNhc3QgdG8gRnVuY3Rpb25FeGVjdXRhYmxlLCBidXQgaW4gZG9pbmcgc28g
d2UgY2FuIG1ha2UgYW4gZWFybHkKKyAgICAgICAgY2hlY2sgKHdpdGggYW4gQVNTRVJUKSB0byBl
bnN1cmUgdGhhdCB0aGUgRXhlY3V0YWJsZSByZWFkIGZyb20gYSBmdW5jdGlvbiB3aWxsIG9ubHkK
KyAgICAgICAgYmUgdHJlYXRlZCBhcyBhIEZ1bmN0aW9uRXhlY3V0YWJsZSAoYW5kIHRodXMgdGhl
IEpTIHNlcGNpZmljIGZpZWxkcyB3aWxsIG9ubHkgYmUKKyAgICAgICAgYWNjZXNzZWQpIGlmIHRo
ZSBKU0Z1bmN0aW9uIGlzIG5vdCBhIGhvc3QgZnVuY3Rpb24uCisKKyAgICAgICAgVGhlcmUgaXMg
b25lIEpTRnVuY3Rpb24gdGhhdCBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBhbiBFeGVjdXRhYmxl
LCB3aGljaCBpcyB0aGUKKyAgICAgICAgb2JqZWN0IGNyZWF0ZWQgdG8gYWxsb3cgdXMgdG8gcmVh
ZCBvdXQgdGhlIHZ0YWJsZSBwb2ludGVyLiAgQnkgbWFraW5nIHRoaXMgY2hhbmdlCisgICAgICAg
IHdlIGNhbiBhbHNvIGFkZCBhIG5ldyBFeGVjdXRhYmxlIHR5cGUgZnJvciB0aGlzIG9iamVjdCAo
VlB0ckhhY2tFeGVjdXRhYmxlKS4KKyAgICAgICAgU2luY2UgdGhpcyBtZWFucyB0aGF0IHJlYWxs
eSBhbGwgSlNGdW5jdGlvbnMgaGF2ZSBhbiBFeGVjdXRhYmxlIHdlIG5vIGxvbmdlciBoYXZlCisg
ICAgICAgIHRvIG51bGwtY2hlY2sgbV9leGVjdXRhYmxlIGJlZm9yZSB1cyBpdCAtIHBhcnRpY3Vs
YXJseSBpbiBpc0hvc3RGdW5jdGlvbigpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBD
YWNoZWFibGVFdmFsRXhlY3V0YWJsZSwgc2luY2UgYWxsIHN1YmNsYXNzZXMgb2YgRXhlY3V0YWJs
ZUJhc2UKKyAgICAgICAgY2FuIG5vdyBiZSByZWYtY291bnRlZCAtIHNpbmNlIGJvdGggSlNGdW5j
dGlvbiBob2xkcyAoYW5kIHJlZi1jb3VudHMpIGFuIEV4ZWN1dGFibGVCYXNlCisgICAgICAgIHRo
YXQgbWlnaHQgYmUgYSBGdW5jdGlvbkV4ZWN1dGFibGUgb3IgYSBOYXRpdmVFeGVjdXRhYmxlLiAg
VGhpcyBkb2VzIG5vdyBtZWFuIHRoYXQgYWxsCisgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlcyBh
bmQgRXZhbEV4ZWN1dGFibGVzICh1bm5lY2Vzc2FyaWx5KSBwcm92aWRlIGFuIGludGVyZmFjZSB0
byBiZQorICAgICAgICByZWYtY291bnRlZCwgaG93ZXZlciB0aGlzIHNlZW1zIGxlc3MtYmFkIHRo
YW4gaG9zdCBmdW5jdGlvbnMgdW5uZWNlc3NhcmlseSBwcm92aWRpbmcKKyAgICAgICAgaW50ZXJm
YWNlIHRvIGFjY2VzcyBub24taG9zdCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4KKworICAgICAgICBU
aGUgY2xhc3MgaGllcmFyY3kgaGFzIGNoYW5nZWQgZnJvbSB0aGlzOgorICAgICAgICAKKyAgICAg
ICAgLSBFeGVjdXRhYmxlQmFzZQorICAgICAgICAgICAgLSBQcm9ncmFtRXhlY3V0YWJsZQorICAg
ICAgICAgICAgLSBFdmFsRXhlY3V0YWJsZQorICAgICAgICAgICAgICAgIC0gQ2FjaGVhYmxlRXZh
bEV4ZWN1dGFibGUgKGFsc28gUmVmQ291bnRlZCBieSBtdWx0aXBsZS1pbmhlcml0YW5jZSkKKyAg
ICAgICAgICAgIC0gRnVuY3Rpb25FeGVjdXRhYmxlIChhbHNvIFJlZkNvdW50ZWQgYnkgbXVsdGlw
bGUtaW5oZXJpdGFuY2UsICdzcGVjaWFsJyBGdW5jdGlvbkV4ZWN1dGFibGUgYWxzbyB1c2VkIGZv
ciBob3N0IGZ1bmN0aW9ucykKKworICAgICAgICBUbyB0aGlzOgorICAgICAgICAKKyAgICAgICAg
LSBSZWZDb3VudGVkCisgICAgICAgICAgICAtIEV4ZWN1dGFibGVCYXNlCisgICAgICAgICAgICAg
ICAgLSBOYXRpdmVFeGVjdXRhYmxlCisgICAgICAgICAgICAgICAgLSBWUHRySGFja0V4ZWN1dGFi
bGUKKyAgICAgICAgICAgICAgICAtIEpTRXhlY3V0YWJsZQorICAgICAgICAgICAgICAgICAgICAt
IFByb2dyYW1FeGVjdXRhYmxlCisgICAgICAgICAgICAgICAgICAgIC0gRXZhbEV4ZWN1dGFibGUK
KyAgICAgICAgICAgICAgICAgICAgLSBGdW5jdGlvbkV4ZWN1dGFibGUKKworICAgICAgICBUaGlz
IHBhdGNoIHNwZWVkcyB1cCBzdW5zcGlkZXkgYnkgYSBjb3VwbGUgb2YgbXMgKHByZXN1bWFibHkg
ZHVlIHRvIHRoZSBjaGFuZ2VzIHRvIGlzSG9zdEZ1bmN0aW9uKCkpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om93bmVyRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6Okdsb2JhbENvZGVCbG9jazo6R2xv
YmFsQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNhY2hlLmg6CisgICAg
ICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMp
OgorICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5j
cHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUNhbGxJZGVudGlmaWVyRnJv
bUZ1bmN0aW9uSW1wKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAo
SlNDOjpBcmd1bWVudHM6OmdldEFyZ3VtZW50c0RhdGEpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpWUHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFja0V4ZWN1dGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6RXhl
Y3V0YWJsZUJhc2UpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6fkV4ZWN1dGFibGVC
YXNlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmlzSG9zdEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAg
IChKU0M6OlZQdHJIYWNrRXhlY3V0YWJsZTo6VlB0ckhhY2tFeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6SlNFeGVjdXRhYmxlOjpKU0V4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpKU0V4ZWN1
dGFibGU6OnNvdXJjZSk6CisgICAgICAgIChKU0M6OkpTRXhlY3V0YWJsZTo6c291cmNlSUQpOgor
ICAgICAgICAoSlNDOjpKU0V4ZWN1dGFibGU6OnNvdXJjZVVSTCk6CisgICAgICAgIChKU0M6OkpT
RXhlY3V0YWJsZTo6bGluZU5vKToKKyAgICAgICAgKEpTQzo6SlNFeGVjdXRhYmxlOjpsYXN0TGlu
ZSk6CisgICAgICAgIChKU0M6OkpTRXhlY3V0YWJsZTo6dXNlc0V2YWwpOgorICAgICAgICAoSlND
OjpKU0V4ZWN1dGFibGU6OnVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKU0V4ZWN1dGFi
bGU6Om5lZWRzQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpFdmFs
RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjp+SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om1hcmtDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Y2FsbCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omxlbmd0
aEdldHRlcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpleGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6anNFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24pOgorCiAyMDA5LTA4LTIwICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsu
CkBAIC0xMDYsNyArMjIxLDcgQEAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCiAK
ICAgICAgICAgTnVtYmVyaW5nIG9mIGFyZ3VtZW50cyB0byBlbWl0R2V0SklUU3R1YkFyZy9lbWl0
UHV0SklUU3R1YkFyZyBpbmNvcnJlY3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4NTEzCisgICAgICAgIDxidWcgbG9zdCBpbiB0aGUgZ3JlYXQgYnVn
IGRpc2FzdGVyb29ueSBvZiAwOC8yMC8wOSE+CiAKICAgICAgICAgVGhlIGFyZ3VtZW50TnVtYmVy
IGFyZ3VtZW50IHRvIGVtaXRHZXRKSVRTdHViQXJnL2VtaXRQdXRKSVRTdHViQXJnIHNob3VsZCBt
YXRjaAogICAgICAgICB0aGUgYXJndW1lbnQgbnVtYmVyIHVzZWQgd2l0aGluIHRoZSBzdHViIGZ1
bmN0aW9ucyBpbiBKSVRTdHVicy5jcHAsIGJ1dCBpdCBkb2Vzbid0LgpJbmRleDogSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA0NzYzNykKKysrIEphdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDgsNyArMTI0
OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wU3RhdGlzdGljcygpCiAjZW5kaWYKIH0KIAotQ29k
ZUJsb2NrOjpDb2RlQmxvY2soRXhlY3V0YWJsZUJhc2UqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5
cGUgY29kZVR5cGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1
bnNpZ25lZCBzb3VyY2VPZmZzZXQsIFN5bWJvbFRhYmxlKiBzeW1UYWIpCitDb2RlQmxvY2s6OkNv
ZGVCbG9jayhKU0V4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUgY29kZVR5cGUs
IFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3Vy
Y2VPZmZzZXQsIFN5bWJvbFRhYmxlKiBzeW1UYWIpCiAgICAgOiBtX251bUNhbGxlZVJlZ2lzdGVy
cygwKQogICAgICwgbV9udW1WYXJzKDApCiAgICAgLCBtX251bVBhcmFtZXRlcnMoMCkKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiA0NzYzNykKKysrIEphdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNyAr
MjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEZh
c3RBbGxvY0Jhc2UgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgQ29kZUJsb2NrKEV4ZWN1dGFibGVCYXNlKiBvd25lckV4ZWN1dGFibGUsIENvZGVU
eXBlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUpOworICAgICAgICBDb2RlQmxvY2soSlNFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIENvZGVUeXBlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwg
dW5zaWduZWQgc291cmNlT2Zmc2V0LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpOwogICAgIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q29kZUJsb2NrKCk7CiAKQEAgLTM2MSw3ICszNjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZVBvb2wqIGV4ZWN1dGFibGVQb29s
KCkgeyByZXR1cm4gb3duZXJFeGVjdXRhYmxlKCktPmdldEV4ZWN1dGFibGVQb29sKCk7IH0KICNl
bmRpZgogCi0gICAgICAgIEV4ZWN1dGFibGVCYXNlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7
IHJldHVybiBtX293bmVyRXhlY3V0YWJsZTsgfQorICAgICAgICBKU0V4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlOyB9CiAKICAgICAg
ICAgdm9pZCBzZXRHbG9iYWxEYXRhKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkgeyBtX2dsb2Jh
bERhdGEgPSBnbG9iYWxEYXRhOyB9CiAKQEAgLTQ5Miw3ICs0OTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLnNldChuZXcgUmFyZURhdGEpOwogICAgICAg
ICB9CiAKLSAgICAgICAgRXhlY3V0YWJsZUJhc2UqIG1fb3duZXJFeGVjdXRhYmxlOworICAgICAg
ICBKU0V4ZWN1dGFibGUqIG1fb3duZXJFeGVjdXRhYmxlOwogICAgICAgICBKU0dsb2JhbERhdGEq
IG1fZ2xvYmFsRGF0YTsKIAogICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+IG1faW5zdHJ1Y3Rp
b25zOwpAQCAtNTYwLDcgKzU2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgR2xv
YmFsQ29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7CiAgICAgcHVibGljOgotICAgICAgICBH
bG9iYWxDb2RlQmxvY2soRXhlY3V0YWJsZUJhc2UqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUg
Y29kZVR5cGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBzb3VyY2VPZmZzZXQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAg
IEdsb2JhbENvZGVCbG9jayhKU0V4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUg
Y29kZVR5cGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBzb3VyY2VPZmZzZXQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAg
ICAgICA6IENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIGNvZGVUeXBlLCBzb3VyY2VQcm92aWRl
ciwgc291cmNlT2Zmc2V0LCAmbV91bnNoYXJlZFN5bWJvbFRhYmxlKQogICAgICAgICAgICAgLCBt
X2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgIHsKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNSAr
NDIsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsQ29kZUNhY2hlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFBhc3NSZWZQdHI8Q2FjaGVhYmxlRXZhbEV4ZWN1dGFibGU+IGdl
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5O
b2RlKiBzY29wZUNoYWluLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSkKKyAgICAgICAgUGFzc1Jl
ZlB0cjxFdmFsRXhlY3V0YWJsZT4gZ2V0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYg
ZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4Y2VwdGlv
blZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQdHI8Q2FjaGVhYmxlRXZhbEV4ZWN1
dGFibGU+IGV2YWxFeGVjdXRhYmxlOworICAgICAgICAgICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxl
PiBldmFsRXhlY3V0YWJsZTsKIAogICAgICAgICAgICAgaWYgKGV2YWxTb3VyY2Uuc2l6ZSgpIDwg
bWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVDaGFpbi0+YmVnaW4oKSktPmlzVmFy
aWFibGVPYmplY3QoKSkKICAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IG1fY2FjaGVN
YXAuZ2V0KGV2YWxTb3VyY2UucmVwKCkpOwogCiAgICAgICAgICAgICBpZiAoIWV2YWxFeGVjdXRh
YmxlKSB7Ci0gICAgICAgICAgICAgICAgZXZhbEV4ZWN1dGFibGUgPSBDYWNoZWFibGVFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKG1ha2VTb3VyY2UoZXZhbFNvdXJjZSkpOworICAgICAgICAgICAgICAg
IGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShtYWtlU291cmNlKGV2YWxT
b3VyY2UpKTsKICAgICAgICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGV2YWxFeGVjdXRhYmxl
LT5wYXJzZShleGVjKTsKICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWNoZWFibGVTb3VyY2VMZW5ndGggPSAy
NTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVFbnRyaWVzID0gNjQ7CiAKLSAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBSZWZQdHI8Q2FjaGVh
YmxlRXZhbEV4ZWN1dGFibGU+ID4gRXZhbENhY2hlTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gPiBFdmFsQ2Fj
aGVNYXA7CiAgICAgICAgIEV2YWxDYWNoZU1hcCBtX2NhY2hlTWFwOwogICAgIH07CiAKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEoKICAgICAg
ICAgaWYgKGZ1bmN0aW9uLT5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAKICAgICAgICAgLy8gQ2hlY2sg
aWYgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIHNldCAtIGlmIHNvLAogICAgICAgICAv
LyB3ZSd2ZSBhbHJlYWR5IHJldHJhbnNsYXRlZCBpdCwgbm90aGluZyB0byBkbyBoZXJlLgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkocmV2aXNpb24gNDc2Mzcp
CisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fZXhj
ZXB0aW9uKGV4Y2VwdGlvbikKICAgICAgICAgICAgICwgbV9nbG9iYWxPYmplY3RTY29wZShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0IDogZnVuY3Rpb24tPnNjb3Bl
KCkubm9kZSgpLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgewotICAgICAgICAgICAgbV9jbG9z
dXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmV4ZWN1
dGFibGUoKSwgY2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJnQ291bnQsIGZ1bmN0aW9uLT5zY29wZSgp
Lm5vZGUoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9z
dEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJl
cGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsIGZ1
bmN0aW9uLCBhcmdDb3VudCwgZnVuY3Rpb24tPnNjb3BlKCkubm9kZSgpLCBleGNlcHRpb24pOwog
ICAgICAgICAgICAgbV92YWxpZCA9ICEqZXhjZXB0aW9uOwogICAgICAgICB9CiAgICAgICAgIApJ
bmRleDogSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNp
b24gNDc2MzcpCisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6Y2FsbEV2CiAKICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiA9IGNh
bGxGcmFtZS0+c2NvcGVDaGFpbigpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKLSAgICBSZWZQdHI8Q2FjaGVhYmxlRXZhbEV4ZWN1dGFibGU+IGV2
YWwgPSBjb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXQoY2FsbEZyYW1lLCBwcm9ncmFtU291
cmNlLCBzY29wZUNoYWluLCBleGNlcHRpb25WYWx1ZSk7CisgICAgUmVmUHRyPEV2YWxFeGVjdXRh
YmxlPiBldmFsID0gY29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0KGNhbGxGcmFtZSwgcHJv
Z3JhbVNvdXJjZSwgc2NvcGVDaGFpbiwgZXhjZXB0aW9uVmFsdWUpOwogCiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChldmFsKQpAQCAtMzA4Miw3ICszMDgyLDgg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7
CiAgICAgICAgICAgICAgICAgZ290byB2bV90aHJvdzsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGludDMyX3QgZXhwZWN0ZWRQYXJhbXMgPSBjYWxsRnJhbWUtPmNhbGxlZSgpLT5leGVjdXRh
YmxlKCktPnBhcmFtZXRlckNvdW50KCk7CisgICAgICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+
Y2FsbGVlKCktPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgaW50MzJfdCBleHBlY3Rl
ZFBhcmFtcyA9IGNhbGxGcmFtZS0+Y2FsbGVlKCktPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJD
b3VudCgpOwogICAgICAgICAgICAgaW50MzJfdCBpbnBsYWNlQXJncyA9IG1pbihhcmdDb3VudCwg
ZXhwZWN0ZWRQYXJhbXMpOwogICAgICAgICAgICAgaW50MzJfdCBpID0gMDsKICAgICAgICAgICAg
IFJlZ2lzdGVyKiBhcmdTdG9yZSA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBhcmdzT2Zmc2V0
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiA0NzYzNykKKysrIEphdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0ODAsOCArMTQ4
MCw4IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX0pTRnUKICNlbmRpZgog
CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWUuYXJnc1sw
XS5qc1ZhbHVlKCkpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0
aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgQVNTRVJUKCFleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlv
bigpKTsKKyAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAg
ICAgU2NvcGVDaGFpbk5vZGUqIGNhbGxEYXRhU2NvcGVDaGFpbiA9IGZ1bmN0aW9uLT5zY29wZSgp
Lm5vZGUoKTsKICAgICBleGVjdXRhYmxlLT5qaXRDb2RlKGNhbGxEYXRhU2NvcGVDaGFpbik7CiAK
QEAgLTE0OTQsNyArMTQ5NCw4IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKFZvaWRQdHJQYWlyLCBv
cF9jYWwKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmV4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0
RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKICAgICBpbnQgYXJnQ291bnQgPSBzdGFj
a0ZyYW1lLmFyZ3NbMl0uaW50MzIoKTsKIAogICAgIEFTU0VSVChhcmdDb3VudCAhPSBuZXdDb2Rl
QmxvY2stPm1fbnVtUGFyYW1ldGVycyk7CkBAIC0xNTM5LDEyICsxNTQwLDEyIEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV9sYXp5TGlua0MKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tf
RlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihz
dGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwogICAgIEpJVENvZGUmIGppdENvZGUgPSBl
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSAwOwogICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAg
ICAgY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmJ5dGVjb2RlKGNhbGxlZS0+c2NvcGUoKS5ub2Rl
KCkpOworICAgICAgICBjb2RlQmxvY2sgPSAmc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlY3V0YWJsZSktPmJ5dGVjb2RlKGNhbGxlZS0+c2NvcGUoKS5ub2RlKCkpOwogICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gJnN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jYWxsZXJG
cmFtZSgpLT5jb2RlQmxvY2soKS0+Z2V0Q2FsbExpbmtJbmZvKHN0YWNrRnJhbWUuYXJnc1sxXS5y
ZXR1cm5BZGRyZXNzKCkpOwogCiAgICAgaWYgKCFjYWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCkBA
IC0xNzE0LDggKzE3MTUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX2Nv
bnN0CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgSlNGdW5j
dGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVl
KCkpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvbnN0cnVjdG9yLT5l
eGVjdXRhYmxlKCk7Ci0gICAgaWYgKGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJsZS0+aXNIb3N0RnVu
Y3Rpb24oKSkgeworICAgIGlmIChjb25zdHJ1Y3Rvci0+aXNIb3N0RnVuY3Rpb24oKSkgewogICAg
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAg
IHVuc2lnbmVkIHZQQ0luZGV4ID0gY29kZUJsb2NrLT5nZXRCeXRlY29kZUluZGV4KGNhbGxGcmFt
ZSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CkBAIC0yMDQyLDcgKzIwNDIsNyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTihpbnQsIG9wX2xvYWRfdmFyYXJnCiAgICAgICAgICAgICBzdGFja0ZyYW1lLmds
b2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUp
OwogICAgICAgICAgICAgVk1fVEhST1dfRVhDRVBUSU9OKCk7CiAgICAgICAgIH0KLSAgICAgICAg
aW50MzJfdCBleHBlY3RlZFBhcmFtcyA9IGNhbGxGcmFtZS0+Y2FsbGVlKCktPmV4ZWN1dGFibGUo
KS0+cGFyYW1ldGVyQ291bnQoKTsKKyAgICAgICAgaW50MzJfdCBleHBlY3RlZFBhcmFtcyA9IGNh
bGxGcmFtZS0+Y2FsbGVlKCktPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpOwogICAg
ICAgICBpbnQzMl90IGlucGxhY2VBcmdzID0gbWluKHByb3ZpZGVkUGFyYW1zLCBleHBlY3RlZFBh
cmFtcyk7CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlciogaW5wbGFjZUFyZ3NEc3QgPSBjYWxs
RnJhbWUtPnJlZ2lzdGVycygpICsgYXJnc09mZnNldDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlci5jcHAJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsOCArMTUzLDkgQEAgQ2FsbElk
ZW50aWZpZXIgUHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudAogCiBDYWxsSWRlbnRpZmllciBjcmVh
dGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlvbkltcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uKQogeworICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1
bmN0aW9uKCkpOwogICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUgPSBmdW5jdGlvbi0+Y2FsY3VsYXRl
ZERpc3BsYXlOYW1lKGdsb2JhbERhdGEpOwotICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihuYW1l
LmlzRW1wdHkoKSA/IEFub255bW91c0Z1bmN0aW9uIDogbmFtZSwgZnVuY3Rpb24tPmV4ZWN1dGFi
bGUoKS0+c291cmNlVVJMKCksIGZ1bmN0aW9uLT5leGVjdXRhYmxlKCktPmxpbmVObygpKTsKKyAg
ICByZXR1cm4gQ2FsbElkZW50aWZpZXIobmFtZS5pc0VtcHR5KCkgPyBBbm9ueW1vdXNGdW5jdGlv
biA6IG5hbWUsIGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+c291cmNlVVJMKCksIGZ1bmN0aW9u
LT5qc0V4ZWN1dGFibGUoKS0+bGluZU5vKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gNDc2MzcpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyAr
MTE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBmdW5jdGlvbiA9IGNhbGxG
cmFtZS0+Y2FsbGVlKCk7CiAKLSAgICAgICAgaW50IG51bVBhcmFtZXRlcnMgPSBmdW5jdGlvbi0+
ZXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpOworICAgICAgICBpbnQgbnVtUGFyYW1ldGVy
cyA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKTsKICAgICAgICAg
YXJnYyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogCiAgICAgICAgIGlmIChhcmdjIDw9
IG51bVBhcmFtZXRlcnMpCkBAIC0xMzgsNyArMTM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGludCBudW1Bcmd1bWVudHM7CiAgICAgICAgIGdldEFyZ3VtZW50c0RhdGEoY2FsbEZyYW1l
LCBjYWxsZWUsIGZpcnN0UGFyYW1ldGVySW5kZXgsIGFyZ3YsIG51bUFyZ3VtZW50cyk7CiAKLSAg
ICAgICAgZC0+bnVtUGFyYW1ldGVycyA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJD
b3VudCgpOworICAgICAgICBkLT5udW1QYXJhbWV0ZXJzID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUo
KS0+cGFyYW1ldGVyQ291bnQoKTsKICAgICAgICAgZC0+Zmlyc3RQYXJhbWV0ZXJJbmRleCA9IGZp
cnN0UGFyYW1ldGVySW5kZXg7CiAgICAgICAgIGQtPm51bUFyZ3VtZW50cyA9IG51bUFyZ3VtZW50
czsKIApAQCAtMTY5LDcgKzE2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICA6IEpTT2Jq
ZWN0KGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUo
KSkKICAgICAgICAgLCBkKG5ldyBBcmd1bWVudHNEYXRhKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KCFjYWxsRnJhbWUtPmNhbGxlZSgpLT5leGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpOwor
ICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+Y2FsbGVlKCktPmpzRXhlY3V0YWJsZSgpLT5wYXJh
bWV0ZXJDb3VudCgpKTsKIAogICAgICAgICB1bnNpZ25lZCBudW1Bcmd1bWVudHMgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSAtIDE7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gNDc2MzcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxNCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorTmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUoKQoreworfQor
CitWUHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFja0V4ZWN1dGFibGUoKQoreworfQorCiBFdmFs
RXhlY3V0YWJsZTo6fkV2YWxFeGVjdXRhYmxlKCkKIHsKICAgICBkZWxldGUgbV9ldmFsQ29kZUJs
b2NrOwpAQCAtMjAxLDE2ICsyMDksNiBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cmVjb21w
aWxlKEV4ZWNTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShKSVQpCi1GdW5jdGlvbkV4ZWN1dGFi
bGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMpCi0gICAgOiBtX2NvZGVCbG9j
aygwKQotICAgICwgbV9uYW1lKElkZW50aWZpZXIoZXhlYywgIjxuYXRpdmUgdGh1bms+IikpCi17
Ci0gICAgbV9qaXRDb2RlID0gSklUQ29kZShKSVRDb2RlOjpIb3N0RnVuY3Rpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLmppdFN0dWJzLmN0aU5hdGl2ZUNhbGxUaHVuaygpKSk7Ci0gICAgbV9udW1QYXJh
bWV0ZXJzID0gTlVNX1BBUkFNRVRFUlNfSVNfSE9TVDsKLX0KLSNlbmRpZgotCiB9OwogCiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiA0NzYzNykKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw0
OSArMzcsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsK
IAotICAgIGNsYXNzIEV4ZWN1dGFibGVCYXNlIHsKKyAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6
IHB1YmxpYyBSZWZDb3VudGVkPEV4ZWN1dGFibGVCYXNlPiB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7Ci0gICAgcHVibGljOgotICAgICAgICBlbnVtIE1vZGUgewotICAgICAgICAgICAgTm9K
SVRDb2RlLAotICAgICAgICAgICAgSGFzSklUQ29kZSwKLSAgICAgICAgICAgIElzSG9zdAotICAg
ICAgICB9OworCisgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9Q
QVJBTUVURVJTX0lTX0hPU1QgPSAwOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9QQVJB
TUVURVJTX05PVF9DT01QSUxFRCA9IC0xOwogICAgIAotICAgICAgICB2aXJ0dWFsIH5FeGVjdXRh
YmxlQmFzZSgpIHt9Ci0KLSAgICAgICAgRXhlY3V0YWJsZUJhc2UoY29uc3QgU291cmNlQ29kZSYg
c291cmNlKQotICAgICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCi0gICAgICAgICAgICAsIG1f
bnVtUGFyYW1ldGVycyhOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCisgICAgcHVibGljOgor
ICAgICAgICBFeGVjdXRhYmxlQmFzZShpbnQgbnVtUGFyYW1ldGVycykKKyAgICAgICAgICAgIDog
bV9udW1QYXJhbWV0ZXJzKG51bVBhcmFtZXRlcnMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlOyB9Ci0g
ICAgICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5zb3VyY2VJ
RCgpOyB9Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1fbm9kZS0+c291cmNlVVJMKCk7IH0KLSAgICAgICAgaW50IGxpbmVObygpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZS0+bGluZU5vKCk7IH0KLSAgICAgICAgaW50IGxhc3RMaW5lKCkgY29uc3QgeyBy
ZXR1cm4gbV9ub2RlLT5sYXN0TGluZSgpOyB9Ci0KLSAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNv
bnN0IHsgcmV0dXJuIG1fbm9kZS0+dXNlc0V2YWwoKTsgfQotICAgICAgICBib29sIHVzZXNBcmd1
bWVudHMoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPnVzZXNBcmd1bWVudHMoKTsgfQotICAgICAg
ICBib29sIG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+bmVlZHNBY3Rp
dmF0aW9uKCk7IH0KKyAgICAgICAgdmlydHVhbCB+RXhlY3V0YWJsZUJhc2UoKSB7fQogCi0gICAg
ICAgIHZpcnR1YWwgRXhjZXB0aW9uSW5mbyogcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxE
YXRhKiwgU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKSA9IDA7CisgICAgICAgIGJvb2wgaXNI
b3N0RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnMgPT0gTlVNX1BBUkFN
RVRFUlNfSVNfSE9TVDsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBSZWZQdHI8U2NvcGVO
b2RlPiBtX25vZGU7Ci0gICAgICAgIFNvdXJjZUNvZGUgbV9zb3VyY2U7CiAgICAgICAgIGludCBt
X251bVBhcmFtZXRlcnM7CiAKLSAgICBwcml2YXRlOgotICAgICAgICAvLyBGb3IgdXNlIG1ha2lu
ZyBuYXRpdmUgdGh1bmsuCi0gICAgICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
Ci0gICAgICAgIEV4ZWN1dGFibGVCYXNlKCkKLSAgICAgICAgewotICAgICAgICB9Ci0KICNpZiBF
TkFCTEUoSklUKQogICAgIHB1YmxpYzoKICAgICAgICAgSklUQ29kZSYgZ2VuZXJhdGVkSklUQ29k
ZSgpCkBAIC05OCwxMCArNzUsNTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9Owog
Ci0gICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgeworICAg
IGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgeworICAgIHB1
YmxpYzoKKyAgICAgICAgTmF0aXZlRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMpCisgICAgICAg
ICAgICA6IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1faml0Q29kZSA9IEpJVENvZGUoSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKS5qaXRTdHVicy5jdGlOYXRpdmVDYWxsVGh1bmsoKSkpOworICAgICAg
ICB9CisKKyAgICAgICAgfk5hdGl2ZUV4ZWN1dGFibGUoKTsKKyAgICB9OworCisgICAgY2xhc3Mg
VlB0ckhhY2tFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFZQdHJIYWNrRXhlY3V0YWJsZSgpCisgICAgICAgICAgICA6IEV4ZWN1dGFibGVC
YXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIH5WUHRySGFja0V4ZWN1dGFibGUoKTsKKyAgICB9OworCisgICAgY2xhc3MgSlNFeGVjdXRh
YmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEpTRXhl
Y3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgICAgICA6IEV4ZWN1dGFi
bGVCYXNlKE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKKyAgICAgICAgICAgICwgbV9zb3Vy
Y2Uoc291cmNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgICAgICBpbnRwdHJfdCBzb3Vy
Y2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+c291cmNlSUQoKTsgfQorICAgICAgICBjb25z
dCBVU3RyaW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPnNvdXJjZVVSTCgp
OyB9CisgICAgICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX25vZGUtPmxpbmVObygp
OyB9CisgICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+bGFzdExp
bmUoKTsgfQorCisgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX25vZGUt
PnVzZXNFdmFsKCk7IH0KKyAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1
cm4gbV9ub2RlLT51c2VzQXJndW1lbnRzKCk7IH0KKyAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX25vZGUtPm5lZWRzQWN0aXZhdGlvbigpOyB9CisKKyAgICAg
ICAgdmlydHVhbCBFeGNlcHRpb25JbmZvKiByZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERh
dGEqLCBTY29wZUNoYWluTm9kZSosIENvZGVCbG9jayopID0gMDsKKworICAgIHByb3RlY3RlZDoK
KyAgICAgICAgU291cmNlQ29kZSBtX3NvdXJjZTsKKyAgICAgICAgUmVmUHRyPFNjb3BlTm9kZT4g
bV9ub2RlOworICAgIH07CisKKyAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0V4
ZWN1dGFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgRXZhbEV4ZWN1dGFibGUoY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQotICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShzb3VyY2UpCisg
ICAgICAgICAgICA6IEpTRXhlY3V0YWJsZShzb3VyY2UpCiAgICAgICAgICAgICAsIG1fZXZhbENv
ZGVCbG9jaygwKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTExOSw2ICsxNDIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBFeGNlcHRpb25JbmZvKiByZXBhcnNlRXhjZXB0aW9uSW5m
byhKU0dsb2JhbERhdGEqLCBTY29wZUNoYWluTm9kZSosIENvZGVCbG9jayopOwogCisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBjcmVhdGUoY29uc3QgU291cmNlQ29k
ZSYgc291cmNlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRXZhbEV4ZWN1dGFibGUoc291cmNlKSk7
IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIEV2YWxOb2RlKiBldmFsTm9kZSgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PEV2YWxOb2RlKj4obV9ub2RlLmdldCgpKTsgfQogCkBAIC0xNDAsMjEgKzE2
NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgIH07CiAKLSAgICBjbGFzcyBDYWNo
ZWFibGVFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBFdmFsRXhlY3V0YWJsZSwgcHVibGljIFJlZkNv
dW50ZWQ8Q2FjaGVhYmxlRXZhbEV4ZWN1dGFibGU+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENhY2hlYWJsZUV2YWxFeGVjdXRhYmxlPiBjcmVhdGUoY29uc3QgU291
cmNlQ29kZSYgc291cmNlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FjaGVhYmxlRXZhbEV4ZWN1
dGFibGUoc291cmNlKSk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENhY2hlYWJsZUV2YWxF
eGVjdXRhYmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICAgICAgICAgIDogRXZhbEV4
ZWN1dGFibGUoc291cmNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgY2xh
c3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgeworICAgIGNsYXNz
IFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIEpTRXhlY3V0YWJsZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBQcm9ncmFtRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAg
ICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKHNvdXJjZSkKKyAgICAgICAgICAgIDogSlNFeGVjdXRh
YmxlKHNvdXJjZSkKICAgICAgICAgICAgICwgbV9wcm9ncmFtQ29kZUJsb2NrKDApCiAgICAgICAg
IHsKICAgICAgICAgfQpAQCAtMTk0LDExICsyMDgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5k
aWYKICAgICB9OwogCi0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1
dGFibGVCYXNlLCBwdWJsaWMgUmVmQ291bnRlZDxGdW5jdGlvbkV4ZWN1dGFibGU+IHsKKyAgICBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgSlNFeGVjdXRhYmxlIHsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZShjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQotICAgICAg
ICAgICAgOiBFeGVjdXRhYmxlQmFzZShib2R5LT5zb3VyY2UoKSkKKyAgICAgICAgICAgIDogSlNF
eGVjdXRhYmxlKGJvZHktPnNvdXJjZSgpKQogICAgICAgICAgICAgLCBtX2NvZGVCbG9jaygwKQog
ICAgICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgICAgICwgbV9udW1WYXJpYWJsZXMo
MCkKQEAgLTIzMSw3ICsyNDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90IHZh
cmlhYmxlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX251bVZhcmlhYmxlczsgfQogICAgICAgICBV
U3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gYm9keSgpLT5wYXJhbVN0cmluZygp
OyB9CiAKLSAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
UGFyYW1ldGVycyA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUOyB9CiAgICAgICAgIGJvb2wgaXNH
ZW5lcmF0ZWQoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxv
Y2s7CkBAIC0yNjEsMTMgKzI3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG1faml0Q29kZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1
bmN0aW9uRXhlY3V0YWJsZT4gY3JlYXRlTmF0aXZlVGh1bmsoRXhlY1N0YXRlKiBleGVjKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZ1bmN0aW9uRXhlY3V0YWJs
ZShleGVjKSk7Ci0gICAgICAgIH0KLQogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMpOwogICAgICAgICB2b2lkIGdlbmVyYXRlSklUQ29kZShT
Y29wZUNoYWluTm9kZSopOwogI2VuZGlmCiAgICAgfTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiA0NzYzNykKKysrIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw4ICs4Niw4IEBAIEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1QK
IHsKICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKCZKU0Z1bmN0aW9uOjppbmZvKSkgewogICAg
ICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGFzRnVuY3Rpb24odGhpc1ZhbHVlKTsKLSAgICAg
ICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1dGFibGUo
KTsKLSAgICAgICAgaWYgKCFleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAg
IGlmICghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICAgICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKICAgICAg
ICAgICAgIFVTdHJpbmcgc291cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJp
bmcoKTsKICAgICAgICAgICAgIGluc2VydFNlbWljb2xvbklmTmVlZGVkKHNvdXJjZVN0cmluZyk7
CiAgICAgICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIgKyBmdW5jdGlv
bi0+bmFtZSgmZXhlYy0+Z2xvYmFsRGF0YSgpKSArICIoIiArIGV4ZWN1dGFibGUtPnBhcmFtU3Ry
aW5nKCkgKyAiKSAiICsgc291cmNlU3RyaW5nKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gNDc2MzcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsNiBAQCBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEpTRnVuY3Rpb24pOwogCiBjb25zdCBDbGFzc0luZm8gSlNGdW5j
dGlvbjo6aW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OmluZm8sIDAsIDAg
fTsKIAotaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24oKSBjb25zdAotewot
ICAgIHJldHVybiBtX2V4ZWN1dGFibGUgJiYgbV9leGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigp
OwotfQotCiBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3QK
IHsKICAgICByZXR1cm4gaXNIb3N0RnVuY3Rpb24oKTsKQEAgLTU3LDE0ICs1MiwxNiBAQCBib29s
IEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiAKIEpTRnVuY3Rpb246OkpTRnVu
Y3Rpb24oUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICA6IEJhc2Uoc3RydWN0
dXJlKQorI2lmIEVOQUJMRShKSVQpCisgICAgLCBtX2V4ZWN1dGFibGUoYWRvcHRSZWYobmV3IFZQ
dHJIYWNrRXhlY3V0YWJsZSgpKSkKKyNlbmRpZgogewotICAgIGNsZWFyU2NvcGVDaGFpbigpOwog
fQogCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
TmF0aXZlRnVuY3Rpb24gZnVuYykKICAgICA6IEJhc2UoJmV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlLCBuYW1lKQogI2lmIEVOQUJMRShKSVQpCi0gICAgLCBtX2V4ZWN1dGFibGUoRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGVOYXRpdmVUaHVuayhleGVjKSkKKyAgICAsIG1fZXhlY3V0YWJs
ZShhZG9wdFJlZihuZXcgTmF0aXZlRXhlY3V0YWJsZShleGVjKSkpCiAjZW5kaWYKIHsKICNpZiBF
TkFCTEUoSklUKQpAQCAtOTEsOCArODgsOSBAQCBKU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCiAg
ICAgLy8gdGhpcyBtZW1vcnkgaXMgZnJlZWQgYW5kIG1heSBiZSByZXVzZWQgKHBvdGVudGlhbGx5
IGZvciBhbm90aGVyLCBkaWZmZXJlbnQgSlNGdW5jdGlvbikuCiAgICAgaWYgKCFpc0hvc3RGdW5j
dGlvbigpKSB7CiAjaWYgRU5BQkxFKEpJVF9PUFRJTUlaRV9DQUxMKQotICAgICAgICBpZiAobV9l
eGVjdXRhYmxlICYmIG1fZXhlY3V0YWJsZS0+aXNHZW5lcmF0ZWQoKSkKLSAgICAgICAgICAgIG1f
ZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKS51bmxpbmtDYWxsZXJzKCk7CisgICAgICAg
IEFTU0VSVChtX2V4ZWN1dGFibGUpOworICAgICAgICBpZiAoanNFeGVjdXRhYmxlKCktPmlzR2Vu
ZXJhdGVkKCkpCisgICAgICAgICAgICBqc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGUo
KS51bmxpbmtDYWxsZXJzKCk7CiAjZW5kaWYKICAgICAgICAgc2NvcGVDaGFpbigpLn5TY29wZUNo
YWluKCk7IC8vIEZJWE1FOiBEb24ndCB3ZSBuZWVkIHRvIGRvIHRoaXMgaW4gdGhlIGludGVycHJl
dGVyIHRvbz8KICAgICB9CkBAIC0xMDEsOSArOTksMTAgQEAgSlNGdW5jdGlvbjo6fkpTRnVuY3Rp
b24oKQogdm9pZCBKU0Z1bmN0aW9uOjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2sp
CiB7CiAgICAgQmFzZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7Ci0gICAgbV9leGVjdXRhYmxl
LT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7Ci0gICAgaWYgKCFpc0hvc3RGdW5jdGlvbigpKQor
ICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICBqc0V4ZWN1dGFibGUoKS0+bWFy
a0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogICAgICAgICBzY29wZUNoYWluKCkubWFya0FnZ3JlZ2F0
ZShtYXJrU3RhY2spOworICAgIH0KIH0KIAogQ2FsbFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q2FsbERh
dGEoQ2FsbERhdGEmIGNhbGxEYXRhKQpAQCAtMTEyLDcgKzExMSw3IEBAIENhbGxUeXBlIEpTRnVu
Y3Rpb246OmdldENhbGxEYXRhKENhbGxEYXQKICAgICAgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gbmF0aXZlRnVuY3Rpb24oKTsKICAgICAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKICAg
ICB9Ci0gICAgY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0gbV9leGVjdXRhYmxlLmdl
dCgpOworICAgIGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRXhlY3V0YWJsZSgp
OwogICAgIGNhbGxEYXRhLmpzLnNjb3BlQ2hhaW4gPSBzY29wZUNoYWluKCkubm9kZSgpOwogICAg
IHJldHVybiBDYWxsVHlwZUpTOwogfQpAQCAtMTIwLDcgKzExOSw3IEBAIENhbGxUeXBlIEpTRnVu
Y3Rpb246OmdldENhbGxEYXRhKENhbGxEYXQKIEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewog
ICAgIEFTU0VSVCghaXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgcmV0dXJuIGV4ZWMtPmludGVycHJl
dGVyKCktPmV4ZWN1dGUobV9leGVjdXRhYmxlLmdldCgpLCBleGVjLCB0aGlzLCB0aGlzVmFsdWUu
dG9UaGlzT2JqZWN0KGV4ZWMpLCBhcmdzLCBzY29wZUNoYWluKCkubm9kZSgpLCBleGVjLT5leGNl
cHRpb25TbG90KCkpOworICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5leGVjdXRlKGpz
RXhlY3V0YWJsZSgpLCBleGVjLCB0aGlzLCB0aGlzVmFsdWUudG9UaGlzT2JqZWN0KGV4ZWMpLCBh
cmdzLCBzY29wZUNoYWluKCkubm9kZSgpLCBleGVjLT5leGNlcHRpb25TbG90KCkpOwogfQogCiBK
U1ZhbHVlIEpTRnVuY3Rpb246OmFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCkBAIC0xNDEsNyArMTQwLDcg
QEAgSlNWYWx1ZSBKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YQogewogICAgIEpTRnVu
Y3Rpb24qIHRoaXNPYmogPSBhc0Z1bmN0aW9uKHNsb3Quc2xvdEJhc2UoKSk7CiAgICAgQVNTRVJU
KCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywg
dGhpc09iai0+bV9leGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3VudCgpKTsKKyAgICByZXR1cm4ganNO
dW1iZXIoZXhlYywgdGhpc09iai0+anNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpOwog
fQogCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAt
MjA1LDcgKzIwNCw3IEBAIENvbnN0cnVjdFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0RGEK
IHsKICAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5
cGVOb25lOwotICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0gbV9leGVj
dXRhYmxlLmdldCgpOworICAgIGNvbnN0cnVjdERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlID0g
anNFeGVjdXRhYmxlKCk7CiAgICAgY29uc3RydWN0RGF0YS5qcy5zY29wZUNoYWluID0gc2NvcGVD
aGFpbigpLm5vZGUoKTsKICAgICByZXR1cm4gQ29uc3RydWN0VHlwZUpTOwogfQpAQCAtMjIxLDcg
KzIyMCw3IEBAIEpTT2JqZWN0KiBKU0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXQKICAgICAg
ICAgc3RydWN0dXJlID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5lbXB0eU9iamVjdFN0
cnVjdHVyZSgpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gbmV3IChleGVjKSBKU09iamVjdChz
dHJ1Y3R1cmUpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBleGVjLT5pbnRlcnByZXRlcigpLT5l
eGVjdXRlKG1fZXhlY3V0YWJsZS5nZXQoKSwgZXhlYywgdGhpcywgdGhpc09iaiwgYXJncywgc2Nv
cGVDaGFpbigpLm5vZGUoKSwgZXhlYy0+ZXhjZXB0aW9uU2xvdCgpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4ZWN1dGUoanNFeGVjdXRhYmxlKCksIGV4ZWMs
IHRoaXMsIHRoaXNPYmosIGFyZ3MsIHNjb3BlQ2hhaW4oKS5ub2RlKCksIGV4ZWMtPmV4Y2VwdGlv
blNsb3QoKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpIHx8ICFyZXN1bHQuaXNPYmpl
Y3QoKSkKICAgICAgICAgcmV0dXJuIHRoaXNPYmo7CiAgICAgcmV0dXJuIGFzT2JqZWN0KHJlc3Vs
dCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gNDc2Mzcp
CisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNyArNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRTY29wZShj
b25zdCBTY29wZUNoYWluJiBzY29wZUNoYWluKSB7IHNldFNjb3BlQ2hhaW4oc2NvcGVDaGFpbik7
IH0KICAgICAgICAgU2NvcGVDaGFpbiYgc2NvcGUoKSB7IHJldHVybiBzY29wZUNoYWluKCk7IH0K
IAotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVy
biBtX2V4ZWN1dGFibGUuZ2V0KCk7IH0KKyAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUoKSBjb25zdCB7IHJldHVybiBtX2V4ZWN1dGFibGUuZ2V0KCk7IH0KKyAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBqc0V4ZWN1dGFibGUoKSBjb25zdCB7IEFTU0VSVCghaXNIb3N0RnVuY3Rp
b24oKSk7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2V4ZWN1dGFi
bGUuZ2V0KCkpOyB9CiAKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIGluZm87CiAKQEAgLTY3LDEwICs2OCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwog
ICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAKKyAgICAg
ICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChtX2V4ZWN1dGFibGUpOworICAgICAgICAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aXNI
b3N0RnVuY3Rpb24oKTsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNGdW5j
dGlvbihQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogCi0gICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rp
b24oKSBjb25zdDsKICAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0
OwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwpAQCAtODUsNyArOTEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTVmFsdWUgY2FsbGVyR2V0dGVyKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgc3Rh
dGljIEpTVmFsdWUgbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKIAotICAgICAgICBSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxl
PiBtX2V4ZWN1dGFibGU7CisgICAgICAgIFJlZlB0cjxFeGVjdXRhYmxlQmFzZT4gbV9leGVjdXRh
YmxlOwogICAgICAgICBTY29wZUNoYWluJiBzY29wZUNoYWluKCkKICAgICAgICAgewogICAgICAg
ICAgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38394</attachid>
            <date>2009-08-21 14:11:13 -0700</date>
            <delta_ts>2009-08-21 14:40:12 -0700</delta_ts>
            <desc>Remove dependency on Executable.h from JSFunction.h to make Darin a happy person.</desc>
            <filename>patch.nativeexec.6.txt</filename>
            <type>text/plain</type>
            <size>33589</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE4IEBACisyMDA5LTA4LTIxICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXN0cnVjdHVyZSBFeGVjdXRhYmxlIHR5cGVz
IHNvIHRoYXQgaG9zdCBmdW5jdGlvbnMgZG8gbm90IGhvbGQgYSBGdW5jdGlvbkV4ZWN1dGFibGUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODYyMQor
CisgICAgICAgIEFsbCBKU0Z1bmN0aW9uIG9iamVjdHMgaGF2ZSBhIHBvaW50ZXIgdG8gYW4gRXhl
Y3V0YWJsZSouICBUaGlzIGlzIGN1cnJlbnRseSBhbHdheXMgYQorICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUsIGhvd2V2ZXIgdGhpcyBoYXMgYSBjb3VwbGUgb2YgZHJhd2JhY2tzLiAgSG9zdCBm
dW5jdGlvbnMgZG8gbm90CisgICAgICAgIHN0b3JlIGEgcmFuZ2Ugb2YgaW5mb3JtYXRpb24gdGhh
dCB0aGUgRnVuY3Rpb25FeGVjdXRhYmxlIHByb3ZpZGVzIChzb3VyY2UsIG5hbWUsCisgICAgICAg
IENvZGVCbG9jayAmIGluZm9ybWF0aW9uIHByZXNlbnRseSBoZWxkIG9uIHRoZSBGdW5jdGlvbkJv
ZHlOb2RlKS4gCisKKyAgICAgICAgWyAqIG5lYXJseSBhbGwuLi4gc2VlIGJlbG93ISBdCisKKyAg
ICAgICAgSW5zdGVhZCwgbWFrZSBKU0Z1bmN0aW9ucyBob2xkIGEgcG9pbnRlciB0byBhbiBFeGFj
dXRhYmxlQmFzZSwgbW92ZSBmaWVsZHMgc3BlY2lmaWMKKyAgICAgICAgdG8gSlMgc291cmNlZCBl
eGVjdXRhYmxlIHR5cGVzIChzb3VyY2UsIG5vZGUpIGludG8gYSBuZXcgc3ViY2xhc3MgKEpTRXhl
Y3V0YWJsZSksCisgICAgICAgIGFuZCBjcmVhdGUgYSBuZXcgTmF0aXZlRXhlY3V0YWJsZSB0eXBl
LiAgV2Ugbm93IHByb3ZpZGUgYSBuZXcgbWV0aG9kIGluIEpTRnVuY3Rpb24KKyAgICAgICAgdG8g
YWNjZXNzICYgZG93bmNhc3QgdG8gRnVuY3Rpb25FeGVjdXRhYmxlLCBidXQgaW4gZG9pbmcgc28g
d2UgY2FuIG1ha2UgYW4gZWFybHkKKyAgICAgICAgY2hlY2sgKHdpdGggYW4gQVNTRVJUKSB0byBl
bnN1cmUgdGhhdCB0aGUgRXhlY3V0YWJsZSByZWFkIGZyb20gYSBmdW5jdGlvbiB3aWxsIG9ubHkK
KyAgICAgICAgYmUgdHJlYXRlZCBhcyBhIEZ1bmN0aW9uRXhlY3V0YWJsZSAoYW5kIHRodXMgdGhl
IEpTIHNlcGNpZmljIGZpZWxkcyB3aWxsIG9ubHkgYmUKKyAgICAgICAgYWNjZXNzZWQpIGlmIHRo
ZSBKU0Z1bmN0aW9uIGlzIG5vdCBhIGhvc3QgZnVuY3Rpb24uCisKKyAgICAgICAgVGhlcmUgaXMg
b25lIEpTRnVuY3Rpb24gdGhhdCBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSBhbiBFeGVjdXRhYmxl
LCB3aGljaCBpcyB0aGUKKyAgICAgICAgb2JqZWN0IGNyZWF0ZWQgdG8gYWxsb3cgdXMgdG8gcmVh
ZCBvdXQgdGhlIHZ0YWJsZSBwb2ludGVyLiAgQnkgbWFraW5nIHRoaXMgY2hhbmdlCisgICAgICAg
IHdlIGNhbiBhbHNvIGFkZCBhIG5ldyBFeGVjdXRhYmxlIHR5cGUgZnJvciB0aGlzIG9iamVjdCAo
VlB0ckhhY2tFeGVjdXRhYmxlKS4KKyAgICAgICAgU2luY2UgdGhpcyBtZWFucyB0aGF0IHJlYWxs
eSBhbGwgSlNGdW5jdGlvbnMgaGF2ZSBhbiBFeGVjdXRhYmxlIHdlIG5vIGxvbmdlciBoYXZlCisg
ICAgICAgIHRvIG51bGwtY2hlY2sgbV9leGVjdXRhYmxlIGJlZm9yZSB1cyBpdCAtIHBhcnRpY3Vs
YXJseSBpbiBpc0hvc3RGdW5jdGlvbigpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBD
YWNoZWFibGVFdmFsRXhlY3V0YWJsZSwgc2luY2UgYWxsIHN1YmNsYXNzZXMgb2YgRXhlY3V0YWJs
ZUJhc2UKKyAgICAgICAgY2FuIG5vdyBiZSByZWYtY291bnRlZCAtIHNpbmNlIGJvdGggSlNGdW5j
dGlvbiBob2xkcyAoYW5kIHJlZi1jb3VudHMpIGFuIEV4ZWN1dGFibGVCYXNlCisgICAgICAgIHRo
YXQgbWlnaHQgYmUgYSBGdW5jdGlvbkV4ZWN1dGFibGUgb3IgYSBOYXRpdmVFeGVjdXRhYmxlLiAg
VGhpcyBkb2VzIG5vdyBtZWFuIHRoYXQgYWxsCisgICAgICAgIFByb2dyYW1FeGVjdXRhYmxlcyBh
bmQgRXZhbEV4ZWN1dGFibGVzICh1bm5lY2Vzc2FyaWx5KSBwcm92aWRlIGFuIGludGVyZmFjZSB0
byBiZQorICAgICAgICByZWYtY291bnRlZCwgaG93ZXZlciB0aGlzIHNlZW1zIGxlc3MtYmFkIHRo
YW4gaG9zdCBmdW5jdGlvbnMgdW5uZWNlc3NhcmlseSBwcm92aWRpbmcKKyAgICAgICAgaW50ZXJm
YWNlIHRvIGFjY2VzcyBub24taG9zdCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4KKworICAgICAgICBU
aGUgY2xhc3MgaGllcmFyY3kgaGFzIGNoYW5nZWQgZnJvbSB0aGlzOgorICAgICAgICAKKyAgICAg
ICAgLSBFeGVjdXRhYmxlQmFzZQorICAgICAgICAgICAgLSBQcm9ncmFtRXhlY3V0YWJsZQorICAg
ICAgICAgICAgLSBFdmFsRXhlY3V0YWJsZQorICAgICAgICAgICAgICAgIC0gQ2FjaGVhYmxlRXZh
bEV4ZWN1dGFibGUgKGFsc28gUmVmQ291bnRlZCBieSBtdWx0aXBsZS1pbmhlcml0YW5jZSkKKyAg
ICAgICAgICAgIC0gRnVuY3Rpb25FeGVjdXRhYmxlIChhbHNvIFJlZkNvdW50ZWQgYnkgbXVsdGlw
bGUtaW5oZXJpdGFuY2UsICdzcGVjaWFsJyBGdW5jdGlvbkV4ZWN1dGFibGUgYWxzbyB1c2VkIGZv
ciBob3N0IGZ1bmN0aW9ucykKKworICAgICAgICBUbyB0aGlzOgorICAgICAgICAKKyAgICAgICAg
LSBSZWZDb3VudGVkCisgICAgICAgICAgICAtIEV4ZWN1dGFibGVCYXNlCisgICAgICAgICAgICAg
ICAgLSBOYXRpdmVFeGVjdXRhYmxlCisgICAgICAgICAgICAgICAgLSBWUHRySGFja0V4ZWN1dGFi
bGUKKyAgICAgICAgICAgICAgICAtIEpTRXhlY3V0YWJsZQorICAgICAgICAgICAgICAgICAgICAt
IFByb2dyYW1FeGVjdXRhYmxlCisgICAgICAgICAgICAgICAgICAgIC0gRXZhbEV4ZWN1dGFibGUK
KyAgICAgICAgICAgICAgICAgICAgLSBGdW5jdGlvbkV4ZWN1dGFibGUKKworICAgICAgICBUaGlz
IHBhdGNoIHNwZWVkcyB1cCBzdW5zcGlkZXkgYnkgYSBjb3VwbGUgb2YgbXMgKHByZXN1bWFibHkg
ZHVlIHRvIHRoZSBjaGFuZ2VzIHRvIGlzSG9zdEZ1bmN0aW9uKCkpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2sp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Om93bmVyRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6Okdsb2JhbENvZGVCbG9jazo6R2xv
YmFsQ29kZUJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9FdmFsQ29kZUNhY2hlLmg6CisgICAg
ICAgIChKU0M6OkV2YWxDb2RlQ2FjaGU6OmdldCk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMp
OgorICAgICAgICAqIGludGVycHJldGVyL0NhY2hlZENhbGwuaDoKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkQ2FsbDo6Q2FjaGVkQ2FsbCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Y2FsbEV2YWwpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5j
cHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUNhbGxJZGVudGlmaWVyRnJv
bUZ1bmN0aW9uSW1wKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAo
SlNDOjpBcmd1bWVudHM6OmdldEFyZ3VtZW50c0RhdGEpOgorICAgICAgICAoSlNDOjpBcmd1bWVu
dHM6OkFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAg
ICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpWUHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFja0V4ZWN1dGFibGUpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6RXhl
Y3V0YWJsZUJhc2UpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQmFzZTo6fkV4ZWN1dGFibGVC
YXNlKToKKyAgICAgICAgKEpTQzo6RXhlY3V0YWJsZUJhc2U6OmlzSG9zdEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6TmF0aXZlRXhlY3V0YWJsZTo6TmF0aXZlRXhlY3V0YWJsZSk6CisgICAgICAg
IChKU0M6OlZQdHJIYWNrRXhlY3V0YWJsZTo6VlB0ckhhY2tFeGVjdXRhYmxlKToKKyAgICAgICAg
KEpTQzo6SlNFeGVjdXRhYmxlOjpKU0V4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpKU0V4ZWN1
dGFibGU6OnNvdXJjZSk6CisgICAgICAgIChKU0M6OkpTRXhlY3V0YWJsZTo6c291cmNlSUQpOgor
ICAgICAgICAoSlNDOjpKU0V4ZWN1dGFibGU6OnNvdXJjZVVSTCk6CisgICAgICAgIChKU0M6OkpT
RXhlY3V0YWJsZTo6bGluZU5vKToKKyAgICAgICAgKEpTQzo6SlNFeGVjdXRhYmxlOjpsYXN0TGlu
ZSk6CisgICAgICAgIChKU0M6OkpTRXhlY3V0YWJsZTo6dXNlc0V2YWwpOgorICAgICAgICAoSlND
OjpKU0V4ZWN1dGFibGU6OnVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpKU0V4ZWN1dGFi
bGU6Om5lZWRzQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpFdmFs
RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9u
UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246OkpTRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjp+SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Om1hcmtDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENhbGxEYXRhKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6Y2FsbCk6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omxlbmd0
aEdldHRlcik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhdGEpOgor
ICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpleGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6anNFeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24pOgorCiAyMDA5LTA4LTIwICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsu
CkBAIC0xMDYsNyArMjIxLDcgQEAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCiAK
ICAgICAgICAgTnVtYmVyaW5nIG9mIGFyZ3VtZW50cyB0byBlbWl0R2V0SklUU3R1YkFyZy9lbWl0
UHV0SklUU3R1YkFyZyBpbmNvcnJlY3QKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4NTEzCisgICAgICAgIDxidWcgbG9zdCBpbiB0aGUgZ3JlYXQgYnVn
IGRpc2FzdGVyb29ueSBvZiAwOC8yMC8wOSE+CiAKICAgICAgICAgVGhlIGFyZ3VtZW50TnVtYmVy
IGFyZ3VtZW50IHRvIGVtaXRHZXRKSVRTdHViQXJnL2VtaXRQdXRKSVRTdHViQXJnIHNob3VsZCBt
YXRjaAogICAgICAgICB0aGUgYXJndW1lbnQgbnVtYmVyIHVzZWQgd2l0aGluIHRoZSBzdHViIGZ1
bmN0aW9ucyBpbiBKSVRTdHVicy5jcHAsIGJ1dCBpdCBkb2Vzbid0LgpJbmRleDogSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiA0NzYzNykKKysrIEphdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNDgsNyArMTI0
OCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wU3RhdGlzdGljcygpCiAjZW5kaWYKIH0KIAotQ29k
ZUJsb2NrOjpDb2RlQmxvY2soRXhlY3V0YWJsZUJhc2UqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5
cGUgY29kZVR5cGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1
bnNpZ25lZCBzb3VyY2VPZmZzZXQsIFN5bWJvbFRhYmxlKiBzeW1UYWIpCitDb2RlQmxvY2s6OkNv
ZGVCbG9jayhKU0V4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUgY29kZVR5cGUs
IFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNpZ25lZCBzb3Vy
Y2VPZmZzZXQsIFN5bWJvbFRhYmxlKiBzeW1UYWIpCiAgICAgOiBtX251bUNhbGxlZVJlZ2lzdGVy
cygwKQogICAgICwgbV9udW1WYXJzKDApCiAgICAgLCBtX251bVBhcmFtZXRlcnMoMCkKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiA0NzYzNykKKysrIEphdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNyAr
MjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEZh
c3RBbGxvY0Jhc2UgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgQ29kZUJsb2NrKEV4ZWN1dGFibGVCYXNlKiBvd25lckV4ZWN1dGFibGUsIENvZGVU
eXBlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwgdW5zaWduZWQgc291cmNlT2Zmc2V0LCBT
eW1ib2xUYWJsZSogc3ltYm9sVGFibGUpOworICAgICAgICBDb2RlQmxvY2soSlNFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIENvZGVUeXBlLCBQYXNzUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwg
dW5zaWduZWQgc291cmNlT2Zmc2V0LCBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUpOwogICAgIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q29kZUJsb2NrKCk7CiAKQEAgLTM2MSw3ICszNjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZVBvb2wqIGV4ZWN1dGFibGVQb29s
KCkgeyByZXR1cm4gb3duZXJFeGVjdXRhYmxlKCktPmdldEV4ZWN1dGFibGVQb29sKCk7IH0KICNl
bmRpZgogCi0gICAgICAgIEV4ZWN1dGFibGVCYXNlKiBvd25lckV4ZWN1dGFibGUoKSBjb25zdCB7
IHJldHVybiBtX293bmVyRXhlY3V0YWJsZTsgfQorICAgICAgICBKU0V4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlOyB9CiAKICAgICAg
ICAgdm9pZCBzZXRHbG9iYWxEYXRhKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkgeyBtX2dsb2Jh
bERhdGEgPSBnbG9iYWxEYXRhOyB9CiAKQEAgLTQ5Miw3ICs0OTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLnNldChuZXcgUmFyZURhdGEpOwogICAgICAg
ICB9CiAKLSAgICAgICAgRXhlY3V0YWJsZUJhc2UqIG1fb3duZXJFeGVjdXRhYmxlOworICAgICAg
ICBKU0V4ZWN1dGFibGUqIG1fb3duZXJFeGVjdXRhYmxlOwogICAgICAgICBKU0dsb2JhbERhdGEq
IG1fZ2xvYmFsRGF0YTsKIAogICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+IG1faW5zdHJ1Y3Rp
b25zOwpAQCAtNTYwLDcgKzU2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgR2xv
YmFsQ29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7CiAgICAgcHVibGljOgotICAgICAgICBH
bG9iYWxDb2RlQmxvY2soRXhlY3V0YWJsZUJhc2UqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUg
Y29kZVR5cGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBzb3VyY2VPZmZzZXQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgICAg
IEdsb2JhbENvZGVCbG9jayhKU0V4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgQ29kZVR5cGUg
Y29kZVR5cGUsIFBhc3NSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJjZVByb3ZpZGVyLCB1bnNp
Z25lZCBzb3VyY2VPZmZzZXQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAg
ICAgICA6IENvZGVCbG9jayhvd25lckV4ZWN1dGFibGUsIGNvZGVUeXBlLCBzb3VyY2VQcm92aWRl
ciwgc291cmNlT2Zmc2V0LCAmbV91bnNoYXJlZFN5bWJvbFRhYmxlKQogICAgICAgICAgICAgLCBt
X2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgICAgIHsKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNSAr
NDIsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsQ29kZUNhY2hlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFBhc3NSZWZQdHI8Q2FjaGVhYmxlRXZhbEV4ZWN1dGFibGU+IGdl
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIGV2YWxTb3VyY2UsIFNjb3BlQ2hhaW5O
b2RlKiBzY29wZUNoYWluLCBKU1ZhbHVlJiBleGNlcHRpb25WYWx1ZSkKKyAgICAgICAgUGFzc1Jl
ZlB0cjxFdmFsRXhlY3V0YWJsZT4gZ2V0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYg
ZXZhbFNvdXJjZSwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIEpTVmFsdWUmIGV4Y2VwdGlv
blZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBSZWZQdHI8Q2FjaGVhYmxlRXZhbEV4ZWN1
dGFibGU+IGV2YWxFeGVjdXRhYmxlOworICAgICAgICAgICAgUmVmUHRyPEV2YWxFeGVjdXRhYmxl
PiBldmFsRXhlY3V0YWJsZTsKIAogICAgICAgICAgICAgaWYgKGV2YWxTb3VyY2Uuc2l6ZSgpIDwg
bWF4Q2FjaGVhYmxlU291cmNlTGVuZ3RoICYmICgqc2NvcGVDaGFpbi0+YmVnaW4oKSktPmlzVmFy
aWFibGVPYmplY3QoKSkKICAgICAgICAgICAgICAgICBldmFsRXhlY3V0YWJsZSA9IG1fY2FjaGVN
YXAuZ2V0KGV2YWxTb3VyY2UucmVwKCkpOwogCiAgICAgICAgICAgICBpZiAoIWV2YWxFeGVjdXRh
YmxlKSB7Ci0gICAgICAgICAgICAgICAgZXZhbEV4ZWN1dGFibGUgPSBDYWNoZWFibGVFdmFsRXhl
Y3V0YWJsZTo6Y3JlYXRlKG1ha2VTb3VyY2UoZXZhbFNvdXJjZSkpOworICAgICAgICAgICAgICAg
IGV2YWxFeGVjdXRhYmxlID0gRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShtYWtlU291cmNlKGV2YWxT
b3VyY2UpKTsKICAgICAgICAgICAgICAgICBleGNlcHRpb25WYWx1ZSA9IGV2YWxFeGVjdXRhYmxl
LT5wYXJzZShleGVjKTsKICAgICAgICAgICAgICAgICBpZiAoZXhjZXB0aW9uVmFsdWUpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtNjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWNoZWFibGVTb3VyY2VMZW5ndGggPSAy
NTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4Q2FjaGVFbnRyaWVzID0gNjQ7CiAKLSAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5nOjpSZXA+LCBSZWZQdHI8Q2FjaGVh
YmxlRXZhbEV4ZWN1dGFibGU+ID4gRXZhbENhY2hlTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFVTdHJpbmc6OlJlcD4sIFJlZlB0cjxFdmFsRXhlY3V0YWJsZT4gPiBFdmFsQ2Fj
aGVNYXA7CiAgICAgICAgIEV2YWxDYWNoZU1hcCBtX2NhY2hlTWFwOwogICAgIH07CiAKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEoKICAgICAg
ICAgaWYgKGZ1bmN0aW9uLT5leGVjdXRhYmxlKCktPmlzSG9zdEZ1bmN0aW9uKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUg
PSBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAKICAgICAgICAgLy8gQ2hlY2sg
aWYgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgaW4gdGhlIHNldCAtIGlmIHNvLAogICAgICAgICAv
LyB3ZSd2ZSBhbHJlYWR5IHJldHJhbnNsYXRlZCBpdCwgbm90aGluZyB0byBkbyBoZXJlLgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FjaGVkQ2FsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaAkocmV2aXNpb24gNDc2Mzcp
CisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWNoZWRDYWxsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fZXhj
ZXB0aW9uKGV4Y2VwdGlvbikKICAgICAgICAgICAgICwgbV9nbG9iYWxPYmplY3RTY29wZShjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKS5keW5hbWljR2xvYmFsT2JqZWN0IDogZnVuY3Rpb24tPnNjb3Bl
KCkubm9kZSgpLT5nbG9iYWxPYmplY3QoKSkKICAgICAgICAgewotICAgICAgICAgICAgbV9jbG9z
dXJlID0gbV9pbnRlcnByZXRlci0+cHJlcGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmV4ZWN1
dGFibGUoKSwgY2FsbEZyYW1lLCBmdW5jdGlvbiwgYXJnQ291bnQsIGZ1bmN0aW9uLT5zY29wZSgp
Lm5vZGUoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9z
dEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgbV9jbG9zdXJlID0gbV9pbnRlcnByZXRlci0+cHJl
cGFyZUZvclJlcGVhdENhbGwoZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpLCBjYWxsRnJhbWUsIGZ1
bmN0aW9uLCBhcmdDb3VudCwgZnVuY3Rpb24tPnNjb3BlKCkubm9kZSgpLCBleGNlcHRpb24pOwog
ICAgICAgICAgICAgbV92YWxpZCA9ICEqZXhjZXB0aW9uOwogICAgICAgICB9CiAgICAgICAgIApJ
bmRleDogSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNp
b24gNDc2MzcpCisrKyBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6Y2FsbEV2CiAKICAgICBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbiA9IGNh
bGxGcmFtZS0+c2NvcGVDaGFpbigpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKLSAgICBSZWZQdHI8Q2FjaGVhYmxlRXZhbEV4ZWN1dGFibGU+IGV2
YWwgPSBjb2RlQmxvY2stPmV2YWxDb2RlQ2FjaGUoKS5nZXQoY2FsbEZyYW1lLCBwcm9ncmFtU291
cmNlLCBzY29wZUNoYWluLCBleGNlcHRpb25WYWx1ZSk7CisgICAgUmVmUHRyPEV2YWxFeGVjdXRh
YmxlPiBldmFsID0gY29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0KGNhbGxGcmFtZSwgcHJv
Z3JhbVNvdXJjZSwgc2NvcGVDaGFpbiwgZXhjZXB0aW9uVmFsdWUpOwogCiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAgIGlmIChldmFsKQpAQCAtMzA4Miw3ICszMDgyLDgg
QEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvblZhbHVlID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7
CiAgICAgICAgICAgICAgICAgZ290byB2bV90aHJvdzsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGludDMyX3QgZXhwZWN0ZWRQYXJhbXMgPSBjYWxsRnJhbWUtPmNhbGxlZSgpLT5leGVjdXRh
YmxlKCktPnBhcmFtZXRlckNvdW50KCk7CisgICAgICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+
Y2FsbGVlKCktPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgaW50MzJfdCBleHBlY3Rl
ZFBhcmFtcyA9IGNhbGxGcmFtZS0+Y2FsbGVlKCktPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJD
b3VudCgpOwogICAgICAgICAgICAgaW50MzJfdCBpbnBsYWNlQXJncyA9IG1pbihhcmdDb3VudCwg
ZXhwZWN0ZWRQYXJhbXMpOwogICAgICAgICAgICAgaW50MzJfdCBpID0gMDsKICAgICAgICAgICAg
IFJlZ2lzdGVyKiBhcmdTdG9yZSA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBhcmdzT2Zmc2V0
OwpJbmRleDogSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiA0NzYzNykKKysrIEphdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0ODAsOCArMTQ4
MCw4IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX0pTRnUKICNlbmRpZgog
CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWUuYXJnc1sw
XS5qc1ZhbHVlKCkpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0
aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgQVNTRVJUKCFleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlv
bigpKTsKKyAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAg
ICAgU2NvcGVDaGFpbk5vZGUqIGNhbGxEYXRhU2NvcGVDaGFpbiA9IGZ1bmN0aW9uLT5zY29wZSgp
Lm5vZGUoKTsKICAgICBleGVjdXRhYmxlLT5qaXRDb2RlKGNhbGxEYXRhU2NvcGVDaGFpbik7CiAK
QEAgLTE0OTQsNyArMTQ5NCw4IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKFZvaWRQdHJQYWlyLCBv
cF9jYWwKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmV4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0
RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKICAgICBpbnQgYXJnQ291bnQgPSBzdGFj
a0ZyYW1lLmFyZ3NbMl0uaW50MzIoKTsKIAogICAgIEFTU0VSVChhcmdDb3VudCAhPSBuZXdDb2Rl
QmxvY2stPm1fbnVtUGFyYW1ldGVycyk7CkBAIC0xNTM5LDEyICsxNTQwLDEyIEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV9sYXp5TGlua0MKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tf
RlJBTUUoc3RhY2tGcmFtZSk7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihz
dGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwogICAgIEpJVENvZGUmIGppdENvZGUgPSBl
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlKCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSAwOwogICAgIGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAg
ICAgY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmJ5dGVjb2RlKGNhbGxlZS0+c2NvcGUoKS5ub2Rl
KCkpOworICAgICAgICBjb2RlQmxvY2sgPSAmc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlY3V0YWJsZSktPmJ5dGVjb2RlKGNhbGxlZS0+c2NvcGUoKS5ub2RlKCkpOwogICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gJnN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jYWxsZXJG
cmFtZSgpLT5jb2RlQmxvY2soKS0+Z2V0Q2FsbExpbmtJbmZvKHN0YWNrRnJhbWUuYXJnc1sxXS5y
ZXR1cm5BZGRyZXNzKCkpOwogCiAgICAgaWYgKCFjYWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCkBA
IC0xNzE0LDggKzE3MTUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX2Nv
bnN0CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgSlNGdW5j
dGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVl
KCkpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvbnN0cnVjdG9yLT5l
eGVjdXRhYmxlKCk7Ci0gICAgaWYgKGV4ZWN1dGFibGUgJiYgZXhlY3V0YWJsZS0+aXNIb3N0RnVu
Y3Rpb24oKSkgeworICAgIGlmIChjb25zdHJ1Y3Rvci0+aXNIb3N0RnVuY3Rpb24oKSkgewogICAg
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgICAg
IHVuc2lnbmVkIHZQQ0luZGV4ID0gY29kZUJsb2NrLT5nZXRCeXRlY29kZUluZGV4KGNhbGxGcmFt
ZSwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CkBAIC0yMDQyLDcgKzIwNDIsNyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTihpbnQsIG9wX2xvYWRfdmFyYXJnCiAgICAgICAgICAgICBzdGFja0ZyYW1lLmds
b2JhbERhdGEtPmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUp
OwogICAgICAgICAgICAgVk1fVEhST1dfRVhDRVBUSU9OKCk7CiAgICAgICAgIH0KLSAgICAgICAg
aW50MzJfdCBleHBlY3RlZFBhcmFtcyA9IGNhbGxGcmFtZS0+Y2FsbGVlKCktPmV4ZWN1dGFibGUo
KS0+cGFyYW1ldGVyQ291bnQoKTsKKyAgICAgICAgaW50MzJfdCBleHBlY3RlZFBhcmFtcyA9IGNh
bGxGcmFtZS0+Y2FsbGVlKCktPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpOwogICAg
ICAgICBpbnQzMl90IGlucGxhY2VBcmdzID0gbWluKHByb3ZpZGVkUGFyYW1zLCBleHBlY3RlZFBh
cmFtcyk7CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlciogaW5wbGFjZUFyZ3NEc3QgPSBjYWxs
RnJhbWUtPnJlZ2lzdGVycygpICsgYXJnc09mZnNldDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlci5jcHAJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsOCArMTUzLDkgQEAgQ2FsbElk
ZW50aWZpZXIgUHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudAogCiBDYWxsSWRlbnRpZmllciBjcmVh
dGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlvbkltcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uKQogeworICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1
bmN0aW9uKCkpOwogICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUgPSBmdW5jdGlvbi0+Y2FsY3VsYXRl
ZERpc3BsYXlOYW1lKGdsb2JhbERhdGEpOwotICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihuYW1l
LmlzRW1wdHkoKSA/IEFub255bW91c0Z1bmN0aW9uIDogbmFtZSwgZnVuY3Rpb24tPmV4ZWN1dGFi
bGUoKS0+c291cmNlVVJMKCksIGZ1bmN0aW9uLT5leGVjdXRhYmxlKCktPmxpbmVObygpKTsKKyAg
ICByZXR1cm4gQ2FsbElkZW50aWZpZXIobmFtZS5pc0VtcHR5KCkgPyBBbm9ueW1vdXNGdW5jdGlv
biA6IG5hbWUsIGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+c291cmNlVVJMKCksIGZ1bmN0aW9u
LT5qc0V4ZWN1dGFibGUoKS0+bGluZU5vKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gNDc2MzcpCisrKyBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyAr
MTE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgICAgICBmdW5jdGlvbiA9IGNhbGxG
cmFtZS0+Y2FsbGVlKCk7CiAKLSAgICAgICAgaW50IG51bVBhcmFtZXRlcnMgPSBmdW5jdGlvbi0+
ZXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpOworICAgICAgICBpbnQgbnVtUGFyYW1ldGVy
cyA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKTsKICAgICAgICAg
YXJnYyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwogCiAgICAgICAgIGlmIChhcmdjIDw9
IG51bVBhcmFtZXRlcnMpCkBAIC0xMzgsNyArMTM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGludCBudW1Bcmd1bWVudHM7CiAgICAgICAgIGdldEFyZ3VtZW50c0RhdGEoY2FsbEZyYW1l
LCBjYWxsZWUsIGZpcnN0UGFyYW1ldGVySW5kZXgsIGFyZ3YsIG51bUFyZ3VtZW50cyk7CiAKLSAg
ICAgICAgZC0+bnVtUGFyYW1ldGVycyA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJD
b3VudCgpOworICAgICAgICBkLT5udW1QYXJhbWV0ZXJzID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUo
KS0+cGFyYW1ldGVyQ291bnQoKTsKICAgICAgICAgZC0+Zmlyc3RQYXJhbWV0ZXJJbmRleCA9IGZp
cnN0UGFyYW1ldGVySW5kZXg7CiAgICAgICAgIGQtPm51bUFyZ3VtZW50cyA9IG51bUFyZ3VtZW50
czsKIApAQCAtMTY5LDcgKzE2OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICA6IEpTT2Jq
ZWN0KGNhbGxGcmFtZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcmd1bWVudHNTdHJ1Y3R1cmUo
KSkKICAgICAgICAgLCBkKG5ldyBBcmd1bWVudHNEYXRhKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KCFjYWxsRnJhbWUtPmNhbGxlZSgpLT5leGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpOwor
ICAgICAgICBBU1NFUlQoIWNhbGxGcmFtZS0+Y2FsbGVlKCktPmpzRXhlY3V0YWJsZSgpLT5wYXJh
bWV0ZXJDb3VudCgpKTsKIAogICAgICAgICB1bnNpZ25lZCBudW1Bcmd1bWVudHMgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSAtIDE7CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gNDc2MzcpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxNCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorTmF0aXZlRXhlY3V0YWJsZTo6fk5hdGl2ZUV4ZWN1dGFibGUoKQoreworfQor
CitWUHRySGFja0V4ZWN1dGFibGU6On5WUHRySGFja0V4ZWN1dGFibGUoKQoreworfQorCiBFdmFs
RXhlY3V0YWJsZTo6fkV2YWxFeGVjdXRhYmxlKCkKIHsKICAgICBkZWxldGUgbV9ldmFsQ29kZUJs
b2NrOwpAQCAtMjAxLDE2ICsyMDksNiBAQCB2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cmVjb21w
aWxlKEV4ZWNTCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShKSVQpCi1GdW5jdGlvbkV4ZWN1dGFi
bGU6OkZ1bmN0aW9uRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMpCi0gICAgOiBtX2NvZGVCbG9j
aygwKQotICAgICwgbV9uYW1lKElkZW50aWZpZXIoZXhlYywgIjxuYXRpdmUgdGh1bms+IikpCi17
Ci0gICAgbV9qaXRDb2RlID0gSklUQ29kZShKSVRDb2RlOjpIb3N0RnVuY3Rpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLmppdFN0dWJzLmN0aU5hdGl2ZUNhbGxUaHVuaygpKSk7Ci0gICAgbV9udW1QYXJh
bWV0ZXJzID0gTlVNX1BBUkFNRVRFUlNfSVNfSE9TVDsKLX0KLSNlbmRpZgotCiB9OwogCiAKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiA0NzYzNykKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNyw0OSArMzgs
MjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKIAotICAg
IGNsYXNzIEV4ZWN1dGFibGVCYXNlIHsKKyAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPEV4ZWN1dGFibGVCYXNlPiB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
Ci0gICAgcHVibGljOgotICAgICAgICBlbnVtIE1vZGUgewotICAgICAgICAgICAgTm9KSVRDb2Rl
LAotICAgICAgICAgICAgSGFzSklUQ29kZSwKLSAgICAgICAgICAgIElzSG9zdAotICAgICAgICB9
OworCisgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9QQVJBTUVU
RVJTX0lTX0hPU1QgPSAwOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IE5VTV9QQVJBTUVURVJT
X05PVF9DT01QSUxFRCA9IC0xOwogICAgIAotICAgICAgICB2aXJ0dWFsIH5FeGVjdXRhYmxlQmFz
ZSgpIHt9Ci0KLSAgICAgICAgRXhlY3V0YWJsZUJhc2UoY29uc3QgU291cmNlQ29kZSYgc291cmNl
KQotICAgICAgICAgICAgOiBtX3NvdXJjZShzb3VyY2UpCi0gICAgICAgICAgICAsIG1fbnVtUGFy
YW1ldGVycyhOVU1fUEFSQU1FVEVSU19OT1RfQ09NUElMRUQpCisgICAgcHVibGljOgorICAgICAg
ICBFeGVjdXRhYmxlQmFzZShpbnQgbnVtUGFyYW1ldGVycykKKyAgICAgICAgICAgIDogbV9udW1Q
YXJhbWV0ZXJzKG51bVBhcmFtZXRlcnMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlOyB9Ci0gICAgICAg
IGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLT5zb3VyY2VJRCgpOyB9
Ci0gICAgICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9k
ZS0+c291cmNlVVJMKCk7IH0KLSAgICAgICAgaW50IGxpbmVObygpIGNvbnN0IHsgcmV0dXJuIG1f
bm9kZS0+bGluZU5vKCk7IH0KLSAgICAgICAgaW50IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4g
bV9ub2RlLT5sYXN0TGluZSgpOyB9Ci0KLSAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbm9kZS0+dXNlc0V2YWwoKTsgfQotICAgICAgICBib29sIHVzZXNBcmd1bWVudHMo
KSBjb25zdCB7IHJldHVybiBtX25vZGUtPnVzZXNBcmd1bWVudHMoKTsgfQotICAgICAgICBib29s
IG5lZWRzQWN0aXZhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+bmVlZHNBY3RpdmF0aW9u
KCk7IH0KKyAgICAgICAgdmlydHVhbCB+RXhlY3V0YWJsZUJhc2UoKSB7fQogCi0gICAgICAgIHZp
cnR1YWwgRXhjZXB0aW9uSW5mbyogcmVwYXJzZUV4Y2VwdGlvbkluZm8oSlNHbG9iYWxEYXRhKiwg
U2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKSA9IDA7CisgICAgICAgIGJvb2wgaXNIb3N0RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bVBhcmFtZXRlcnMgPT0gTlVNX1BBUkFNRVRFUlNf
SVNfSE9TVDsgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBSZWZQdHI8U2NvcGVOb2RlPiBt
X25vZGU7Ci0gICAgICAgIFNvdXJjZUNvZGUgbV9zb3VyY2U7CiAgICAgICAgIGludCBtX251bVBh
cmFtZXRlcnM7CiAKLSAgICBwcml2YXRlOgotICAgICAgICAvLyBGb3IgdXNlIG1ha2luZyBuYXRp
dmUgdGh1bmsuCi0gICAgICAgIGZyaWVuZCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7Ci0gICAg
ICAgIEV4ZWN1dGFibGVCYXNlKCkKLSAgICAgICAgewotICAgICAgICB9Ci0KICNpZiBFTkFCTEUo
SklUKQogICAgIHB1YmxpYzoKICAgICAgICAgSklUQ29kZSYgZ2VuZXJhdGVkSklUQ29kZSgpCkBA
IC05OCwxMCArNzYsNTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICB9OwogCi0gICAg
Y2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgeworICAgIGNsYXNz
IE5hdGl2ZUV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgeworICAgIHB1YmxpYzoK
KyAgICAgICAgTmF0aXZlRXhlY3V0YWJsZShFeGVjU3RhdGUqIGV4ZWMpCisgICAgICAgICAgICA6
IEV4ZWN1dGFibGVCYXNlKE5VTV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1faml0Q29kZSA9IEpJVENvZGUoSklUQ29kZTo6SG9zdEZ1bmN0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKS5qaXRTdHVicy5jdGlOYXRpdmVDYWxsVGh1bmsoKSkpOworICAgICAgICB9CisK
KyAgICAgICAgfk5hdGl2ZUV4ZWN1dGFibGUoKTsKKyAgICB9OworCisgICAgY2xhc3MgVlB0ckhh
Y2tFeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFZQdHJIYWNrRXhlY3V0YWJsZSgpCisgICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNlKE5V
TV9QQVJBTUVURVJTX0lTX0hPU1QpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIH5W
UHRySGFja0V4ZWN1dGFibGUoKTsKKyAgICB9OworCisgICAgY2xhc3MgSlNFeGVjdXRhYmxlIDog
cHVibGljIEV4ZWN1dGFibGVCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEpTRXhlY3V0YWJs
ZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgICAgICAgICA6IEV4ZWN1dGFibGVCYXNl
KE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKKyAgICAgICAgICAgICwgbV9zb3VyY2Uoc291
cmNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZTsgfQorICAgICAgICBpbnRwdHJfdCBzb3VyY2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+c291cmNlSUQoKTsgfQorICAgICAgICBjb25zdCBVU3Ry
aW5nJiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPnNvdXJjZVVSTCgpOyB9Cisg
ICAgICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX25vZGUtPmxpbmVObygpOyB9Cisg
ICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS0+bGFzdExpbmUoKTsg
fQorCisgICAgICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX25vZGUtPnVzZXNF
dmFsKCk7IH0KKyAgICAgICAgYm9vbCB1c2VzQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlLT51c2VzQXJndW1lbnRzKCk7IH0KKyAgICAgICAgYm9vbCBuZWVkc0FjdGl2YXRpb24oKSBj
b25zdCB7IHJldHVybiBtX25vZGUtPm5lZWRzQWN0aXZhdGlvbigpOyB9CisKKyAgICAgICAgdmly
dHVhbCBFeGNlcHRpb25JbmZvKiByZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0dsb2JhbERhdGEqLCBT
Y29wZUNoYWluTm9kZSosIENvZGVCbG9jayopID0gMDsKKworICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgU291cmNlQ29kZSBtX3NvdXJjZTsKKyAgICAgICAgUmVmUHRyPFNjb3BlTm9kZT4gbV9ub2Rl
OworICAgIH07CisKKyAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBKU0V4ZWN1dGFi
bGUgewogICAgIHB1YmxpYzoKICAgICAgICAgRXZhbEV4ZWN1dGFibGUoY29uc3QgU291cmNlQ29k
ZSYgc291cmNlKQotICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShzb3VyY2UpCisgICAgICAg
ICAgICA6IEpTRXhlY3V0YWJsZShzb3VyY2UpCiAgICAgICAgICAgICAsIG1fZXZhbENvZGVCbG9j
aygwKQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTExOSw2ICsxNDMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBFeGNlcHRpb25JbmZvKiByZXBhcnNlRXhjZXB0aW9uSW5mbyhKU0ds
b2JhbERhdGEqLCBTY29wZUNoYWluTm9kZSosIENvZGVCbG9jayopOwogCisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEV2YWxFeGVjdXRhYmxlPiBjcmVhdGUoY29uc3QgU291cmNlQ29kZSYgc291
cmNlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgRXZhbEV4ZWN1dGFibGUoc291cmNlKSk7IH0KKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIEV2YWxOb2RlKiBldmFsTm9kZSgpIHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEV2YWxOb2RlKj4obV9ub2RlLmdldCgpKTsgfQogCkBAIC0xNDAsMjEgKzE2NiwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgIH07CiAKLSAgICBjbGFzcyBDYWNoZWFibGVF
dmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBFdmFsRXhlY3V0YWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8
Q2FjaGVhYmxlRXZhbEV4ZWN1dGFibGU+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENhY2hlYWJsZUV2YWxFeGVjdXRhYmxlPiBjcmVhdGUoY29uc3QgU291cmNlQ29k
ZSYgc291cmNlKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ2FjaGVhYmxlRXZhbEV4ZWN1dGFibGUo
c291cmNlKSk7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIENhY2hlYWJsZUV2YWxFeGVjdXRh
YmxlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLSAgICAgICAgICAgIDogRXZhbEV4ZWN1dGFi
bGUoc291cmNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgY2xhc3MgUHJv
Z3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgeworICAgIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIDogcHVibGljIEpTRXhlY3V0YWJsZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBQcm9ncmFtRXhlY3V0YWJsZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgICAgICAg
ICA6IEV4ZWN1dGFibGVCYXNlKHNvdXJjZSkKKyAgICAgICAgICAgIDogSlNFeGVjdXRhYmxlKHNv
dXJjZSkKICAgICAgICAgICAgICwgbV9wcm9ncmFtQ29kZUJsb2NrKDApCiAgICAgICAgIHsKICAg
ICAgICAgfQpAQCAtMTk0LDExICsyMDksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAg
ICB9OwogCi0gICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIEV4ZWN1dGFibGVC
YXNlLCBwdWJsaWMgUmVmQ291bnRlZDxGdW5jdGlvbkV4ZWN1dGFibGU+IHsKKyAgICBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgSlNFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZShjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQotICAgICAgICAgICAg
OiBFeGVjdXRhYmxlQmFzZShib2R5LT5zb3VyY2UoKSkKKyAgICAgICAgICAgIDogSlNFeGVjdXRh
YmxlKGJvZHktPnNvdXJjZSgpKQogICAgICAgICAgICAgLCBtX2NvZGVCbG9jaygwKQogICAgICAg
ICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgICAgICwgbV9udW1WYXJpYWJsZXMoMCkKQEAg
LTIzMSw3ICsyNDYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc2l6ZV90IHZhcmlhYmxl
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX251bVZhcmlhYmxlczsgfQogICAgICAgICBVU3RyaW5n
IHBhcmFtU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gYm9keSgpLT5wYXJhbVN0cmluZygpOyB9CiAK
LSAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbnVtUGFyYW1l
dGVycyA9PSBOVU1fUEFSQU1FVEVSU19JU19IT1NUOyB9CiAgICAgICAgIGJvb2wgaXNHZW5lcmF0
ZWQoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2s7CkBA
IC0yNjEsMTcgKzI3NSwyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBt
X2ppdENvZGU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlv
bkV4ZWN1dGFibGU+IGNyZWF0ZU5hdGl2ZVRodW5rKEV4ZWNTdGF0ZSogZXhlYykKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGdW5jdGlvbkV4ZWN1dGFibGUoZXhl
YykpOwotICAgICAgICB9Ci0KICAgICBwcml2YXRlOgotICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUoRXhlY1N0YXRlKiBleGVjKTsKICAgICAgICAgdm9pZCBnZW5lcmF0ZUpJVENvZGUoU2NvcGVD
aGFpbk5vZGUqKTsKICNlbmRpZgogICAgIH07CiAKLX07CisgICAgaW5saW5lIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogSlNGdW5jdGlvbjo6anNFeGVjdXRhYmxlKCkgY29uc3QgeyBBU1NFUlQoIWlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkpOyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4obV9leGVjdXRhYmxlLmdldCgpKTsgfQorCisgICAgaW5saW5lIEpTRnVuY3Rpb24qIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6bWFrZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNGdW5jdGlvbihl
eGVjLCB0aGlzLCBzY29wZUNoYWluKTsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBKU0Z1bmN0
aW9uOjppc0hvc3RGdW5jdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9leGVj
dXRhYmxlKTsKKyAgICAgICAgcmV0dXJuIG1fZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKTsK
KyAgICB9CisKK30KIAogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAkocmV2aXNpb24gNDc2MzcpCisrKyBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYs
OCBAQCBKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUCiB7CiAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0cygmSlNGdW5jdGlvbjo6aW5mbykpIHsKICAgICAgICAgSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBhc0Z1bmN0aW9uKHRoaXNWYWx1ZSk7Ci0gICAgICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgICAg
IGlmICghZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICBpZiAoIWZ1bmN0
aW9uLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgICAgICAgICBVU3Ry
aW5nIHNvdXJjZVN0cmluZyA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnRvU3RyaW5nKCk7CiAgICAg
ICAgICAgICBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChzb3VyY2VTdHJpbmcpOwogICAgICAgICAg
ICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiICsgZnVuY3Rpb24tPm5hbWUoJmV4
ZWMtPmdsb2JhbERhdGEoKSkgKyAiKCIgKyBleGVjdXRhYmxlLT5wYXJhbVN0cmluZygpICsgIikg
IiArIHNvdXJjZVN0cmluZyk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDYgQEAgQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU0Z1bmN0aW9uKTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OmluZm8g
PSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uOjppbmZvLCAwLCAwIH07CiAKLWlubGlu
ZSBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9leGVjdXRhYmxlICYmIG1fZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKTsKLX0KLQogYm9v
bCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGlzSG9zdEZ1bmN0aW9uKCk7CkBAIC01NywxNCArNTIsMTYgQEAgYm9vbCBKU0Z1bmN0aW9u
Ojppc0hvc3RGdW5jdGlvbk5vbklubGluZQogCiBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSkKKyNpZiBF
TkFCTEUoSklUKQorICAgICwgbV9leGVjdXRhYmxlKGFkb3B0UmVmKG5ldyBWUHRySGFja0V4ZWN1
dGFibGUoKSkpCisjZW5kaWYKIHsKLSAgICBjbGVhclNjb3BlQ2hhaW4oKTsKIH0KIAogSlNGdW5j
dGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmMpCiAgICAgOiBCYXNlKCZleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSwgbmFt
ZSkKICNpZiBFTkFCTEUoSklUKQotICAgICwgbV9leGVjdXRhYmxlKEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y3JlYXRlTmF0aXZlVGh1bmsoZXhlYykpCisgICAgLCBtX2V4ZWN1dGFibGUoYWRvcHRSZWYo
bmV3IE5hdGl2ZUV4ZWN1dGFibGUoZXhlYykpKQogI2VuZGlmCiB7CiAjaWYgRU5BQkxFKEpJVCkK
QEAgLTkxLDggKzg4LDkgQEAgSlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24oKQogICAgIC8vIHRoaXMg
bWVtb3J5IGlzIGZyZWVkIGFuZCBtYXkgYmUgcmV1c2VkIChwb3RlbnRpYWxseSBmb3IgYW5vdGhl
ciwgZGlmZmVyZW50IEpTRnVuY3Rpb24pLgogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSkgewog
I2lmIEVOQUJMRShKSVRfT1BUSU1JWkVfQ0FMTCkKLSAgICAgICAgaWYgKG1fZXhlY3V0YWJsZSAm
JiBtX2V4ZWN1dGFibGUtPmlzR2VuZXJhdGVkKCkpCi0gICAgICAgICAgICBtX2V4ZWN1dGFibGUt
PmdlbmVyYXRlZEJ5dGVjb2RlKCkudW5saW5rQ2FsbGVycygpOworICAgICAgICBBU1NFUlQobV9l
eGVjdXRhYmxlKTsKKyAgICAgICAgaWYgKGpzRXhlY3V0YWJsZSgpLT5pc0dlbmVyYXRlZCgpKQor
ICAgICAgICAgICAganNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlKCkudW5saW5rQ2Fs
bGVycygpOwogI2VuZGlmCiAgICAgICAgIHNjb3BlQ2hhaW4oKS5+U2NvcGVDaGFpbigpOyAvLyBG
SVhNRTogRG9uJ3Qgd2UgbmVlZCB0byBkbyB0aGlzIGluIHRoZSBpbnRlcnByZXRlciB0b28/CiAg
ICAgfQpAQCAtMTAxLDkgKzk5LDEwIEBAIEpTRnVuY3Rpb246On5KU0Z1bmN0aW9uKCkKIHZvaWQg
SlNGdW5jdGlvbjo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogewogICAgIEJh
c2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwotICAgIG1fZXhlY3V0YWJsZS0+bWFya0FnZ3Jl
Z2F0ZShtYXJrU3RhY2spOwotICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSkKKyAgICBpZiAoIWlz
SG9zdEZ1bmN0aW9uKCkpIHsKKyAgICAgICAganNFeGVjdXRhYmxlKCktPm1hcmtBZ2dyZWdhdGUo
bWFya1N0YWNrKTsKICAgICAgICAgc2NvcGVDaGFpbigpLm1hcmtBZ2dyZWdhdGUobWFya1N0YWNr
KTsKKyAgICB9CiB9CiAKIENhbGxUeXBlIEpTRnVuY3Rpb246OmdldENhbGxEYXRhKENhbGxEYXRh
JiBjYWxsRGF0YSkKQEAgLTExMiw3ICsxMTEsNyBAQCBDYWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRD
YWxsRGF0YShDYWxsRGF0CiAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IG5hdGl2
ZUZ1bmN0aW9uKCk7CiAgICAgICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiAgICAgfQotICAgIGNh
bGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZSA9IG1fZXhlY3V0YWJsZS5nZXQoKTsKKyAgICBj
YWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUgPSBqc0V4ZWN1dGFibGUoKTsKICAgICBjYWxs
RGF0YS5qcy5zY29wZUNoYWluID0gc2NvcGVDaGFpbigpLm5vZGUoKTsKICAgICByZXR1cm4gQ2Fs
bFR5cGVKUzsKIH0KQEAgLTEyMCw3ICsxMTksNyBAQCBDYWxsVHlwZSBKU0Z1bmN0aW9uOjpnZXRD
YWxsRGF0YShDYWxsRGF0CiBKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGwoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBBU1NFUlQo
IWlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5leGVj
dXRlKG1fZXhlY3V0YWJsZS5nZXQoKSwgZXhlYywgdGhpcywgdGhpc1ZhbHVlLnRvVGhpc09iamVj
dChleGVjKSwgYXJncywgc2NvcGVDaGFpbigpLm5vZGUoKSwgZXhlYy0+ZXhjZXB0aW9uU2xvdCgp
KTsKKyAgICByZXR1cm4gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShqc0V4ZWN1dGFibGUo
KSwgZXhlYywgdGhpcywgdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKSwgYXJncywgc2NvcGVD
aGFpbigpLm5vZGUoKSwgZXhlYy0+ZXhjZXB0aW9uU2xvdCgpKTsKIH0KIAogSlNWYWx1ZSBKU0Z1
bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMTQxLDcgKzE0MCw3IEBAIEpTVmFsdWUg
SlNGdW5jdGlvbjo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGEKIHsKICAgICBKU0Z1bmN0aW9uKiB0aGlz
T2JqID0gYXNGdW5jdGlvbihzbG90LnNsb3RCYXNlKCkpOwogICAgIEFTU0VSVCghdGhpc09iai0+
aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHRoaXNPYmotPm1f
ZXhlY3V0YWJsZS0+cGFyYW1ldGVyQ291bnQoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMs
IHRoaXNPYmotPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKTsKIH0KIAogYm9vbCBK
U0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTIwNSw3ICsyMDQs
NyBAQCBDb25zdHJ1Y3RUeXBlIEpTRnVuY3Rpb246OmdldENvbnN0cnVjdERhCiB7CiAgICAgaWYg
KGlzSG9zdEZ1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKLSAg
ICBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZSA9IG1fZXhlY3V0YWJsZS5nZXQo
KTsKKyAgICBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZSA9IGpzRXhlY3V0YWJs
ZSgpOwogICAgIGNvbnN0cnVjdERhdGEuanMuc2NvcGVDaGFpbiA9IHNjb3BlQ2hhaW4oKS5ub2Rl
KCk7CiAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVKUzsKIH0KQEAgLTIyMSw3ICsyMjAsNyBAQCBK
U09iamVjdCogSlNGdW5jdGlvbjo6Y29uc3RydWN0KEV4ZWNTdGF0CiAgICAgICAgIHN0cnVjdHVy
ZSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsK
ICAgICBKU09iamVjdCogdGhpc09iaiA9IG5ldyAoZXhlYykgSlNPYmplY3Qoc3RydWN0dXJlKTsK
IAotICAgIEpTVmFsdWUgcmVzdWx0ID0gZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShtX2V4
ZWN1dGFibGUuZ2V0KCksIGV4ZWMsIHRoaXMsIHRoaXNPYmosIGFyZ3MsIHNjb3BlQ2hhaW4oKS5u
b2RlKCksIGV4ZWMtPmV4Y2VwdGlvblNsb3QoKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBleGVj
LT5pbnRlcnByZXRlcigpLT5leGVjdXRlKGpzRXhlY3V0YWJsZSgpLCBleGVjLCB0aGlzLCB0aGlz
T2JqLCBhcmdzLCBzY29wZUNoYWluKCkubm9kZSgpLCBleGVjLT5leGNlcHRpb25TbG90KCkpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSB8fCAhcmVzdWx0LmlzT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiB0aGlzT2JqOwogICAgIHJldHVybiBhc09iamVjdChyZXN1bHQpOwpJbmRleDog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDQ3NjM3KQorKysgSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKICNpZm5kZWYgSlNGdW5jdGlvbl9oCiAjZGVmaW5lIEpTRnVuY3Rpb25faAogCi0jaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgorLy8jaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zMiw2ICszMiw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNz
IEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBFeGVj
dXRhYmxlQmFzZTsKKyAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAKICAgICBjbGFzcyBK
U0Z1bmN0aW9uIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwpAQCAtNTAsNyArNTIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
c2V0U2NvcGUoY29uc3QgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbikgeyBzZXRTY29wZUNoYWluKHNj
b3BlQ2hhaW4pOyB9CiAgICAgICAgIFNjb3BlQ2hhaW4mIHNjb3BlKCkgeyByZXR1cm4gc2NvcGVD
aGFpbigpOyB9CiAKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9CisgICAgICAgIEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leGVjdXRhYmxlLmdldCgpOyB9CisKKyAg
ICAgICAgLy8gVG8gY2FsbCBlaXRoZXIgb2YgdGhlc2UgbWV0aG9kcyBpbmNsdWRlIEV4ZWN1dGFi
bGUuaAorICAgICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbigpIGNvbnN0OworICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGpzRXhlY3V0YWJsZSgpIGNvbnN0OwogCiAgICAgICAgIHN0
YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCkBAIC03MCw3ICs3Niw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIEpTRnVuY3Rpb24oUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+KTsKIAotICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uKCkgY29u
c3Q7CiAgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTg1LDcgKzkwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGNhbGxlckdldHRlcihFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBKU1Zh
bHVlIGxlbmd0aEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90Jik7CiAKLSAgICAgICAgUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV9leGVj
dXRhYmxlOworICAgICAgICBSZWZQdHI8RXhlY3V0YWJsZUJhc2U+IG1fZXhlY3V0YWJsZTsKICAg
ICAgICAgU2NvcGVDaGFpbiYgc2NvcGVDaGFpbigpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVCghaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CkBAIC0xMjEsMTEgKzEyNiw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGFz
T2JqZWN0KHZhbHVlKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTRnVuY3Rpb24qIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6bWFrZShFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0
aGlzLCBzY29wZUNoYWluKTsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gSlNGdW5jdGlvbl9oCg==
</data>
<flag name="review"
          id="19429"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>