<?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>188500</bug_id>
          
          <creation_ts>2018-08-13 00:24:29 -0700</creation_ts>
          <short_desc>Use OptionSet more in editing code</short_desc>
          <delta_ts>2018-08-13 08:30:21 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1449584</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 00:24:29 -0700</bug_when>
    <thetext>More type safety</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449586</commentid>
    <comment_count>1</comment_count>
      <attachid>346999</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 00:37:42 -0700</bug_when>
    <thetext>Created attachment 346999
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449595</commentid>
    <comment_count>2</comment_count>
      <attachid>347003</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 02:33:40 -0700</bug_when>
    <thetext>Created attachment 347003
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449597</commentid>
    <comment_count>3</comment_count>
      <attachid>347004</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 02:52:18 -0700</bug_when>
    <thetext>Created attachment 347004
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449607</commentid>
    <comment_count>4</comment_count>
      <attachid>347008</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 03:44:08 -0700</bug_when>
    <thetext>Created attachment 347008
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449612</commentid>
    <comment_count>5</comment_count>
      <attachid>347009</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-13 04:10:56 -0700</bug_when>
    <thetext>Created attachment 347009
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449639</commentid>
    <comment_count>6</comment_count>
      <attachid>347009</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 08:29:30 -0700</bug_when>
    <thetext>Comment on attachment 347009
patch

Clearing flags on attachment: 347009

Committed r234801: &lt;https://trac.webkit.org/changeset/234801&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449640</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 08:29:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449641</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-13 08:30:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/43233710&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346999</attachid>
            <date>2018-08-13 00:37:42 -0700</date>
            <delta_ts>2018-08-13 02:33:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-editor-6.patch</filename>
            <type>text/plain</type>
            <size>24689</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTA4LTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGluIGVk
aXRpbmcgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg4NTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVHlwZXNhZmUgZmxhZ3MuCisKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFy
YWdyYXBocyk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpzZWxlY3RDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFy
eVNlbGVjdGlvbkNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW92ZVdpdGhvdXRWYWxpZGF0aW9u
VG8pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbldpdGhv
dXRVcGRhdGluZ0FwcGVhcmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2Vs
ZWN0ZWRSYW5nZSk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKToK
KyAgICAgICAgKiBlZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vdmVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5n
L1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZCk6CisgICAgICAgICogZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZSk6CisgICAgICAgICogZWRpdGluZy9TZXRTZWxlY3Rp
b25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldFNlbGVjdGlvbkNvbW1hbmQ6OlNl
dFNlbGVjdGlvbkNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFu
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6U2V0U2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKToKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKToKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEluZGljYXRvcjo6Y3JlYXRlV2l0aFJhbmdlKToK
KwogMjAxOC0wOC0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAg
ICBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5TdG9yYWdlIGF0IFdlYkNvcmU6OklEQlNl
cnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNvbm5lY3Rpb25DbG9zZWRGcm9tQ2xpZW50KFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lv
biAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaAogCiAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24oZGVzdGluYXRpb24sIG9yaWdpbmFsSXNEaXJlY3Rpb25hbCkpOwogICAgIEFT
U0VSVChlbmRpbmdTZWxlY3Rpb24oKS5pc0NhcmV0T3JSYW5nZSgpKTsKLSAgICBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbnMgb3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNb3Zp
bmdQYXJhZ3JhcGg7CisgICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21t
YW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxh
Y2VtZW50LCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TW92aW5nUGFyYWdyYXBoIH07CiAgICAg
aWYgKCFwcmVzZXJ2ZVN0eWxlKQogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpNYXRjaFN0eWxlOwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGTW92ZShmcmFnbWVudCksIG9w
dGlvbnMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDIzNDc5
MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTkwLDcgKzE5MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1l
c3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKLVRlbXBvcmFyeVNlbGVjdGlv
bkNoYW5nZTo6VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKEZyYW1lJiBmcmFtZSwgc3RkOjpvcHRp
b25hbDxWaXNpYmxlU2VsZWN0aW9uPiB0ZW1wb3JhcnlTZWxlY3Rpb24sIFRlbXBvcmFyeVNlbGVj
dGlvbk9wdGlvbnMgb3B0aW9ucykKK1RlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZTo6VGVtcG9yYXJ5
U2VsZWN0aW9uQ2hhbmdlKEZyYW1lJiBmcmFtZSwgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0
aW9uPiB0ZW1wb3JhcnlTZWxlY3Rpb24sIE9wdGlvblNldDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRp
b24+IG9wdGlvbnMpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9vcHRpb25zKG9wdGlv
bnMpCiAgICAgLCBtX3dhc0lnbm9yaW5nU2VsZWN0aW9uQ2hhbmdlcyhmcmFtZS5lZGl0b3IoKS5p
Z25vcmVTZWxlY3Rpb25DaGFuZ2VzKCkpCkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBFZGl0b3I6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbgogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nl
c3NpYmlsaXR5RW5hYmxlZCgpICYmIGVkaXRpbmdBY3Rpb24gPT0gRWRpdEFjdGlvblBhc3RlKQog
ICAgICAgICByZXBsYWNlZFRleHQgPSBBY2Nlc3NpYmlsaXR5UmVwbGFjZWRUZXh0KHNlbGVjdGlv
bik7CiAKLSAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbnMgb3B0aW9u
cyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB8IFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpTYW5pdGl6ZUZyYWdtZW50OworICAgIE9wdGlvblNldDxSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbj4gb3B0aW9ucyB7IFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpQcmV2ZW50TmVzdGluZywgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNhbml0aXpl
RnJhZ21lbnQgfTsKICAgICBpZiAoc2VsZWN0UmVwbGFjZW1lbnQpCiAgICAgICAgIG9wdGlvbnMg
fD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50OwogICAgIGlmIChz
bWFydFJlcGxhY2UpCkBAIC0xMDczLDcgKzEwNzMsOSBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVk
aXRpbmcoQ29tcG9zaXRlRWRpCiAKICAgICBpZiAoY29tbWFuZC5pc1RvcExldmVsQ29tbWFuZCgp
KSB7CiAgICAgICAgIC8vIERvbid0IGNsZWFyIHRoZSB0eXBpbmcgc3R5bGUgd2l0aCB0aGlzIHNl
bGVjdGlvbiBjaGFuZ2UuIFdlIGRvIHRob3NlIHRoaW5ncyBlbHNld2hlcmUgaWYgbmVjZXNzYXJ5
LgotICAgICAgICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zID0g
Y29tbWFuZC5pc0RpY3RhdGlvbkNvbW1hbmQoKSA/IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25U
cmlnZ2VyZWQgOiAwOworICAgICAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVj
dGlvbk9wdGlvbj4gb3B0aW9uczsKKyAgICAgICAgaWYgKGNvbW1hbmQuaXNEaWN0YXRpb25Db21t
YW5kKCkpCisgICAgICAgICAgICBvcHRpb25zIHw9IEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25U
cmlnZ2VyZWQ7CiAKICAgICAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVj
dGlvbiwgb3B0aW9ucyk7CiAgICAgfQpAQCAtMTc4MSw3ICsxNzgzLDcgQEAgdm9pZCBFZGl0b3I6
OnNlbGVjdENvbXBvc2l0aW9uKCkKICAgICAvLyBTZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1NzgxPgogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uOwog
ICAgIHNlbGVjdGlvbi5zZXRXaXRob3V0VmFsaWRhdGlvbihyYW5nZS0+c3RhcnRQb3NpdGlvbigp
LCByYW5nZS0+ZW5kUG9zaXRpb24oKSk7Ci0gICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24oc2VsZWN0aW9uLCAwKTsKKyAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihzZWxlY3Rpb24sIHsgfSk7CiB9CiAKIHZvaWQgRWRpdG9yOjpjb25maXJtQ29tcG9zaXRpb24o
KQpAQCAtMzEwNyw3ICszMTA5LDcgQEAgdm9pZCBFZGl0b3I6OmRpc21pc3NDb3JyZWN0aW9uUGFu
ZWxBc0lnbgogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+ZGlzbWlzcyhSZWFzb25G
b3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0SWdub3JlZCk7CiB9CiAKLXZvaWQgRWRpdG9yOjpj
aGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2Vs
ZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQordm9p
ZCBFZGl0b3I6OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBuZXdTZWxlY3Rpb24sIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9u
T3B0aW9uPiBvcHRpb25zKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGlvbihtX2ZyYW1lKTsK
IApAQCAtMzQ3MCw3ICszNDcyLDcgQEAgdm9pZCBFZGl0b3I6OnNlbGVjdGlvbldpbGxDaGFuZ2Uo
KQogfQogI2VuZGlmCiAKLXZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9u
cyBvcHRpb25zKQordm9pZCBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYsIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9u
T3B0aW9uPiBvcHRpb25zKQogewogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogU2hv
dWxkIHN1cHByZXNzIHNlbGVjdGlvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBkdXJpbmcgYSBjb21w
b3NpdGlvbiBjaGFuZ2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzM4ODMwPiAKQEAgLTM0OTIsOSAr
MzQ5NCw4IEBAIHZvaWQgRWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGMKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gRG9uJ3QgY2hlY2sgc3BlbGxpbmcgYW5kIGdyYW1tYXIgaWYg
dGhlIGNoYW5nZSBvZiBzZWxlY3Rpb24gaXMgdHJpZ2dlcmVkIGJ5IHNwZWxsaW5nIGNvcnJlY3Rp
b24gaXRzZWxmLgotICAgIG1fZWRpdG9yVUlVcGRhdGVUaW1lclNob3VsZENoZWNrU3BlbGxpbmdB
bmRHcmFtbWFyID0gb3B0aW9ucyAmIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGluZwotICAgICAg
ICAmJiAhKG9wdGlvbnMgJiBGcmFtZVNlbGVjdGlvbjo6U3BlbGxDb3JyZWN0aW9uVHJpZ2dlcmVk
KTsKLSAgICBtX2VkaXRvclVJVXBkYXRlVGltZXJXYXNUcmlnZ2VyZWRCeURpY3RhdGlvbiA9IG9w
dGlvbnMgJiBGcmFtZVNlbGVjdGlvbjo6RGljdGF0aW9uVHJpZ2dlcmVkOworICAgIG1fZWRpdG9y
VUlVcGRhdGVUaW1lclNob3VsZENoZWNrU3BlbGxpbmdBbmRHcmFtbWFyID0gb3B0aW9ucy5jb250
YWlucyhGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcpICYmICFvcHRpb25zLmNvbnRhaW5zKEZy
YW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOworICAgIG1fZWRpdG9yVUlV
cGRhdGVUaW1lcldhc1RyaWdnZXJlZEJ5RGljdGF0aW9uID0gb3B0aW9ucy5jb250YWlucyhGcmFt
ZVNlbGVjdGlvbjo6RGljdGF0aW9uVHJpZ2dlcmVkKTsKICAgICBzY2hlZHVsZUVkaXRvclVJVXBk
YXRlKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNpb24gMjM0Nzky
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
OTksOSArOTksNiBAQCBzdHJ1Y3QgQXR0YWNobWVudERpc3BsYXlPcHRpb25zOwogI2VuZGlmCiAK
IGVudW0gVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uIDogdWludDhfdCB7Ci0gICAgLy8gQnkgZGVm
YXVsdCwgbm8gYWRkaXRpb25hbCBvcHRpb25zIGFyZSBlbmFibGVkLgotICAgIFRlbXBvcmFyeVNl
bGVjdGlvbk9wdGlvbkRlZmF1bHQgPSAwLAotCiAgICAgLy8gU2Nyb2xsIHRvIHJldmVhbCB0aGUg
c2VsZWN0aW9uLgogICAgIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvblJldmVhbFNlbGVjdGlvbiA9
IDEgPDwgMCwKIApAQCAtMTEyLDE2ICsxMDksMTQgQEAgZW51bSBUZW1wb3JhcnlTZWxlY3Rpb25P
cHRpb24gOiB1aW50OF90IAogICAgIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbkVuYWJsZUFwcGVh
cmFuY2VVcGRhdGVzID0gMSA8PCAyCiB9OwogCi11c2luZyBUZW1wb3JhcnlTZWxlY3Rpb25PcHRp
b25zID0gdWludDhfdDsKLQogY2xhc3MgVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlIHsKIHB1Ymxp
YzoKLSAgICBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmLCBzdGQ6Om9wdGlvbmFsPFZp
c2libGVTZWxlY3Rpb24+ID0gc3RkOjpudWxsb3B0LCBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25z
ID0gVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uRGVmYXVsdCk7CisgICAgVGVtcG9yYXJ5U2VsZWN0
aW9uQ2hhbmdlKEZyYW1lJiwgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiA9IHN0ZDo6
bnVsbG9wdCwgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gPSB7IH0pOwogICAg
IH5UZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoKTsKIAogcHJpdmF0ZToKICAgICBSZWY8RnJhbWU+
IG1fZnJhbWU7Ci0gICAgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyBtX29wdGlvbnM7CisgICAg
T3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gbV9vcHRpb25zOwogICAgIGJvb2wg
bV93YXNJZ25vcmluZ1NlbGVjdGlvbkNoYW5nZXM7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJv
b2wgbV9hcHBlYXJhbmNlVXBkYXRlc1dlcmVFbmFibGVkOwpAQCAtNDE0LDcgKzQwOSw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRSZWN0IGZpcnN0UmVjdEZvclJhbmdlKFJhbmdl
KikgY29uc3Q7CiAKICAgICB2b2lkIHNlbGVjdGlvbldpbGxDaGFuZ2UoKTsKLSAgICB2b2lkIHJl
c3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0
aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyk7CisgICAgdm9pZCByZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlv
biwgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb24+KTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVkaXRvclVJTm93SWZTY2hlZHVsZWQoKTsKICAgICBi
b29sIHNob3VsZENoYW5nZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxl
Y3Rpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRUFmZmluaXR5LCBi
b29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBj
b3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIFJhbmdlKiwgRmluZE9wdGlvbnMsIHVu
c2lnbmVkIGxpbWl0LCBib29sIG1hcmtNYXRjaGVzLCBWZWN0b3I8UmVmUHRyPFJhbmdlPj4qKTsK
QEAgLTU0MSw3ICs1MzYsNyBAQCBwcml2YXRlOgogICAgIGVudW0gU2V0Q29tcG9zaXRpb25Nb2Rl
IHsgQ29uZmlybUNvbXBvc2l0aW9uLCBDYW5jZWxDb21wb3NpdGlvbiB9OwogICAgIHZvaWQgc2V0
Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgU2V0Q29tcG9zaXRpb25Nb2RlKTsKIAotICAgIHZv
aWQgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5l
d1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMpOworICAgIHZv
aWQgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5l
d1NlbGVjdGlvbiwgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb24+
KTsKIAogICAgIGVudW0gRWRpdG9yQWN0aW9uU3BlY2lmaWVyIHsgQ3V0QWN0aW9uLCBDb3B5QWN0
aW9uIH07CiAgICAgdm9pZCBwZXJmb3JtQ3V0T3JDb3B5KEVkaXRvckFjdGlvblNwZWNpZmllcik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNp
b24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpt
b3ZlV2l0aG91dFZhbGlkYXRpCiAgICAgbmV3U2VsZWN0aW9uLnNldFdpdGhvdXRWYWxpZGF0aW9u
KGJhc2UsIGV4dGVudCk7CiAgICAgbmV3U2VsZWN0aW9uLnNldElzRGlyZWN0aW9uYWwoc2VsZWN0
aW9uSGFzRGlyZWN0aW9uKTsKICAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBuZXdJbnRlbnQg
PSBpbnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtub3duID8gQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhUZXh0
U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0
U2VsZWN0aW9uR3JhbnVsYXJpdHlVbmtub3duLCBmYWxzZSB9KSA6IGludGVudDsKLSAgICBTZXRT
ZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMgPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwor
ICAgIGF1dG8gb3B0aW9ucyA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCk7CiAgICAgaWYg
KCFzaG91bGRTZXRGb2N1cykKICAgICAgICAgb3B0aW9ucyB8PSBEb05vdFNldEZvY3VzOwogICAg
IHN3aXRjaCAocmV2ZWFsTW9kZSkgewpAQCAtMjkxLDEwICsyOTEsMTAgQEAgdm9pZCBGcmFtZVNl
bGVjdGlvbjo6c2V0U2VsZWN0aW9uQnlNb3VzZQogICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rp
b24sIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCBGaXJlU2VsZWN0RXZlbnQsIGludGVu
dCwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBncmFudWxhcml0eSk7CiB9CiAKLWJvb2wg
RnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uUG9zc2libHlXaXRob3V0RGlyZWN0aW9u
LCBTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMsIEN1cnNvckFsaWduT25TY3JvbGwgYWxpZ24s
IFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKK2Jvb2wgRnJhbWVTZWxlY3Rpb246OnNldFNl
bGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
bmV3U2VsZWN0aW9uUG9zc2libHlXaXRob3V0RGlyZWN0aW9uLCBPcHRpb25TZXQ8U2V0U2VsZWN0
aW9uT3B0aW9uPiBvcHRpb25zLCBDdXJzb3JBbGlnbk9uU2Nyb2xsIGFsaWduLCBUZXh0R3JhbnVs
YXJpdHkgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgYm9vbCBjbG9zZVR5cGluZyA9IG9wdGlvbnMgJiBD
bG9zZVR5cGluZzsKLSAgICBib29sIHNob3VsZENsZWFyVHlwaW5nU3R5bGUgPSBvcHRpb25zICYg
Q2xlYXJUeXBpbmdTdHlsZTsKKyAgICBib29sIGNsb3NlVHlwaW5nID0gb3B0aW9ucy5jb250YWlu
cyhDbG9zZVR5cGluZyk7CisgICAgYm9vbCBzaG91bGRDbGVhclR5cGluZ1N0eWxlID0gb3B0aW9u
cy5jb250YWlucyhDbGVhclR5cGluZ1N0eWxlKTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3
U2VsZWN0aW9uID0gbmV3U2VsZWN0aW9uUG9zc2libHlXaXRob3V0RGlyZWN0aW9uOwogICAgIGlm
IChzaG91bGRBbHdheXNVc2VEaXJlY3Rpb25hbFNlbGVjdGlvbihtX2ZyYW1lKSkKQEAgLTMzOCw3
ICszMzgsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0CiAKICAg
ICAvLyBTZWxlY3Rpb24gb2Zmc2V0cyBzaG91bGQgaW5jcmVhc2Ugd2hlbiBMRiBpcyBpbnNlcnRl
ZCBiZWZvcmUgdGhlIGNhcmV0IGluIEluc2VydExpbmVCcmVha0NvbW1hbmQuIFNlZSA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvNTYwNjE+LgogICAgIGlmIChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dCogdGV4dENvbnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2wobmV3U2VsZWN0aW9uLnN0
YXJ0KCkpKQotICAgICAgICB0ZXh0Q29udHJvbC0+c2VsZWN0aW9uQ2hhbmdlZChvcHRpb25zICYg
RmlyZVNlbGVjdEV2ZW50KTsKKyAgICAgICAgdGV4dENvbnRyb2wtPnNlbGVjdGlvbkNoYW5nZWQo
b3B0aW9ucy5jb250YWlucyhGaXJlU2VsZWN0RXZlbnQpKTsKIAogICAgIGlmICghZGlkTXV0YXRl
U2VsZWN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTgsNyArMzU4LDcgQEAgYm9v
bCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uV2l0aG91dAogICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uLCBTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMsIEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50IGludGVudCwgQ3Vyc29yQWxpZ25PblNjcm9sbCBhbGlnbiwgVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5KQordm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9w
dGlvbj4gb3B0aW9ucywgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50LCBDdXJzb3JBbGln
bk9uU2Nyb2xsIGFsaWduLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCiB7CiAgICAgUmVm
UHRyPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBpZiAoIXNldFNlbGVjdGlv
bldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2Uoc2VsZWN0aW9uLCBvcHRpb25zLCBhbGlnbiwgZ3Jh
bnVsYXJpdHkpKQpAQCAtMTk5MywxNSArMTk5MywyMiBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3RlZFJhbmdlKFJhCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCisgICAg
T3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gc2VsZWN0aW9uT3B0aW9ucyB7ICBDbGVhclR5
cGluZ1N0eWxlIH07CisgICAgaWYgKGNsb3NlVHlwaW5nKQorICAgICAgICBzZWxlY3Rpb25PcHRp
b25zIHw9IENsb3NlVHlwaW5nOworCiAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdn
ZXJlZCkgewogICAgICAgICBGcmFtZVNlbGVjdGlvbiB0cmlhbEZyYW1lU2VsZWN0aW9uOwotICAg
ICAgICB0cmlhbEZyYW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIENsZWFy
VHlwaW5nU3R5bGUgfCAoY2xvc2VUeXBpbmcgPyBDbG9zZVR5cGluZyA6IDApKTsKKworICAgICAg
ICB0cmlhbEZyYW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIHNlbGVjdGlv
bk9wdGlvbnMpOwogCiAgICAgICAgIGlmICghc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKHRyaWFsRnJh
bWVTZWxlY3Rpb24uc2VsZWN0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHNlbGVjdGlvbk9wdGlvbnMgfD0gSXNVc2VyVHJpZ2dlcmVkOwogICAgIH0KIAotICAg
IHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIENsZWFyVHlwaW5nU3R5bGUgfCAoY2xvc2VUeXBp
bmcgPyBDbG9zZVR5cGluZyA6IDApIHwgKHVzZXJUcmlnZ2VyZWQgPT0gVXNlclRyaWdnZXJlZCA/
IElzVXNlclRyaWdnZXJlZCA6IDApKTsKKyAgICBzZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBz
ZWxlY3Rpb25PcHRpb25zKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAkocmV2aXNpb24gMjM0NzkyKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjks
MTAgKzEyOSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIFJldmVhbFNlbGVjdGlvbiA9IDEgPDwgNywK
ICAgICAgICAgUmV2ZWFsU2VsZWN0aW9uVXBUb01haW5GcmFtZSA9IDEgPDwgOCwKICAgICB9Owot
ICAgIHR5cGVkZWYgdW5zaWduZWQgU2V0U2VsZWN0aW9uT3B0aW9uczsgLy8gVW5pb24gb2YgdmFs
dWVzIGluIFNldFNlbGVjdGlvbk9wdGlvbiBhbmQgRVVzZXJUcmlnZ2VyZWQKLSAgICBzdGF0aWMg
aW5saW5lIFNldFNlbGVjdGlvbk9wdGlvbnMgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoRVVz
ZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiBkZWZhdWx0U2V0U2VsZWN0
aW9uT3B0aW9ucyhFVXNlclRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJl
ZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBDbG9zZVR5cGluZyB8IENsZWFyVHlwaW5nU3R5bGUg
fCAodXNlclRyaWdnZXJlZCA/IChSZXZlYWxTZWxlY3Rpb24gfCBGaXJlU2VsZWN0RXZlbnQgfCBJ
c1VzZXJUcmlnZ2VyZWQpIDogMCk7CisgICAgICAgIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRp
b24+IG9wdGlvbnMgeyBDbG9zZVR5cGluZywgQ2xlYXJUeXBpbmdTdHlsZSB9OworICAgICAgICBp
ZiAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dlcmVkKQorICAgICAgICAgICAgb3B0aW9ucyB8
PSB7IFJldmVhbFNlbGVjdGlvbiwgRmlyZVNlbGVjdEV2ZW50LCBJc1VzZXJUcmlnZ2VyZWQgfTsK
KyAgICAgICAgcmV0dXJuIG9wdGlvbnM7CiAgICAgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRnJhbWVTZWxlY3Rpb24oRnJhbWUqID0gbnVsbHB0cik7CkBAIC0xNDcsNyArMTQ5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgbW92ZVdpdGhvdXRWYWxpZGF0aW9uVG8oY29uc3QgUG9zaXRp
b24mLCBjb25zdCBQb3NpdGlvbiYsIGJvb2wgc2VsZWN0aW9uSGFzRGlyZWN0aW9uLCBib29sIHNo
b3VsZFNldEZvY3VzLCBTZWxlY3Rpb25SZXZlYWxNb2RlLCBjb25zdCBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCYgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpKTsKIAogICAgIGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uOyB9Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYsIFNldFNlbGVjdGlvbk9wdGlvbnMgPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpLCBB
WFRleHRTdGF0ZUNoYW5nZUludGVudCA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCksIEN1cnNv
ckFsaWduT25TY3JvbGwgPSBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIFRleHRHcmFudWxh
cml0eSA9IENoYXJhY3RlckdyYW51bGFyaXR5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgT3B0aW9uU2V0PFNldFNlbGVjdGlv
bk9wdGlvbj4gPSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpLCBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCksIEN1cnNvckFsaWduT25TY3JvbGwg
PSBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIFRleHRHcmFudWxhcml0eSA9IENoYXJhY3Rl
ckdyYW51bGFyaXR5KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldFNlbGVjdGVkUmFuZ2Uo
UmFuZ2UqLCBFQWZmaW5pdHksIGJvb2wgY2xvc2VUeXBpbmcsIEVVc2VyVHJpZ2dlcmVkID0gTm90
VXNlclRyaWdnZXJlZCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWxlY3RBbGwoKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CkBAIC0yODIsNyArMjg0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZUFuZFJldmVhbFNlbGVjdGlvbihjb25zdCBBWFRleHRTdGF0ZUNo
YW5nZUludGVudCYpOwogICAgIHZvaWQgdXBkYXRlRGF0YURldGVjdG9yc0ZvclNlbGVjdGlvbigp
OwogCi0gICAgYm9vbCBzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mLCBTZXRTZWxlY3Rpb25PcHRpb25zLCBDdXJzb3JBbGlnbk9uU2Ny
b2xsLCBUZXh0R3JhbnVsYXJpdHkpOworICAgIGJvb2wgc2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0
aW5nQXBwZWFyYW5jZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgT3B0aW9uU2V0PFNldFNlbGVj
dGlvbk9wdGlvbj4sIEN1cnNvckFsaWduT25TY3JvbGwsIFRleHRHcmFudWxhcml0eSk7CiAKICAg
ICB2b2lkIHJlc3BvbmRUb05vZGVNb2RpZmljYXRpb24oTm9kZSYsIGJvb2wgYmFzZVJlbW92ZWQs
IGJvb2wgZXh0ZW50UmVtb3ZlZCwgYm9vbCBzdGFydFJlbW92ZWQsIGJvb2wgZW5kUmVtb3ZlZCk7
CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2
aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBNb3ZlU2VsZWN0
aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgIC8vIERvY3VtZW50IHdhcyBtb2RpZmllZCBv
dXQgZnJvbSB1bmRlciB1cy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbnMgb3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2
ZW50TmVzdGluZzsKKyAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1h
bmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFj
ZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgIGlm
IChtX3NtYXJ0SW5zZXJ0KQogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpTbWFydFJlcGxhY2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzc3LDcgKzM3Nyw3IEBAIGlubGluZSB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpJbnMKICAgICAgICAgbV9sYXN0Tm9kZUluc2VydGVkID0gbmV3Tm9kZTsKIH0KIAotUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIENvbW1hbmRPcHRp
b25zIG9wdGlvbnMsIEVkaXRBY3Rpb24gZWRpdEFjdGlvbikKK1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBPcHRpb25TZXQ8Q29tbWFuZE9wdGlvbj4gb3B0
aW9ucywgRWRpdEFjdGlvbiBlZGl0QWN0aW9uKQogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQo
ZG9jdW1lbnQsIGVkaXRBY3Rpb24pCiAgICAgLCBtX3NlbGVjdFJlcGxhY2VtZW50KG9wdGlvbnMg
JiBTZWxlY3RSZXBsYWNlbWVudCkKICAgICAsIG1fc21hcnRSZXBsYWNlKG9wdGlvbnMgJiBTbWFy
dFJlcGxhY2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5oCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1
LDcgQEAgcHVibGljOgogICAgICAgICBJZ25vcmVNYWlsQmxvY2txdW90ZSA9IDEgPDwgNiwKICAg
ICB9OwogCi0gICAgdHlwZWRlZiB1bnNpZ25lZCBDb21tYW5kT3B0aW9uczsKLQotICAgIHN0YXRp
YyBSZWY8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBDb21tYW5kT3B0aW9ucyBvcHRp
b25zLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBFZGl0QWN0aW9uSW5zZXJ0KQorICAgIHN0
YXRpYyBSZWY8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBPcHRpb25TZXQ8Q29tbWFu
ZE9wdGlvbj4gb3B0aW9ucywgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uID0gRWRpdEFjdGlvbklu
c2VydCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kKGRvY3VtZW50LCBXVEZNb3ZlKGZyYWdtZW50KSwgb3B0aW9ucywgZWRpdGluZ0Fj
dGlvbikpOwogICAgIH0KQEAgLTU1LDcgKzUzLDcgQEAgcHVibGljOgogICAgIFZpc2libGVTZWxl
Y3Rpb24gdmlzaWJsZVNlbGVjdGlvbkZvckluc2VydGVkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
dmlzaWJsZVNlbGVjdGlvbkZvckluc2VydGVkVGV4dDsgfQogCiBwcml2YXRlOgotICAgIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50JiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYs
IENvbW1hbmRPcHRpb25zLCBFZGl0QWN0aW9uKTsKKyAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZChEb2N1bWVudCYsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmLCBPcHRpb25TZXQ8Q29tbWFu
ZE9wdGlvbj4sIEVkaXRBY3Rpb24pOwogCiAgICAgU3RyaW5nIGlucHV0RXZlbnREYXRhKCkgY29u
c3QgZmluYWw7CiAgICAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gaW5wdXRFdmVudERhdGFUcmFuc2Zl
cigpIGNvbnN0IGZpbmFsOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rp
b25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNl
bGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2V0U2VsZWN0aW9uQ29tbWFuZDo6U2V0
U2VsZWN0aW9uQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIEZyYW1l
U2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMpCitTZXRTZWxlY3Rpb25Db21t
YW5kOjpTZXRTZWxlY3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
biwgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMp
CiAgICAgOiBTaW1wbGVFZGl0Q29tbWFuZChzZWxlY3Rpb24uYmFzZSgpLmFuY2hvck5vZGUoKS0+
ZG9jdW1lbnQoKSkKICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogICAgICwgbV9zZWxlY3Rpb25U
b1NldChzZWxlY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlv
bkNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVj
dGlvbkNvbW1hbmQuaAkocmV2aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZXRTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEzICszMiwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNldFNlbGVjdGlvbkNvbW1hbmQgOiBwdWJs
aWMgU2ltcGxlRWRpdENvbW1hbmQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2V0U2VsZWN0
aW9uQ29tbWFuZD4gY3JlYXRlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgRnJh
bWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKKyAgICBzdGF0aWMgUmVm
PFNldFNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxl
Y3Rpb24sIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPiBvcHRp
b25zKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2V0U2VsZWN0aW9uQ29t
bWFuZChzZWxlY3Rpb24sIG9wdGlvbnMpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2V0U2Vs
ZWN0aW9uQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgRnJhbWVTZWxlY3Rpb246OlNl
dFNlbGVjdGlvbk9wdGlvbnMpOworICAgIFNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9u
Pik7CiAKICAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKICAgICB2b2lkIGRvVW5hcHBseSgp
IG92ZXJyaWRlOwpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0Tm9kZXNJ
bkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZSB7IH0KICNlbmRpZgogCi0gICAgRnJh
bWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgbV9vcHRpb25zOworICAgIE9wdGlvblNl
dDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPiBtX29wdGlvbnM7CiAgICAgVmlz
aWJsZVNlbGVjdGlvbiBtX3NlbGVjdGlvblRvU2V0OwogfTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM0NzkyKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNv
bnRleHRNZW51SQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdHdWVzczogewog
ICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKTsKICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS5zaG91bGRJbnNlcnRUZXh0
KHRpdGxlLCBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgRWRpdG9ySW5zZXJ0
QWN0aW9uOjpQYXN0ZWQpKSB7Ci0gICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
Q29tbWFuZE9wdGlvbnMgcmVwbGFjZU9wdGlvbnMgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
TWF0Y2hTdHlsZSB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZzsKKyAg
ICAgICAgICAgIE9wdGlvblNldDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlv
bj4gcmVwbGFjZU9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHlsZSwg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIH07CiAKICAgICAgICAgICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCkuYmVoYXZpb3IoKS5zaG91bGRBbGxvd1NwZWxsaW5nU3VnZ2Vz
dGlvbnNXaXRob3V0U2VsZWN0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2VsZWN0
aW9uLmlzQ2FyZXRPclJhbmdlKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTUsNyArNTk1LDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjbwogICAgICAgICAgICAgTW92ZVNlbGVjdGlv
bkNvbW1hbmQ6OmNyZWF0ZShmcmFnbWVudC5yZWxlYXNlTm9uTnVsbCgpLCBkcmFnQ2FyZXQuYmFz
ZSgpLCBzbWFydEluc2VydCwgc21hcnREZWxldGUpLT5hcHBseSgpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgaWYgKHNldFNlbGVjdGlvblRvRHJhZ0NhcmV0KGlubmVyRnJhbWUuZ2V0
KCksIGRyYWdDYXJldCwgcmFuZ2UsIHBvaW50KSkgewotICAgICAgICAgICAgICAgIFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBvcHRpb25zID0gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlBy
ZXZlbnROZXN0aW5nOworICAgICAgICAgICAgICAgIE9wdGlvblNldDxSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6Q29tbWFuZE9wdGlvbj4gb3B0aW9ucyB7IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpTZWxlY3RSZXBsYWNlbWVudCwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0
aW5nIH07CiAgICAgICAgICAgICAgICAgaWYgKGRyYWdEYXRhLmNhblNtYXJ0UmVwbGFjZSgpKQog
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpT
bWFydFJlcGxhY2U7CiAgICAgICAgICAgICAgICAgaWYgKGNob3NlUGxhaW5UZXh0KQpAQCAtNjE3
LDcgKzYxNyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoY28KICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGlmIChzZXRTZWxlY3Rpb25Ub0RyYWdD
YXJldChpbm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBwb2ludCkpCi0gICAgICAg
ICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCptX2RvY3VtZW50VW5kZXJNb3Vz
ZSwgZnJhZ21lbnQuZ2V0KCksIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNl
bWVudCB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlIHwgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBFZGl0QWN0aW9uSW5zZXJ0RnJvbURyb3ApLT5h
cHBseSgpOworICAgICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZSgqbV9k
b2N1bWVudFVuZGVyTW91c2UsIGZyYWdtZW50LmdldCgpLCB7IFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpTZWxlY3RSZXBsYWNlbWVudCwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5
bGUsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9LCBFZGl0QWN0aW9u
SW5zZXJ0RnJvbURyb3ApLT5hcHBseSgpOwogICAgIH0KIAogICAgIGlmIChyb290RWRpdGFibGVF
bGVtZW50KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAJKHJldmlz
aW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IFRleHRJ
bmRpY2F0b3I6OmNyZQogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKCpmcmFtZSk7CiAKICAgICBW
aXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKTsKLSAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zIHRlbXBvcmFyeVNlbGVjdGlvbk9w
dGlvbnMgPSBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25EZWZhdWx0OworICAgIE9wdGlvblNldDxU
ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+IHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnM7CiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMgfD0gVGVtcG9yYXJ5
U2VsZWN0aW9uT3B0aW9uSWdub3JlU2VsZWN0aW9uQ2hhbmdlczsKICAgICB0ZW1wb3JhcnlTZWxl
Y3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbkVuYWJsZUFwcGVhcmFuY2VV
cGRhdGVzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347003</attachid>
            <date>2018-08-13 02:33:40 -0700</date>
            <delta_ts>2018-08-13 02:52:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-editor-7.patch</filename>
            <type>text/plain</type>
            <size>25258</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTA4LTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IG1vcmUg
aW4gZWRpdGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUeXBlc2FmZSBmbGFncy4KKworICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1v
dmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZTo6VGVt
cG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlk
YXRpb25Ubyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9u
V2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlv
bnMpOgorICAgICAgICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKToKKyAgICAgICAg
KiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5nL1NldFNl
bGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0U2VsZWN0aW9uQ29tbWFu
ZDo6U2V0U2VsZWN0aW9uQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9TZXRTZWxlY3Rpb25D
b21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXRTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUp
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UpOgorCiAyMDE4LTA4LTEyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2UgYXQgV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg5LDcgKzE0ODksNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihkZXN0aW5hdGlvbiwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CiAg
ICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwotICAgIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBvcHRpb25zID0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Ok1vdmluZ1BhcmFncmFwaDsKKyAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsK
ICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCiAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50
KSwgb3B0aW9ucykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24g
MjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAotVGVtcG9yYXJ5U2Vs
ZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmIGZyYW1lLCBzdGQ6
Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IHRlbXBvcmFyeVNlbGVjdGlvbiwgVGVtcG9yYXJ5
U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQorVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpUZW1w
b3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmIGZyYW1lLCBzdGQ6Om9wdGlvbmFsPFZpc2libGVT
ZWxlY3Rpb24+IHRlbXBvcmFyeVNlbGVjdGlvbiwgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlv
bk9wdGlvbj4gb3B0aW9ucykKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX29wdGlvbnMo
b3B0aW9ucykKICAgICAsIG1fd2FzSWdub3JpbmdTZWxlY3Rpb25DaGFuZ2VzKGZyYW1lLmVkaXRv
cigpLmlnbm9yZVNlbGVjdGlvbkNoYW5nZXMoKSkKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVuCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZWRpdGluZ0FjdGlvbiA9PSBFZGl0QWN0aW9uUGFz
dGUpCiAgICAgICAgIHJlcGxhY2VkVGV4dCA9IEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQoc2Vs
ZWN0aW9uKTsKIAotICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBv
cHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIHwgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OlNhbml0aXplRnJhZ21lbnQ7CisgICAgT3B0aW9uU2V0PFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2Fu
aXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNlbWVudCkKICAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAg
aWYgKHNtYXJ0UmVwbGFjZSkKQEAgLTEwNzMsNyArMTA3Myw5IEBAIHZvaWQgRWRpdG9yOjphcHBs
aWVkRWRpdGluZyhDb21wb3NpdGVFZGkKIAogICAgIGlmIChjb21tYW5kLmlzVG9wTGV2ZWxDb21t
YW5kKCkpIHsKICAgICAgICAgLy8gRG9uJ3QgY2xlYXIgdGhlIHR5cGluZyBzdHlsZSB3aXRoIHRo
aXMgc2VsZWN0aW9uIGNoYW5nZS4gV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBuZWNl
c3NhcnkuCi0gICAgICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlv
bnMgPSBjb21tYW5kLmlzRGljdGF0aW9uQ29tbWFuZCgpID8gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCA6IDA7CisgICAgICAgIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0
U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zOworICAgICAgICBpZiAoY29tbWFuZC5pc0RpY3RhdGlv
bkNvbW1hbmQoKSkKKyAgICAgICAgICAgIG9wdGlvbnMgfD0gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZDsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3
U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0xNzgxLDcgKzE3ODMsNyBAQCB2b2lkIEVk
aXRvcjo6c2VsZWN0Q29tcG9zaXRpb24oKQogICAgIC8vIFNlZSA8aHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODE+CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b247CiAgICAgc2VsZWN0aW9uLnNldFdpdGhvdXRWYWxpZGF0aW9uKHJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihzZWxlY3Rpb24sIDApOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKHNlbGVjdGlvbiwgeyB9KTsKIH0KIAogdm9pZCBFZGl0b3I6OmNvbmZpcm1Db21wb3Np
dGlvbigpCkBAIC0zMTA3LDcgKzMxMDksNyBAQCB2b2lkIEVkaXRvcjo6ZGlzbWlzc0NvcnJlY3Rp
b25QYW5lbEFzSWduCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5kaXNtaXNzKFJl
YXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHRJZ25vcmVkKTsKIH0KIAotdm9pZCBFZGl0
b3I6OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBu
ZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMp
Cit2b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxl
Y3Rpb25PcHRpb24+IG9wdGlvbnMpCiB7CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0aW9uKG1fZnJh
bWUpOwogCkBAIC0zNDcwLDcgKzM0NzIsNyBAQCB2b2lkIEVkaXRvcjo6c2VsZWN0aW9uV2lsbENo
YW5nZSgpCiB9CiAjZW5kaWYKIAotdm9pZCBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25P
cHRpb25zIG9wdGlvbnMpCit2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxl
Y3Rpb25PcHRpb24+IG9wdGlvbnMpCiB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1F
OiBTaG91bGQgc3VwcHJlc3Mgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIGR1cmluZyBh
IGNvbXBvc2l0aW9uIGNoYW5nZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMzg4MzA+IApAQCAtMzQ5
Miw5ICszNDk0LDggQEAgdm9pZCBFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oYwog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBEb24ndCBjaGVjayBzcGVsbGluZyBhbmQgZ3JhbW1h
ciBpZiB0aGUgY2hhbmdlIG9mIHNlbGVjdGlvbiBpcyB0cmlnZ2VyZWQgYnkgc3BlbGxpbmcgY29y
cmVjdGlvbiBpdHNlbGYuCi0gICAgbV9lZGl0b3JVSVVwZGF0ZVRpbWVyU2hvdWxkQ2hlY2tTcGVs
bGluZ0FuZEdyYW1tYXIgPSBvcHRpb25zICYgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nCi0g
ICAgICAgICYmICEob3B0aW9ucyAmIEZyYW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25Ucmln
Z2VyZWQpOwotICAgIG1fZWRpdG9yVUlVcGRhdGVUaW1lcldhc1RyaWdnZXJlZEJ5RGljdGF0aW9u
ID0gb3B0aW9ucyAmIEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25UcmlnZ2VyZWQ7CisgICAgbV9l
ZGl0b3JVSVVwZGF0ZVRpbWVyU2hvdWxkQ2hlY2tTcGVsbGluZ0FuZEdyYW1tYXIgPSBvcHRpb25z
LmNvbnRhaW5zKEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGluZykgJiYgIW9wdGlvbnMuY29udGFp
bnMoRnJhbWVTZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7CisgICAgbV9lZGl0
b3JVSVVwZGF0ZVRpbWVyV2FzVHJpZ2dlcmVkQnlEaWN0YXRpb24gPSBvcHRpb25zLmNvbnRhaW5z
KEZyYW1lU2VsZWN0aW9uOjpEaWN0YXRpb25UcmlnZ2VyZWQpOwogICAgIHNjaGVkdWxlRWRpdG9y
VUlVcGRhdGUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiAy
MzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC05OSw5ICs5OSw2IEBAIHN0cnVjdCBBdHRhY2htZW50RGlzcGxheU9wdGlvbnM7CiAjZW5k
aWYKIAogZW51bSBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24gOiB1aW50OF90IHsKLSAgICAvLyBC
eSBkZWZhdWx0LCBubyBhZGRpdGlvbmFsIG9wdGlvbnMgYXJlIGVuYWJsZWQuCi0gICAgVGVtcG9y
YXJ5U2VsZWN0aW9uT3B0aW9uRGVmYXVsdCA9IDAsCi0KICAgICAvLyBTY3JvbGwgdG8gcmV2ZWFs
IHRoZSBzZWxlY3Rpb24uCiAgICAgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uUmV2ZWFsU2VsZWN0
aW9uID0gMSA8PCAwLAogCkBAIC0xMTIsMTYgKzEwOSwxNCBAQCBlbnVtIFRlbXBvcmFyeVNlbGVj
dGlvbk9wdGlvbiA6IHVpbnQ4X3QgCiAgICAgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uRW5hYmxl
QXBwZWFyYW5jZVVwZGF0ZXMgPSAxIDw8IDIKIH07CiAKLXVzaW5nIFRlbXBvcmFyeVNlbGVjdGlv
bk9wdGlvbnMgPSB1aW50OF90OwotCiBjbGFzcyBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2Ugewog
cHVibGljOgotICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZShGcmFtZSYsIHN0ZDo6b3B0aW9u
YWw8VmlzaWJsZVNlbGVjdGlvbj4gPSBzdGQ6Om51bGxvcHQsIFRlbXBvcmFyeVNlbGVjdGlvbk9w
dGlvbnMgPSBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25EZWZhdWx0KTsKKyAgICBUZW1wb3JhcnlT
ZWxlY3Rpb25DaGFuZ2UoRnJhbWUmLCBzdGQ6Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+ID0g
c3RkOjpudWxsb3B0LCBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiA9IHsgfSk7
CiAgICAgflRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSgpOwogCiBwcml2YXRlOgogICAgIFJlZjxG
cmFtZT4gbV9mcmFtZTsKLSAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zIG1fb3B0aW9uczsK
KyAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uPiBtX29wdGlvbnM7CiAgICAg
Ym9vbCBtX3dhc0lnbm9yaW5nU2VsZWN0aW9uQ2hhbmdlczsKICNpZiBQTEFURk9STShJT1MpCiAg
ICAgYm9vbCBtX2FwcGVhcmFuY2VVcGRhdGVzV2VyZUVuYWJsZWQ7CkBAIC00MTQsNyArNDA5LDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEludFJlY3QgZmlyc3RSZWN0Rm9yUmFuZ2Uo
UmFuZ2UqKSBjb25zdDsKIAogICAgIHZvaWQgc2VsZWN0aW9uV2lsbENoYW5nZSgpOwotICAgIHZv
aWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRT
ZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB2b2lk
IHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2Vs
ZWN0aW9uLCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4pOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgpOwog
ICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9s
ZFNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBFQWZmaW5p
dHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2ln
bmVkIGNvdW50TWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9u
cywgdW5zaWduZWQgbGltaXQsIGJvb2wgbWFya01hdGNoZXMsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+
PiopOwpAQCAtNTQxLDcgKzUzNiw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBTZXRDb21wb3NpdGlv
bk1vZGUgeyBDb25maXJtQ29tcG9zaXRpb24sIENhbmNlbENvbXBvc2l0aW9uIH07CiAgICAgdm9p
ZCBzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmLCBTZXRDb21wb3NpdGlvbk1vZGUpOwogCi0g
ICAgdm9pZCBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgbmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyk7Cisg
ICAgdm9pZCBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgbmV3U2VsZWN0aW9uLCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9w
dGlvbj4pOwogCiAgICAgZW51bSBFZGl0b3JBY3Rpb25TcGVjaWZpZXIgeyBDdXRBY3Rpb24sIENv
cHlBY3Rpb24gfTsKICAgICB2b2lkIHBlcmZvcm1DdXRPckNvcHkoRWRpdG9yQWN0aW9uU3BlY2lm
aWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246Om1vdmVXaXRob3V0VmFsaWRhdGkKICAgICBuZXdTZWxlY3Rpb24uc2V0V2l0aG91dFZhbGlk
YXRpb24oYmFzZSwgZXh0ZW50KTsKICAgICBuZXdTZWxlY3Rpb24uc2V0SXNEaXJlY3Rpb25hbChz
ZWxlY3Rpb25IYXNEaXJlY3Rpb24pOwogICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IG5ld0lu
dGVudCA9IGludGVudC50eXBlID09IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd24gPyBBWFRl
eHRTdGF0ZUNoYW5nZUludGVudChBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBB
WFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBB
WFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25vd24sIGZhbHNlIH0pIDogaW50ZW50OwotICAg
IFNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucyA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25z
KCk7CisgICAgYXV0byBvcHRpb25zID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKTsKICAg
ICBpZiAoIXNob3VsZFNldEZvY3VzKQogICAgICAgICBvcHRpb25zIHw9IERvTm90U2V0Rm9jdXM7
CiAgICAgc3dpdGNoIChyZXZlYWxNb2RlKSB7CkBAIC0yOTEsMTAgKzI5MSwxMCBAQCB2b2lkIEZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25CeU1vdXNlCiAgICAgc2V0U2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbiwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZpcmVTZWxlY3RFdmVudCwg
aW50ZW50LCBBbGlnbkN1cnNvck9uU2Nyb2xsSWZOZWVkZWQsIGdyYW51bGFyaXR5KTsKIH0KIAot
Ym9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5j
ZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb25Qb3NzaWJseVdpdGhvdXREaXJl
Y3Rpb24sIFNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucywgQ3Vyc29yQWxpZ25PblNjcm9sbCBh
bGlnbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorYm9vbCBGcmFtZVNlbGVjdGlvbjo6
c2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBuZXdTZWxlY3Rpb25Qb3NzaWJseVdpdGhvdXREaXJlY3Rpb24sIE9wdGlvblNldDxTZXRT
ZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIEN1cnNvckFsaWduT25TY3JvbGwgYWxpZ24sIFRleHRH
cmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKLSAgICBib29sIGNsb3NlVHlwaW5nID0gb3B0aW9u
cyAmIENsb3NlVHlwaW5nOwotICAgIGJvb2wgc2hvdWxkQ2xlYXJUeXBpbmdTdHlsZSA9IG9wdGlv
bnMgJiBDbGVhclR5cGluZ1N0eWxlOworICAgIGJvb2wgY2xvc2VUeXBpbmcgPSBvcHRpb25zLmNv
bnRhaW5zKENsb3NlVHlwaW5nKTsKKyAgICBib29sIHNob3VsZENsZWFyVHlwaW5nU3R5bGUgPSBv
cHRpb25zLmNvbnRhaW5zKENsZWFyVHlwaW5nU3R5bGUpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlv
biBuZXdTZWxlY3Rpb24gPSBuZXdTZWxlY3Rpb25Qb3NzaWJseVdpdGhvdXREaXJlY3Rpb247CiAg
ICAgaWYgKHNob3VsZEFsd2F5c1VzZURpcmVjdGlvbmFsU2VsZWN0aW9uKG1fZnJhbWUpKQpAQCAt
MzM4LDcgKzMzOCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbldpdGhvdXQK
IAogICAgIC8vIFNlbGVjdGlvbiBvZmZzZXRzIHNob3VsZCBpbmNyZWFzZSB3aGVuIExGIGlzIGlu
c2VydGVkIGJlZm9yZSB0aGUgY2FyZXQgaW4gSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC4gU2VlIDxo
dHRwczovL3dlYmtpdC5vcmcvYi81NjA2MT4uCiAgICAgaWYgKEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KiB0ZXh0Q29udHJvbCA9IGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChuZXdTZWxlY3Rp
b24uc3RhcnQoKSkpCi0gICAgICAgIHRleHRDb250cm9sLT5zZWxlY3Rpb25DaGFuZ2VkKG9wdGlv
bnMgJiBGaXJlU2VsZWN0RXZlbnQpOworICAgICAgICB0ZXh0Q29udHJvbC0+c2VsZWN0aW9uQ2hh
bmdlZChvcHRpb25zLmNvbnRhaW5zKEZpcmVTZWxlY3RFdmVudCkpOwogCiAgICAgaWYgKCFkaWRN
dXRhdGVTZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OCw3ICszNTgsNyBA
QCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb24sIFNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucywgQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50LCBDdXJzb3JBbGlnbk9uU2Nyb2xsIGFsaWduLCBUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rp
b24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBPcHRpb25TZXQ8U2V0U2VsZWN0
aW9uT3B0aW9uPiBvcHRpb25zLCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQsIEN1cnNv
ckFsaWduT25TY3JvbGwgYWxpZ24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAg
ICBSZWZQdHI8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogICAgIGlmICghc2V0U2Vs
ZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShzZWxlY3Rpb24sIG9wdGlvbnMsIGFsaWdu
LCBncmFudWxhcml0eSkpCkBAIC0xOTkzLDE1ICsxOTkzLDIyIEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246OnNldFNlbGVjdGVkUmFuZ2UoUmEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAK
KyAgICBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiBzZWxlY3Rpb25PcHRpb25zIHsgIENs
ZWFyVHlwaW5nU3R5bGUgfTsKKyAgICBpZiAoY2xvc2VUeXBpbmcpCisgICAgICAgIHNlbGVjdGlv
bk9wdGlvbnMgfD0gQ2xvc2VUeXBpbmc7CisKICAgICBpZiAodXNlclRyaWdnZXJlZCA9PSBVc2Vy
VHJpZ2dlcmVkKSB7CiAgICAgICAgIEZyYW1lU2VsZWN0aW9uIHRyaWFsRnJhbWVTZWxlY3Rpb247
Ci0gICAgICAgIHRyaWFsRnJhbWVTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwg
Q2xlYXJUeXBpbmdTdHlsZSB8IChjbG9zZVR5cGluZyA/IENsb3NlVHlwaW5nIDogMCkpOworCisg
ICAgICAgIHRyaWFsRnJhbWVTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgc2Vs
ZWN0aW9uT3B0aW9ucyk7CiAKICAgICAgICAgaWYgKCFzaG91bGRDaGFuZ2VTZWxlY3Rpb24odHJp
YWxGcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgc2VsZWN0aW9uT3B0aW9ucyB8PSBJc1VzZXJUcmlnZ2VyZWQ7CiAgICAgfQog
Ci0gICAgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgQ2xlYXJUeXBpbmdTdHlsZSB8IChjbG9z
ZVR5cGluZyA/IENsb3NlVHlwaW5nIDogMCkgfCAodXNlclRyaWdnZXJlZCA9PSBVc2VyVHJpZ2dl
cmVkID8gSXNVc2VyVHJpZ2dlcmVkIDogMCkpOworICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rp
b24sIHNlbGVjdGlvbk9wdGlvbnMpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNjkwLDcg
KzI2OTcsOCBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RSYW5nZU9uRWxlbWVuCiAgICAg
cmVzdWx0UmFuZ2UtPnNldFN0YXJ0KG5vZGUsIGxvY2F0aW9uKTsKICAgICByZXN1bHRSYW5nZS0+
c2V0RW5kKG5vZGUsIGxvY2F0aW9uICsgbGVuZ3RoKTsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNl
bGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24oKnJlc3VsdFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJ
TklUWSk7Ci0gICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgdHJ1ZSk7CisgICAgLy8gRklYTUU6
IFRoZSBzZWNvbmQgYXJndW1lbnQgd2FzICJ0cnVlIiB3aGljaCBpbXBsaWNpdGx5IGNvbnZlcnRl
ZCB0byBvcHRpb24gIkZpcmVTZWxlY3RFdmVudCIuIElzIHRoaXMgY29ycmVjdD8KKyAgICBzZXRT
ZWxlY3Rpb24oc2VsZWN0aW9uLCB7IEZpcmVTZWxlY3RFdmVudCB9KTsKIH0KIAogVmlzaWJsZVNl
bGVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6d29yZFNlbGVjdGlvbkNvbnRhaW5pbmdDYXJldFNlbGVj
dGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwx
MCArMTI5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgUmV2ZWFsU2VsZWN0aW9uID0gMSA8PCA3LAog
ICAgICAgICBSZXZlYWxTZWxlY3Rpb25VcFRvTWFpbkZyYW1lID0gMSA8PCA4LAogICAgIH07Ci0g
ICAgdHlwZWRlZiB1bnNpZ25lZCBTZXRTZWxlY3Rpb25PcHRpb25zOyAvLyBVbmlvbiBvZiB2YWx1
ZXMgaW4gU2V0U2VsZWN0aW9uT3B0aW9uIGFuZCBFVXNlclRyaWdnZXJlZAotICAgIHN0YXRpYyBp
bmxpbmUgU2V0U2VsZWN0aW9uT3B0aW9ucyBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhFVXNl
clRyaWdnZXJlZCB1c2VyVHJpZ2dlcmVkID0gTm90VXNlclRyaWdnZXJlZCkKKyAgICBzdGF0aWMg
Y29uc3RleHByIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+IGRlZmF1bHRTZXRTZWxlY3Rp
b25PcHRpb25zKEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQgPSBOb3RVc2VyVHJpZ2dlcmVk
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIENsb3NlVHlwaW5nIHwgQ2xlYXJUeXBpbmdTdHlsZSB8
ICh1c2VyVHJpZ2dlcmVkID8gKFJldmVhbFNlbGVjdGlvbiB8IEZpcmVTZWxlY3RFdmVudCB8IElz
VXNlclRyaWdnZXJlZCkgOiAwKTsKKyAgICAgICAgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlv
bj4gb3B0aW9ucyB7IENsb3NlVHlwaW5nLCBDbGVhclR5cGluZ1N0eWxlIH07CisgICAgICAgIGlm
ICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpCisgICAgICAgICAgICBvcHRpb25zIHw9
IHsgUmV2ZWFsU2VsZWN0aW9uLCBGaXJlU2VsZWN0RXZlbnQsIElzVXNlclRyaWdnZXJlZCB9Owor
ICAgICAgICByZXR1cm4gb3B0aW9uczsKICAgICB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBGcmFtZVNlbGVjdGlvbihGcmFtZSogPSBudWxscHRyKTsKQEAgLTE0Nyw3ICsxNDksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZlV2l0aG91dFZhbGlkYXRpb25Ubyhjb25zdCBQb3NpdGlv
biYsIGNvbnN0IFBvc2l0aW9uJiwgYm9vbCBzZWxlY3Rpb25IYXNEaXJlY3Rpb24sIGJvb2wgc2hv
dWxkU2V0Rm9jdXMsIFNlbGVjdGlvblJldmVhbE1vZGUsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50JiA9IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCkpOwogCiAgICAgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgc2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiwgU2V0U2VsZWN0aW9uT3B0aW9ucyA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFY
VGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29y
QWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFy
aXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0aW9u
T3B0aW9uPiA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9
IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVy
R3JhbnVsYXJpdHkpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShS
YW5nZSosIEVBZmZpbml0eSwgYm9vbCBjbG9zZVR5cGluZywgRVVzZXJUcmlnZ2VyZWQgPSBOb3RV
c2VyVHJpZ2dlcmVkKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlbGVjdEFsbCgpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXIoKTsKQEAgLTI4Miw3ICsyODQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKGNvbnN0IEFYVGV4dFN0YXRlQ2hh
bmdlSW50ZW50Jik7CiAgICAgdm9pZCB1cGRhdGVEYXRhRGV0ZWN0b3JzRm9yU2VsZWN0aW9uKCk7
CiAKLSAgICBib29sIHNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYsIFNldFNlbGVjdGlvbk9wdGlvbnMsIEN1cnNvckFsaWduT25TY3Jv
bGwsIFRleHRHcmFudWxhcml0eSk7CisgICAgYm9vbCBzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRp
bmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8U2V0U2VsZWN0
aW9uT3B0aW9uPiwgQ3Vyc29yQWxpZ25PblNjcm9sbCwgVGV4dEdyYW51bGFyaXR5KTsKIAogICAg
IHZvaWQgcmVzcG9uZFRvTm9kZU1vZGlmaWNhdGlvbihOb2RlJiwgYm9vbCBiYXNlUmVtb3ZlZCwg
Ym9vbCBleHRlbnRSZW1vdmVkLCBib29sIHN0YXJ0UmVtb3ZlZCwgYm9vbCBlbmRSZW1vdmVkKTsK
ICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZp
c2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21t
YW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCB2b2lkIE1vdmVTZWxlY3Rp
b25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgLy8gRG9jdW1lbnQgd2FzIG1vZGlmaWVkIG91
dCBmcm9tIHVuZGVyIHVzLgogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBvcHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZl
bnROZXN0aW5nOworICAgIE9wdGlvblNldDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFu
ZE9wdGlvbj4gb3B0aW9ucyB7IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNl
bWVudCwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIH07CiAgICAgaWYg
KG1fc21hcnRJbnNlcnQpCiAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OlNtYXJ0UmVwbGFjZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNzcsNyArMzc3LDcgQEAgaW5saW5lIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OklucwogICAgICAgICBtX2xhc3ROb2RlSW5zZXJ0ZWQgPSBuZXdOb2RlOwogfQogCi1SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFnbWVudCwgQ29tbWFuZE9wdGlv
bnMgb3B0aW9ucywgRWRpdEFjdGlvbiBlZGl0QWN0aW9uKQorUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIE9wdGlvblNldDxDb21tYW5kT3B0aW9uPiBvcHRp
b25zLCBFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCiAgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChk
b2N1bWVudCwgZWRpdEFjdGlvbikKICAgICAsIG1fc2VsZWN0UmVwbGFjZW1lbnQob3B0aW9ucyAm
IFNlbGVjdFJlcGxhY2VtZW50KQogICAgICwgbV9zbWFydFJlcGxhY2Uob3B0aW9ucyAmIFNtYXJ0
UmVwbGFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmgJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIElnbm9yZU1haWxCbG9ja3F1b3RlID0gMSA8PCA2LAogICAg
IH07CiAKLSAgICB0eXBlZGVmIHVuc2lnbmVkIENvbW1hbmRPcHRpb25zOwotCi0gICAgc3RhdGlj
IFJlZjxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIENvbW1hbmRPcHRpb25zIG9wdGlv
bnMsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbiA9IEVkaXRBY3Rpb25JbnNlcnQpCisgICAgc3Rh
dGljIFJlZjxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIE9wdGlvblNldDxDb21tYW5k
T3B0aW9uPiBvcHRpb25zLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBFZGl0QWN0aW9uSW5z
ZXJ0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQoZG9jdW1lbnQsIFdURk1vdmUoZnJhZ21lbnQpLCBvcHRpb25zLCBlZGl0aW5nQWN0
aW9uKSk7CiAgICAgfQpAQCAtNTUsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgVmlzaWJsZVNlbGVj
dGlvbiB2aXNpYmxlU2VsZWN0aW9uRm9ySW5zZXJ0ZWRUZXh0KCkgY29uc3QgeyByZXR1cm4gbV92
aXNpYmxlU2VsZWN0aW9uRm9ySW5zZXJ0ZWRUZXh0OyB9CiAKIHByaXZhdGU6Ci0gICAgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQmLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwg
Q29tbWFuZE9wdGlvbnMsIEVkaXRBY3Rpb24pOworICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
KERvY3VtZW50JiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIE9wdGlvblNldDxDb21tYW5k
T3B0aW9uPiwgRWRpdEFjdGlvbik7CiAKICAgICBTdHJpbmcgaW5wdXRFdmVudERhdGEoKSBjb25z
dCBmaW5hbDsKICAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBpbnB1dEV2ZW50RGF0YVRyYW5zZmVy
KCkgY29uc3QgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlv
bkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2Vs
ZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXRTZWxlY3Rpb25Db21tYW5kOjpTZXRT
ZWxlY3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgRnJhbWVT
ZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK1NldFNlbGVjdGlvbkNvbW1h
bmQ6OlNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
LCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykK
ICAgICA6IFNpbXBsZUVkaXRDb21tYW5kKHNlbGVjdGlvbi5iYXNlKCkuYW5jaG9yTm9kZSgpLT5k
b2N1bWVudCgpKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX3NlbGVjdGlvblRv
U2V0KHNlbGVjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9u
Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0
aW9uQ29tbWFuZC5oCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NldFNlbGVjdGlvbkNvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTMgKzMyLDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2V0U2VsZWN0aW9uQ29tbWFuZCA6IHB1Ymxp
YyBTaW1wbGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXRTZWxlY3Rp
b25Db21tYW5kPiBjcmVhdGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBGcmFt
ZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQorICAgIHN0YXRpYyBSZWY8
U2V0U2VsZWN0aW9uQ29tbWFuZD4gY3JlYXRlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVj
dGlvbiwgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb24+IG9wdGlv
bnMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXRTZWxlY3Rpb25Db21t
YW5kKHNlbGVjdGlvbiwgb3B0aW9ucykpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTZXRTZWxl
Y3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBGcmFtZVNlbGVjdGlvbjo6U2V0
U2VsZWN0aW9uT3B0aW9ucyk7CisgICAgU2V0U2VsZWN0aW9uQ29tbWFuZChjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiwgT3B0aW9uU2V0PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb24+
KTsKIAogICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZG9VbmFwcGx5KCkg
b3ZlcnJpZGU7CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAKLSAgICBGcmFt
ZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBtX29wdGlvbnM7CisgICAgT3B0aW9uU2V0
PEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb24+IG1fb3B0aW9uczsKICAgICBWaXNp
YmxlU2VsZWN0aW9uIG1fc2VsZWN0aW9uVG9TZXQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ3OTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29u
dGV4dE1lbnVJCiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ0d1ZXNzOiB7CiAg
ICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOwogICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLnNob3VsZEluc2VydFRleHQo
dGl0bGUsIHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBFZGl0b3JJbnNlcnRB
Y3Rpb246OlBhc3RlZCkpIHsKLSAgICAgICAgICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpD
b21tYW5kT3B0aW9ucyByZXBsYWNlT3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpN
YXRjaFN0eWxlIHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOworICAg
ICAgICAgICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9u
PiByZXBsYWNlT3B0aW9ucyB7IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlLCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKIAogICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZEFsbG93U3BlbGxpbmdTdWdnZXN0
aW9uc1dpdGhvdXRTZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChzZWxlY3Rp
b24uaXNDYXJldE9yUmFuZ2UoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NSw3ICs1OTUsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKGNvCiAgICAgICAgICAgICBNb3ZlU2VsZWN0aW9u
Q29tbWFuZDo6Y3JlYXRlKGZyYWdtZW50LnJlbGVhc2VOb25OdWxsKCksIGRyYWdDYXJldC5iYXNl
KCksIHNtYXJ0SW5zZXJ0LCBzbWFydERlbGV0ZSktPmFwcGx5KCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQoaW5uZXJGcmFtZS5nZXQo
KSwgZHJhZ0NhcmV0LCByYW5nZSwgcG9pbnQpKSB7Ci0gICAgICAgICAgICAgICAgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb25zIG9wdGlvbnMgPSBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQgfCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJl
dmVudE5lc3Rpbmc7CisgICAgICAgICAgICAgICAgT3B0aW9uU2V0PFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3Rp
bmcgfTsKICAgICAgICAgICAgICAgICBpZiAoZHJhZ0RhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNt
YXJ0UmVwbGFjZTsKICAgICAgICAgICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQpCkBAIC02MTcs
NyArNjE3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhjbwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAgICAgaWYgKHNldFNlbGVjdGlvblRvRHJhZ0Nh
cmV0KGlubmVyRnJhbWUuZ2V0KCksIGRyYWdDYXJldCwgcmFuZ2UsIHBvaW50KSkKLSAgICAgICAg
ICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoKm1fZG9jdW1lbnRVbmRlck1vdXNl
LCBmcmFnbWVudC5nZXQoKSwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2Vt
ZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUgfCBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcsIEVkaXRBY3Rpb25JbnNlcnRGcm9tRHJvcCktPmFw
cGx5KCk7CisgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCptX2Rv
Y3VtZW50VW5kZXJNb3VzZSwgZnJhZ21lbnQuZ2V0KCksIHsgUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6TWF0Y2hTdHls
ZSwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIH0sIEVkaXRBY3Rpb25J
bnNlcnRGcm9tRHJvcCktPmFwcGx5KCk7CiAgICAgfQogCiAgICAgaWYgKHJvb3RFZGl0YWJsZUVs
ZW1lbnQpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAkocmV2aXNp
b24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCBSZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dElu
ZGljYXRvcjo6Y3JlCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IoKmZyYW1lKTsKIAogICAgIFZp
c2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpOwotICAgIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0
aW9ucyA9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbkRlZmF1bHQ7CisgICAgT3B0aW9uU2V0PFRl
bXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uczsKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3JhcnlT
ZWxlY3Rpb25PcHRpb25JZ25vcmVTZWxlY3Rpb25DaGFuZ2VzOwogICAgIHRlbXBvcmFyeVNlbGVj
dGlvbk9wdGlvbnMgfD0gVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uRW5hYmxlQXBwZWFyYW5jZVVw
ZGF0ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347004</attachid>
            <date>2018-08-13 02:52:18 -0700</date>
            <delta_ts>2018-08-13 03:44:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-editor-8.patch</filename>
            <type>text/plain</type>
            <size>25806</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTA4LTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IG1vcmUg
aW4gZWRpdGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUeXBlc2FmZSBmbGFncy4KKworICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1v
dmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZTo6VGVt
cG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlk
YXRpb25Ubyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9u
V2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlv
bnMpOgorICAgICAgICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKToKKyAgICAgICAg
KiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5nL1NldFNl
bGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0U2VsZWN0aW9uQ29tbWFu
ZDo6U2V0U2VsZWN0aW9uQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9TZXRTZWxlY3Rpb25D
b21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXRTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUp
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UpOgorCiAyMDE4LTA4LTEyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2UgYXQgV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg5LDcgKzE0ODksNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihkZXN0aW5hdGlvbiwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CiAg
ICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwotICAgIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBvcHRpb25zID0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Ok1vdmluZ1BhcmFncmFwaDsKKyAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsK
ICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCiAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50
KSwgb3B0aW9ucykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24g
MjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAotVGVtcG9yYXJ5U2Vs
ZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmIGZyYW1lLCBzdGQ6
Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IHRlbXBvcmFyeVNlbGVjdGlvbiwgVGVtcG9yYXJ5
U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQorVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpUZW1w
b3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmIGZyYW1lLCBzdGQ6Om9wdGlvbmFsPFZpc2libGVT
ZWxlY3Rpb24+IHRlbXBvcmFyeVNlbGVjdGlvbiwgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlv
bk9wdGlvbj4gb3B0aW9ucykKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX29wdGlvbnMo
b3B0aW9ucykKICAgICAsIG1fd2FzSWdub3JpbmdTZWxlY3Rpb25DaGFuZ2VzKGZyYW1lLmVkaXRv
cigpLmlnbm9yZVNlbGVjdGlvbkNoYW5nZXMoKSkKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVuCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZWRpdGluZ0FjdGlvbiA9PSBFZGl0QWN0aW9uUGFz
dGUpCiAgICAgICAgIHJlcGxhY2VkVGV4dCA9IEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQoc2Vs
ZWN0aW9uKTsKIAotICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBv
cHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIHwgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OlNhbml0aXplRnJhZ21lbnQ7CisgICAgT3B0aW9uU2V0PFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2Fu
aXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNlbWVudCkKICAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAg
aWYgKHNtYXJ0UmVwbGFjZSkKQEAgLTEwNzMsNyArMTA3Myw5IEBAIHZvaWQgRWRpdG9yOjphcHBs
aWVkRWRpdGluZyhDb21wb3NpdGVFZGkKIAogICAgIGlmIChjb21tYW5kLmlzVG9wTGV2ZWxDb21t
YW5kKCkpIHsKICAgICAgICAgLy8gRG9uJ3QgY2xlYXIgdGhlIHR5cGluZyBzdHlsZSB3aXRoIHRo
aXMgc2VsZWN0aW9uIGNoYW5nZS4gV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBuZWNl
c3NhcnkuCi0gICAgICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlv
bnMgPSBjb21tYW5kLmlzRGljdGF0aW9uQ29tbWFuZCgpID8gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCA6IDA7CisgICAgICAgIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0
U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zOworICAgICAgICBpZiAoY29tbWFuZC5pc0RpY3RhdGlv
bkNvbW1hbmQoKSkKKyAgICAgICAgICAgIG9wdGlvbnMgfD0gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZDsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3
U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0xNzgxLDcgKzE3ODMsNyBAQCB2b2lkIEVk
aXRvcjo6c2VsZWN0Q29tcG9zaXRpb24oKQogICAgIC8vIFNlZSA8aHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODE+CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b247CiAgICAgc2VsZWN0aW9uLnNldFdpdGhvdXRWYWxpZGF0aW9uKHJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihzZWxlY3Rpb24sIDApOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKHNlbGVjdGlvbiwgeyB9KTsKIH0KIAogdm9pZCBFZGl0b3I6OmNvbmZpcm1Db21wb3Np
dGlvbigpCkBAIC0yOTg0LDcgKzI5ODYsNyBAQCB2b2lkIEVkaXRvcjo6c2V0SWdub3JlU2VsZWN0
aW9uQ2hhbmdlcyhiCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBTaG91bGQgc3Vw
cHJlc3Mgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIGR1cmluZyBhIGNvbXBvc2l0aW9u
IGNoYW5nZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMzg4MzA+IAogICAgIGlmICghaWdub3JlKQot
ICAgICAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCksIDApOworICAgICAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIHsgfSk7CiAjZW5kaWYKICAgICBpZiAoIWlnbm9yZSAm
JiBzaG91bGRSZXZlYWxFeGlzdGluZ1NlbGVjdGlvbiA9PSBSZXZlYWxTZWxlY3Rpb246OlllcykK
ICAgICAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50KTsKQEAgLTMxMDcsNyArMzEw
OSw3IEBAIHZvaWQgRWRpdG9yOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsQXNJZ24KICAgICBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmRpc21pc3MoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dElnbm9yZWQpOwogfQogCi12b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxl
Y3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK3ZvaWQgRWRpdG9yOjpjaGFuZ2VT
ZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9u
LCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykK
IHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rpb24obV9mcmFtZSk7CiAKQEAgLTM0NzAsNyArMzQ3
Miw3IEBAIHZvaWQgRWRpdG9yOjpzZWxlY3Rpb25XaWxsQ2hhbmdlKCkKIH0KICNlbmRpZgogCi12
b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK3ZvaWQg
RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
LCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykK
IHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IFNob3VsZCBzdXBwcmVzcyBzZWxl
Y3Rpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMgZHVyaW5nIGEgY29tcG9zaXRpb24gY2hhbmdlIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8zODgzMD4gCkBAIC0zNDkyLDkgKzM0OTQsOCBAQCB2b2lkIEVk
aXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIERvbid0IGNoZWNrIHNwZWxsaW5nIGFuZCBncmFtbWFyIGlmIHRoZSBjaGFuZ2Ugb2Ygc2Vs
ZWN0aW9uIGlzIHRyaWdnZXJlZCBieSBzcGVsbGluZyBjb3JyZWN0aW9uIGl0c2VsZi4KLSAgICBt
X2VkaXRvclVJVXBkYXRlVGltZXJTaG91bGRDaGVja1NwZWxsaW5nQW5kR3JhbW1hciA9IG9wdGlv
bnMgJiBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcKLSAgICAgICAgJiYgIShvcHRpb25zICYg
RnJhbWVTZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7Ci0gICAgbV9lZGl0b3JV
SVVwZGF0ZVRpbWVyV2FzVHJpZ2dlcmVkQnlEaWN0YXRpb24gPSBvcHRpb25zICYgRnJhbWVTZWxl
Y3Rpb246OkRpY3RhdGlvblRyaWdnZXJlZDsKKyAgICBtX2VkaXRvclVJVXBkYXRlVGltZXJTaG91
bGRDaGVja1NwZWxsaW5nQW5kR3JhbW1hciA9IG9wdGlvbnMuY29udGFpbnMoRnJhbWVTZWxlY3Rp
b246OkNsb3NlVHlwaW5nKSAmJiAhb3B0aW9ucy5jb250YWlucyhGcmFtZVNlbGVjdGlvbjo6U3Bl
bGxDb3JyZWN0aW9uVHJpZ2dlcmVkKTsKKyAgICBtX2VkaXRvclVJVXBkYXRlVGltZXJXYXNUcmln
Z2VyZWRCeURpY3RhdGlvbiA9IG9wdGlvbnMuY29udGFpbnMoRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCk7CiAgICAgc2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDkgKzk5LDYgQEAgc3Ry
dWN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczsKICNlbmRpZgogCiBlbnVtIFRlbXBvcmFyeVNl
bGVjdGlvbk9wdGlvbiA6IHVpbnQ4X3QgewotICAgIC8vIEJ5IGRlZmF1bHQsIG5vIGFkZGl0aW9u
YWwgb3B0aW9ucyBhcmUgZW5hYmxlZC4KLSAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25EZWZh
dWx0ID0gMCwKLQogICAgIC8vIFNjcm9sbCB0byByZXZlYWwgdGhlIHNlbGVjdGlvbi4KICAgICBU
ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25SZXZlYWxTZWxlY3Rpb24gPSAxIDw8IDAsCiAKQEAgLTEx
MiwxNiArMTA5LDE0IEBAIGVudW0gVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uIDogdWludDhfdCAK
ICAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyA9IDEg
PDwgMgogfTsKIAotdXNpbmcgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyA9IHVpbnQ4X3Q7Ci0K
IGNsYXNzIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSB7CiBwdWJsaWM6Ci0gICAgVGVtcG9yYXJ5
U2VsZWN0aW9uQ2hhbmdlKEZyYW1lJiwgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiA9
IHN0ZDo6bnVsbG9wdCwgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyA9IFRlbXBvcmFyeVNlbGVj
dGlvbk9wdGlvbkRlZmF1bHQpOworICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZShGcmFtZSYs
IHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gPSBzdGQ6Om51bGxvcHQsIE9wdGlvblNl
dDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+ID0geyB9KTsKICAgICB+VGVtcG9yYXJ5U2VsZWN0
aW9uQ2hhbmdlKCk7CiAKIHByaXZhdGU6CiAgICAgUmVmPEZyYW1lPiBtX2ZyYW1lOwotICAgIFRl
bXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMgbV9vcHRpb25zOworICAgIE9wdGlvblNldDxUZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb24+IG1fb3B0aW9uczsKICAgICBib29sIG1fd2FzSWdub3JpbmdTZWxl
Y3Rpb25DaGFuZ2VzOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fYXBwZWFyYW5jZVVw
ZGF0ZXNXZXJlRW5hYmxlZDsKQEAgLTQxNCw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSW50UmVjdCBmaXJzdFJlY3RGb3JSYW5nZShSYW5nZSopIGNvbnN0OwogCiAgICAg
dm9pZCBzZWxlY3Rpb25XaWxsQ2hhbmdlKCk7Ci0gICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhbWVTZWxlY3Rp
b246OlNldFNlbGVjdGlvbk9wdGlvbnMpOworICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIE9wdGlvblNldDxGcmFt
ZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAgICAgYm9vbCBzaG91bGRDaGFuZ2VT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGlu
ZykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgY291bnRNYXRjaGVzRm9yVGV4
dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9v
bCBtYXJrTWF0Y2hlcywgVmVjdG9yPFJlZlB0cjxSYW5nZT4+Kik7CkBAIC01NDEsNyArNTM2LDcg
QEAgcHJpdmF0ZToKICAgICBlbnVtIFNldENvbXBvc2l0aW9uTW9kZSB7IENvbmZpcm1Db21wb3Np
dGlvbiwgQ2FuY2VsQ29tcG9zaXRpb24gfTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYsIFNldENvbXBvc2l0aW9uTW9kZSk7CiAKLSAgICB2b2lkIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEZyYW1l
U2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB2b2lkIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIE9wdGlv
blNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAKICAgICBlbnVtIEVk
aXRvckFjdGlvblNwZWNpZmllciB7IEN1dEFjdGlvbiwgQ29weUFjdGlvbiB9OwogICAgIHZvaWQg
cGVyZm9ybUN1dE9yQ29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVdpdGhvdXRWYWxpZGF0
aQogICAgIG5ld1NlbGVjdGlvbi5zZXRXaXRob3V0VmFsaWRhdGlvbihiYXNlLCBleHRlbnQpOwog
ICAgIG5ld1NlbGVjdGlvbi5zZXRJc0RpcmVjdGlvbmFsKHNlbGVjdGlvbkhhc0RpcmVjdGlvbik7
CiAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgbmV3SW50ZW50ID0gaW50ZW50LnR5cGUgPT0g
QVhUZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93biA/IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4
dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFy
aXR5VW5rbm93biwgZmFsc2UgfSkgOiBpbnRlbnQ7Ci0gICAgU2V0U2VsZWN0aW9uT3B0aW9ucyBv
cHRpb25zID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKTsKKyAgICBhdXRvIG9wdGlvbnMg
PSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwogICAgIGlmICghc2hvdWxkU2V0Rm9jdXMp
CiAgICAgICAgIG9wdGlvbnMgfD0gRG9Ob3RTZXRGb2N1czsKICAgICBzd2l0Y2ggKHJldmVhbE1v
ZGUpIHsKQEAgLTI5MSwxMCArMjkxLDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkJ5TW91c2UKICAgICBzZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBkZWZhdWx0U2V0U2Vs
ZWN0aW9uT3B0aW9ucygpIHwgRmlyZVNlbGVjdEV2ZW50LCBpbnRlbnQsIEFsaWduQ3Vyc29yT25T
Y3JvbGxJZk5lZWRlZCwgZ3JhbnVsYXJpdHkpOwogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIG5ld1NlbGVjdGlvblBvc3NpYmx5V2l0aG91dERpcmVjdGlvbiwgU2V0U2VsZWN0aW9uT3B0
aW9ucyBvcHRpb25zLCBDdXJzb3JBbGlnbk9uU2Nyb2xsIGFsaWduLCBUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCitib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBk
YXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvblBvc3Np
Ymx5V2l0aG91dERpcmVjdGlvbiwgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9u
cywgQ3Vyc29yQWxpZ25PblNjcm9sbCBhbGlnbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQogewotICAgIGJvb2wgY2xvc2VUeXBpbmcgPSBvcHRpb25zICYgQ2xvc2VUeXBpbmc7Ci0gICAg
Ym9vbCBzaG91bGRDbGVhclR5cGluZ1N0eWxlID0gb3B0aW9ucyAmIENsZWFyVHlwaW5nU3R5bGU7
CisgICAgYm9vbCBjbG9zZVR5cGluZyA9IG9wdGlvbnMuY29udGFpbnMoQ2xvc2VUeXBpbmcpOwor
ICAgIGJvb2wgc2hvdWxkQ2xlYXJUeXBpbmdTdHlsZSA9IG9wdGlvbnMuY29udGFpbnMoQ2xlYXJU
eXBpbmdTdHlsZSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IG5ld1Nl
bGVjdGlvblBvc3NpYmx5V2l0aG91dERpcmVjdGlvbjsKICAgICBpZiAoc2hvdWxkQWx3YXlzVXNl
RGlyZWN0aW9uYWxTZWxlY3Rpb24obV9mcmFtZSkpCkBAIC0zMzgsNyArMzM4LDcgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uV2l0aG91dAogCiAgICAgLy8gU2VsZWN0aW9uIG9m
ZnNldHMgc2hvdWxkIGluY3JlYXNlIHdoZW4gTEYgaXMgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBjYXJl
dCBpbiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLiBTZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzU2
MDYxPi4KICAgICBpZiAoSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHRDb250cm9sID0g
ZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG5ld1NlbGVjdGlvbi5zdGFydCgpKSkKLSAgICAgICAg
dGV4dENvbnRyb2wtPnNlbGVjdGlvbkNoYW5nZWQob3B0aW9ucyAmIEZpcmVTZWxlY3RFdmVudCk7
CisgICAgICAgIHRleHRDb250cm9sLT5zZWxlY3Rpb25DaGFuZ2VkKG9wdGlvbnMuY29udGFpbnMo
RmlyZVNlbGVjdEV2ZW50KSk7CiAKICAgICBpZiAoIWRpZE11dGF0ZVNlbGVjdGlvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDcgKzM1OCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGlvbldpdGhvdXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGcmFtZVNl
bGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwg
U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zLCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRl
bnQsIEN1cnNvckFsaWduT25TY3JvbGwgYWxpZ24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24sIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIEFY
VGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudCwgQ3Vyc29yQWxpZ25PblNjcm9sbCBhbGlnbiwg
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVj
dGVkRnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKCFzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdB
cHBlYXJhbmNlKHNlbGVjdGlvbiwgb3B0aW9ucywgYWxpZ24sIGdyYW51bGFyaXR5KSkKQEAgLTE5
OTMsMTUgKzE5OTMsMjIgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShS
YQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIE9wdGlvblNldDxTZXRTZWxl
Y3Rpb25PcHRpb24+IHNlbGVjdGlvbk9wdGlvbnMgeyAgQ2xlYXJUeXBpbmdTdHlsZSB9OworICAg
IGlmIChjbG9zZVR5cGluZykKKyAgICAgICAgc2VsZWN0aW9uT3B0aW9ucyB8PSBDbG9zZVR5cGlu
ZzsKKwogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpIHsKICAgICAgICAg
RnJhbWVTZWxlY3Rpb24gdHJpYWxGcmFtZVNlbGVjdGlvbjsKLSAgICAgICAgdHJpYWxGcmFtZVNl
bGVjdGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBDbGVhclR5cGluZ1N0eWxlIHwgKGNs
b3NlVHlwaW5nID8gQ2xvc2VUeXBpbmcgOiAwKSk7CisKKyAgICAgICAgdHJpYWxGcmFtZVNlbGVj
dGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBzZWxlY3Rpb25PcHRpb25zKTsKIAogICAg
ICAgICBpZiAoIXNob3VsZENoYW5nZVNlbGVjdGlvbih0cmlhbEZyYW1lU2VsZWN0aW9uLnNlbGVj
dGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzZWxlY3Rpb25P
cHRpb25zIHw9IElzVXNlclRyaWdnZXJlZDsKICAgICB9CiAKLSAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBDbGVhclR5cGluZ1N0eWxlIHwgKGNsb3NlVHlwaW5nID8gQ2xvc2VUeXBpbmcg
OiAwKSB8ICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQgPyBJc1VzZXJUcmlnZ2VyZWQg
OiAwKSk7CisgICAgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgc2VsZWN0aW9uT3B0aW9ucyk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2OTAsNyArMjY5Nyw4IEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnNlbGVjdFJhbmdlT25FbGVtZW4KICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQo
bm9kZSwgbG9jYXRpb24pOwogICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQobm9kZSwgbG9jYXRpb24g
KyBsZW5ndGgpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbigqcmVzdWx0UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKLSAgICBzZXRTZWxlY3Rp
b24oc2VsZWN0aW9uLCB0cnVlKTsKKyAgICAvLyBGSVhNRTogVGhlIHNlY29uZCBhcmd1bWVudCB3
YXMgInRydWUiIHdoaWNoIGltcGxpY2l0bHkgY29udmVydGVkIHRvIG9wdGlvbiAiRmlyZVNlbGVj
dEV2ZW50Ii4gSXMgdGhpcyBjb3JyZWN0PworICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHsg
RmlyZVNlbGVjdEV2ZW50IH0pOwogfQogCiBWaXNpYmxlU2VsZWN0aW9uIEZyYW1lU2VsZWN0aW9u
Ojp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmgJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDEwICsxMjksMTIgQEAgcHVibGljOgog
ICAgICAgICBSZXZlYWxTZWxlY3Rpb24gPSAxIDw8IDcsCiAgICAgICAgIFJldmVhbFNlbGVjdGlv
blVwVG9NYWluRnJhbWUgPSAxIDw8IDgsCiAgICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFNl
dFNlbGVjdGlvbk9wdGlvbnM7IC8vIFVuaW9uIG9mIHZhbHVlcyBpbiBTZXRTZWxlY3Rpb25PcHRp
b24gYW5kIEVVc2VyVHJpZ2dlcmVkCi0gICAgc3RhdGljIGlubGluZSBTZXRTZWxlY3Rpb25PcHRp
b25zIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2Vy
ZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKQorICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFNl
dFNlbGVjdGlvbk9wdGlvbj4gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoRVVzZXJUcmlnZ2Vy
ZWQgdXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpCiAgICAgewotICAgICAgICByZXR1
cm4gQ2xvc2VUeXBpbmcgfCBDbGVhclR5cGluZ1N0eWxlIHwgKHVzZXJUcmlnZ2VyZWQgPyAoUmV2
ZWFsU2VsZWN0aW9uIHwgRmlyZVNlbGVjdEV2ZW50IHwgSXNVc2VyVHJpZ2dlcmVkKSA6IDApOwor
ICAgICAgICBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zIHsgQ2xvc2VUeXBp
bmcsIENsZWFyVHlwaW5nU3R5bGUgfTsKKyAgICAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNl
clRyaWdnZXJlZCkKKyAgICAgICAgICAgIG9wdGlvbnMgfD0geyBSZXZlYWxTZWxlY3Rpb24sIEZp
cmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVkIH07CisgICAgICAgIHJldHVybiBvcHRpb25z
OwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYW1lU2VsZWN0aW9uKEZy
YW1lKiA9IG51bGxwdHIpOwpAQCAtMTQ3LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1v
dmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBi
b29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwgYm9vbCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9u
UmV2ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVD
aGFuZ2VJbnRlbnQoKSk7CiAKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBTZXRTZWxlY3Rpb25PcHRpb25z
ID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQg
PSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25D
dXJzb3JPblNjcm9sbElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+ID0gZGVmYXVsdFNldFNl
bGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgPSBBWFRleHRTdGF0ZUNo
YW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9sbElm
TmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFmZmluaXR5LCBib29s
IGNsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0QWxsKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhcigpOwpAQCAtMjgyLDcgKzI4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVBbmRS
ZXZlYWxTZWxlY3Rpb24oY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKICAgICB2b2lk
IHVwZGF0ZURhdGFEZXRlY3RvcnNGb3JTZWxlY3Rpb24oKTsKIAotICAgIGJvb2wgc2V0U2VsZWN0
aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgU2V0
U2VsZWN0aW9uT3B0aW9ucywgQ3Vyc29yQWxpZ25PblNjcm9sbCwgVGV4dEdyYW51bGFyaXR5KTsK
KyAgICBib29sIHNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+LCBDdXJzb3JBbGln
bk9uU2Nyb2xsLCBUZXh0R3JhbnVsYXJpdHkpOwogCiAgICAgdm9pZCByZXNwb25kVG9Ob2RlTW9k
aWZpY2F0aW9uKE5vZGUmLCBib29sIGJhc2VSZW1vdmVkLCBib29sIGV4dGVudFJlbW92ZWQsIGJv
b2wgc3RhcnRSZW1vdmVkLCBib29sIGVuZFJlbW92ZWQpOwogICAgIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
b3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgICAgICAvLyBEb2N1bWVudCB3YXMgbW9kaWZpZWQgb3V0IGZyb20gdW5kZXIgdXMuCiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRP
cHRpb25zIG9wdGlvbnMgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1l
bnQgfCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3Rpbmc7CisgICAgT3B0aW9u
U2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICBpZiAobV9zbWFydEluc2VydCkKICAgICAg
ICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAkocmV2aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw3ICszNzcsNyBA
QCBpbmxpbmUgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SW5zCiAgICAgICAgIG1fbGFz
dE5vZGVJbnNlcnRlZCA9IG5ld05vZGU7CiB9CiAKLVJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiYmIGZyYWdtZW50LCBDb21tYW5kT3B0aW9ucyBvcHRpb25zLCBFZGl0QWN0aW9u
IGVkaXRBY3Rpb24pCitSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFn
bWVudCwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+IG9wdGlvbnMsIEVkaXRBY3Rpb24gZWRpdEFj
dGlvbikKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50LCBlZGl0QWN0aW9uKQog
ICAgICwgbV9zZWxlY3RSZXBsYWNlbWVudChvcHRpb25zICYgU2VsZWN0UmVwbGFjZW1lbnQpCiAg
ICAgLCBtX3NtYXJ0UmVwbGFjZShvcHRpb25zICYgU21hcnRSZXBsYWNlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAkocmV2aXNp
b24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
SWdub3JlTWFpbEJsb2NrcXVvdGUgPSAxIDw8IDYsCiAgICAgfTsKIAotICAgIHR5cGVkZWYgdW5z
aWduZWQgQ29tbWFuZE9wdGlvbnM7Ci0KLSAgICBzdGF0aWMgUmVmPFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4mJiBmcmFnbWVudCwgQ29tbWFuZE9wdGlvbnMgb3B0aW9ucywgRWRpdEFjdGlvbiBlZGl0aW5n
QWN0aW9uID0gRWRpdEFjdGlvbkluc2VydCkKKyAgICBzdGF0aWMgUmVmPFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiBmcmFnbWVudCwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+IG9wdGlvbnMsIEVkaXRB
Y3Rpb24gZWRpdGluZ0FjdGlvbiA9IEVkaXRBY3Rpb25JbnNlcnQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChkb2N1bWVudCwgV1RG
TW92ZShmcmFnbWVudCksIG9wdGlvbnMsIGVkaXRpbmdBY3Rpb24pKTsKICAgICB9CkBAIC01NSw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb25G
b3JJbnNlcnRlZFRleHQoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVTZWxlY3Rpb25Gb3JJbnNl
cnRlZFRleHQ7IH0KIAogcHJpdmF0ZToKLSAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1
bWVudCYsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmLCBDb21tYW5kT3B0aW9ucywgRWRpdEFj
dGlvbik7CisgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQmLCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4mJiwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+LCBFZGl0QWN0aW9uKTsK
IAogICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IGlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdCBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2
aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21t
YW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNldFNlbGVjdGlvbkNvbW1hbmQ6OlNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9u
T3B0aW9ucyBvcHRpb25zKQorU2V0U2VsZWN0aW9uQ29tbWFuZDo6U2V0U2VsZWN0aW9uQ29tbWFu
ZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIE9wdGlvblNldDxGcmFtZVNlbGVj
dGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zKQogICAgIDogU2ltcGxlRWRpdENvbW1h
bmQoc2VsZWN0aW9uLmJhc2UoKS5hbmNob3JOb2RlKCktPmRvY3VtZW50KCkpCiAgICAgLCBtX29w
dGlvbnMob3B0aW9ucykKICAgICAsIG1fc2VsZWN0aW9uVG9TZXQoc2VsZWN0aW9uKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9u
IDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTZXRTZWxlY3Rpb25Db21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNldFNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rp
b25PcHRpb25zIG9wdGlvbnMpCisgICAgc3RhdGljIFJlZjxTZXRTZWxlY3Rpb25Db21tYW5kPiBj
cmVhdGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBPcHRpb25TZXQ8RnJhbWVT
ZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNldFNlbGVjdGlvbkNvbW1hbmQoc2VsZWN0aW9uLCBvcHRpb25z
KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAg
ICBTZXRTZWxlY3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8
RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4pOwogCiAgICAgdm9pZCBkb0FwcGx5
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+
Jikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAotICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rp
b25PcHRpb25zIG1fb3B0aW9uczsKKyAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNl
bGVjdGlvbk9wdGlvbj4gbV9vcHRpb25zOwogICAgIFZpc2libGVTZWxlY3Rpb24gbV9zZWxlY3Rp
b25Ub1NldDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDcgKzM2MCw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUkKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M6IHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlv
biBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgICAgIGlm
IChmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0aXRsZSwgc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkgewotICAg
ICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb25zIHJlcGxhY2VP
cHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUgfCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3Rpbmc7CisgICAgICAgICAgICBPcHRpb25TZXQ8UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IHJlcGxhY2VPcHRpb25zIHsgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpQcmV2ZW50TmVzdGluZyB9OwogCiAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJl
aGF2aW9yKCkuc2hvdWxkQWxsb3dTcGVsbGluZ1N1Z2dlc3Rpb25zV2l0aG91dFNlbGVjdGlvbigp
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ3
OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTk1LDcgKzU5NSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoY28KICAgICAgICAgICAgIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZnJhZ21l
bnQucmVsZWFzZU5vbk51bGwoKSwgZHJhZ0NhcmV0LmJhc2UoKSwgc21hcnRJbnNlcnQsIHNtYXJ0
RGVsZXRlKS0+YXBwbHkoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChzZXRT
ZWxlY3Rpb25Ub0RyYWdDYXJldChpbm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBw
b2ludCkpIHsKLSAgICAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFu
ZE9wdGlvbnMgb3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNl
bWVudCB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZzsKKyAgICAgICAg
ICAgICAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+
IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgICAgICAgICAgICAg
IGlmIChkcmFnRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgICAgICAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOwogICAgICAgICAg
ICAgICAgIGlmIChjaG9zZVBsYWluVGV4dCkKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKGNvCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQoaW5uZXJGcmFtZS5nZXQoKSwg
ZHJhZ0NhcmV0LCByYW5nZSwgcG9pbnQpKQotICAgICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OmNyZWF0ZSgqbV9kb2N1bWVudFVuZGVyTW91c2UsIGZyYWdtZW50LmdldCgpLCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQgfCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6TWF0Y2hTdHlsZSB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVz
dGluZywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHkoKTsKKyAgICAgICAgICAgIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoKm1fZG9jdW1lbnRVbmRlck1vdXNlLCBmcmFn
bWVudC5nZXQoKSwgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQs
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlLCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6UHJldmVudE5lc3RpbmcgfSwgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHko
KTsKICAgICB9CiAKICAgICBpZiAocm9vdEVkaXRhYmxlRWxlbWVudCkgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmUKICAgICBSZWY8
RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgVGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9ucyB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zID0gVGVtcG9yYXJ5U2VsZWN0
aW9uT3B0aW9uRGVmYXVsdDsKKyAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9u
PiB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNl
bGVjdGlvbkNoYW5nZXM7CiAgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlczsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347008</attachid>
            <date>2018-08-13 03:44:08 -0700</date>
            <delta_ts>2018-08-13 04:10:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-editor-9.patch</filename>
            <type>text/plain</type>
            <size>26473</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTA4LTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IG1vcmUg
aW4gZWRpdGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUeXBlc2FmZSBmbGFncy4KKworICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1v
dmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZTo6VGVt
cG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlk
YXRpb25Ubyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9u
V2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlv
bnMpOgorICAgICAgICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKToKKyAgICAgICAg
KiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5nL1NldFNl
bGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0U2VsZWN0aW9uQ29tbWFu
ZDo6U2V0U2VsZWN0aW9uQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9TZXRTZWxlY3Rpb25D
b21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXRTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUp
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UpOgorCiAyMDE4LTA4LTEyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2UgYXQgV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg5LDcgKzE0ODksNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihkZXN0aW5hdGlvbiwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CiAg
ICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwotICAgIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBvcHRpb25zID0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Ok1vdmluZ1BhcmFncmFwaDsKKyAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsK
ICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCiAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50
KSwgb3B0aW9ucykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24g
MjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAotVGVtcG9yYXJ5U2Vs
ZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmIGZyYW1lLCBzdGQ6
Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IHRlbXBvcmFyeVNlbGVjdGlvbiwgVGVtcG9yYXJ5
U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQorVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpUZW1w
b3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmIGZyYW1lLCBzdGQ6Om9wdGlvbmFsPFZpc2libGVT
ZWxlY3Rpb24+IHRlbXBvcmFyeVNlbGVjdGlvbiwgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlv
bk9wdGlvbj4gb3B0aW9ucykKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX29wdGlvbnMo
b3B0aW9ucykKICAgICAsIG1fd2FzSWdub3JpbmdTZWxlY3Rpb25DaGFuZ2VzKGZyYW1lLmVkaXRv
cigpLmlnbm9yZVNlbGVjdGlvbkNoYW5nZXMoKSkKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVuCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZWRpdGluZ0FjdGlvbiA9PSBFZGl0QWN0aW9uUGFz
dGUpCiAgICAgICAgIHJlcGxhY2VkVGV4dCA9IEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQoc2Vs
ZWN0aW9uKTsKIAotICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBv
cHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIHwgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OlNhbml0aXplRnJhZ21lbnQ7CisgICAgT3B0aW9uU2V0PFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2Fu
aXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNlbWVudCkKICAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAg
aWYgKHNtYXJ0UmVwbGFjZSkKQEAgLTEwNzMsNyArMTA3Myw5IEBAIHZvaWQgRWRpdG9yOjphcHBs
aWVkRWRpdGluZyhDb21wb3NpdGVFZGkKIAogICAgIGlmIChjb21tYW5kLmlzVG9wTGV2ZWxDb21t
YW5kKCkpIHsKICAgICAgICAgLy8gRG9uJ3QgY2xlYXIgdGhlIHR5cGluZyBzdHlsZSB3aXRoIHRo
aXMgc2VsZWN0aW9uIGNoYW5nZS4gV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBuZWNl
c3NhcnkuCi0gICAgICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlv
bnMgPSBjb21tYW5kLmlzRGljdGF0aW9uQ29tbWFuZCgpID8gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCA6IDA7CisgICAgICAgIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0
U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zOworICAgICAgICBpZiAoY29tbWFuZC5pc0RpY3RhdGlv
bkNvbW1hbmQoKSkKKyAgICAgICAgICAgIG9wdGlvbnMgfD0gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZDsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3
U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0xNzgxLDcgKzE3ODMsNyBAQCB2b2lkIEVk
aXRvcjo6c2VsZWN0Q29tcG9zaXRpb24oKQogICAgIC8vIFNlZSA8aHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODE+CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b247CiAgICAgc2VsZWN0aW9uLnNldFdpdGhvdXRWYWxpZGF0aW9uKHJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihzZWxlY3Rpb24sIDApOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKHNlbGVjdGlvbiwgeyB9KTsKIH0KIAogdm9pZCBFZGl0b3I6OmNvbmZpcm1Db21wb3Np
dGlvbigpCkBAIC0yOTg0LDcgKzI5ODYsNyBAQCB2b2lkIEVkaXRvcjo6c2V0SWdub3JlU2VsZWN0
aW9uQ2hhbmdlcyhiCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBTaG91bGQgc3Vw
cHJlc3Mgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIGR1cmluZyBhIGNvbXBvc2l0aW9u
IGNoYW5nZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMzg4MzA+IAogICAgIGlmICghaWdub3JlKQot
ICAgICAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCksIDApOworICAgICAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIHsgfSk7CiAjZW5kaWYKICAgICBpZiAoIWlnbm9yZSAm
JiBzaG91bGRSZXZlYWxFeGlzdGluZ1NlbGVjdGlvbiA9PSBSZXZlYWxTZWxlY3Rpb246OlllcykK
ICAgICAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50KTsKQEAgLTMxMDcsNyArMzEw
OSw3IEBAIHZvaWQgRWRpdG9yOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsQXNJZ24KICAgICBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmRpc21pc3MoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dElnbm9yZWQpOwogfQogCi12b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxl
Y3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK3ZvaWQgRWRpdG9yOjpjaGFuZ2VT
ZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9u
LCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykK
IHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rpb24obV9mcmFtZSk7CiAKQEAgLTM0NzAsNyArMzQ3
Miw3IEBAIHZvaWQgRWRpdG9yOjpzZWxlY3Rpb25XaWxsQ2hhbmdlKCkKIH0KICNlbmRpZgogCi12
b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK3ZvaWQg
RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
LCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykK
IHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IFNob3VsZCBzdXBwcmVzcyBzZWxl
Y3Rpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMgZHVyaW5nIGEgY29tcG9zaXRpb24gY2hhbmdlIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8zODgzMD4gCkBAIC0zNDkyLDkgKzM0OTQsOCBAQCB2b2lkIEVk
aXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIERvbid0IGNoZWNrIHNwZWxsaW5nIGFuZCBncmFtbWFyIGlmIHRoZSBjaGFuZ2Ugb2Ygc2Vs
ZWN0aW9uIGlzIHRyaWdnZXJlZCBieSBzcGVsbGluZyBjb3JyZWN0aW9uIGl0c2VsZi4KLSAgICBt
X2VkaXRvclVJVXBkYXRlVGltZXJTaG91bGRDaGVja1NwZWxsaW5nQW5kR3JhbW1hciA9IG9wdGlv
bnMgJiBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcKLSAgICAgICAgJiYgIShvcHRpb25zICYg
RnJhbWVTZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7Ci0gICAgbV9lZGl0b3JV
SVVwZGF0ZVRpbWVyV2FzVHJpZ2dlcmVkQnlEaWN0YXRpb24gPSBvcHRpb25zICYgRnJhbWVTZWxl
Y3Rpb246OkRpY3RhdGlvblRyaWdnZXJlZDsKKyAgICBtX2VkaXRvclVJVXBkYXRlVGltZXJTaG91
bGRDaGVja1NwZWxsaW5nQW5kR3JhbW1hciA9IG9wdGlvbnMuY29udGFpbnMoRnJhbWVTZWxlY3Rp
b246OkNsb3NlVHlwaW5nKSAmJiAhb3B0aW9ucy5jb250YWlucyhGcmFtZVNlbGVjdGlvbjo6U3Bl
bGxDb3JyZWN0aW9uVHJpZ2dlcmVkKTsKKyAgICBtX2VkaXRvclVJVXBkYXRlVGltZXJXYXNUcmln
Z2VyZWRCeURpY3RhdGlvbiA9IG9wdGlvbnMuY29udGFpbnMoRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCk7CiAgICAgc2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDkgKzk5LDYgQEAgc3Ry
dWN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczsKICNlbmRpZgogCiBlbnVtIFRlbXBvcmFyeVNl
bGVjdGlvbk9wdGlvbiA6IHVpbnQ4X3QgewotICAgIC8vIEJ5IGRlZmF1bHQsIG5vIGFkZGl0aW9u
YWwgb3B0aW9ucyBhcmUgZW5hYmxlZC4KLSAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25EZWZh
dWx0ID0gMCwKLQogICAgIC8vIFNjcm9sbCB0byByZXZlYWwgdGhlIHNlbGVjdGlvbi4KICAgICBU
ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25SZXZlYWxTZWxlY3Rpb24gPSAxIDw8IDAsCiAKQEAgLTEx
MiwxNiArMTA5LDE0IEBAIGVudW0gVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uIDogdWludDhfdCAK
ICAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyA9IDEg
PDwgMgogfTsKIAotdXNpbmcgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyA9IHVpbnQ4X3Q7Ci0K
IGNsYXNzIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSB7CiBwdWJsaWM6Ci0gICAgVGVtcG9yYXJ5
U2VsZWN0aW9uQ2hhbmdlKEZyYW1lJiwgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiA9
IHN0ZDo6bnVsbG9wdCwgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyA9IFRlbXBvcmFyeVNlbGVj
dGlvbk9wdGlvbkRlZmF1bHQpOworICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZShGcmFtZSYs
IHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gPSBzdGQ6Om51bGxvcHQsIE9wdGlvblNl
dDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+ID0geyB9KTsKICAgICB+VGVtcG9yYXJ5U2VsZWN0
aW9uQ2hhbmdlKCk7CiAKIHByaXZhdGU6CiAgICAgUmVmPEZyYW1lPiBtX2ZyYW1lOwotICAgIFRl
bXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMgbV9vcHRpb25zOworICAgIE9wdGlvblNldDxUZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb24+IG1fb3B0aW9uczsKICAgICBib29sIG1fd2FzSWdub3JpbmdTZWxl
Y3Rpb25DaGFuZ2VzOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fYXBwZWFyYW5jZVVw
ZGF0ZXNXZXJlRW5hYmxlZDsKQEAgLTQxNCw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSW50UmVjdCBmaXJzdFJlY3RGb3JSYW5nZShSYW5nZSopIGNvbnN0OwogCiAgICAg
dm9pZCBzZWxlY3Rpb25XaWxsQ2hhbmdlKCk7Ci0gICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhbWVTZWxlY3Rp
b246OlNldFNlbGVjdGlvbk9wdGlvbnMpOworICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIE9wdGlvblNldDxGcmFt
ZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAgICAgYm9vbCBzaG91bGRDaGFuZ2VT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGlu
ZykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgY291bnRNYXRjaGVzRm9yVGV4
dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9v
bCBtYXJrTWF0Y2hlcywgVmVjdG9yPFJlZlB0cjxSYW5nZT4+Kik7CkBAIC01NDEsNyArNTM2LDcg
QEAgcHJpdmF0ZToKICAgICBlbnVtIFNldENvbXBvc2l0aW9uTW9kZSB7IENvbmZpcm1Db21wb3Np
dGlvbiwgQ2FuY2VsQ29tcG9zaXRpb24gfTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYsIFNldENvbXBvc2l0aW9uTW9kZSk7CiAKLSAgICB2b2lkIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEZyYW1l
U2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB2b2lkIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIE9wdGlv
blNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAKICAgICBlbnVtIEVk
aXRvckFjdGlvblNwZWNpZmllciB7IEN1dEFjdGlvbiwgQ29weUFjdGlvbiB9OwogICAgIHZvaWQg
cGVyZm9ybUN1dE9yQ29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVdpdGhvdXRWYWxpZGF0
aQogICAgIG5ld1NlbGVjdGlvbi5zZXRXaXRob3V0VmFsaWRhdGlvbihiYXNlLCBleHRlbnQpOwog
ICAgIG5ld1NlbGVjdGlvbi5zZXRJc0RpcmVjdGlvbmFsKHNlbGVjdGlvbkhhc0RpcmVjdGlvbik7
CiAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgbmV3SW50ZW50ID0gaW50ZW50LnR5cGUgPT0g
QVhUZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93biA/IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4
dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFy
aXR5VW5rbm93biwgZmFsc2UgfSkgOiBpbnRlbnQ7Ci0gICAgU2V0U2VsZWN0aW9uT3B0aW9ucyBv
cHRpb25zID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKTsKKyAgICBhdXRvIG9wdGlvbnMg
PSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwogICAgIGlmICghc2hvdWxkU2V0Rm9jdXMp
CiAgICAgICAgIG9wdGlvbnMgfD0gRG9Ob3RTZXRGb2N1czsKICAgICBzd2l0Y2ggKHJldmVhbE1v
ZGUpIHsKQEAgLTI5MSwxMCArMjkxLDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkJ5TW91c2UKICAgICBzZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBkZWZhdWx0U2V0U2Vs
ZWN0aW9uT3B0aW9ucygpIHwgRmlyZVNlbGVjdEV2ZW50LCBpbnRlbnQsIEFsaWduQ3Vyc29yT25T
Y3JvbGxJZk5lZWRlZCwgZ3JhbnVsYXJpdHkpOwogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIG5ld1NlbGVjdGlvblBvc3NpYmx5V2l0aG91dERpcmVjdGlvbiwgU2V0U2VsZWN0aW9uT3B0
aW9ucyBvcHRpb25zLCBDdXJzb3JBbGlnbk9uU2Nyb2xsIGFsaWduLCBUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCitib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBk
YXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvblBvc3Np
Ymx5V2l0aG91dERpcmVjdGlvbiwgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9u
cywgQ3Vyc29yQWxpZ25PblNjcm9sbCBhbGlnbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQogewotICAgIGJvb2wgY2xvc2VUeXBpbmcgPSBvcHRpb25zICYgQ2xvc2VUeXBpbmc7Ci0gICAg
Ym9vbCBzaG91bGRDbGVhclR5cGluZ1N0eWxlID0gb3B0aW9ucyAmIENsZWFyVHlwaW5nU3R5bGU7
CisgICAgYm9vbCBjbG9zZVR5cGluZyA9IG9wdGlvbnMuY29udGFpbnMoQ2xvc2VUeXBpbmcpOwor
ICAgIGJvb2wgc2hvdWxkQ2xlYXJUeXBpbmdTdHlsZSA9IG9wdGlvbnMuY29udGFpbnMoQ2xlYXJU
eXBpbmdTdHlsZSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IG5ld1Nl
bGVjdGlvblBvc3NpYmx5V2l0aG91dERpcmVjdGlvbjsKICAgICBpZiAoc2hvdWxkQWx3YXlzVXNl
RGlyZWN0aW9uYWxTZWxlY3Rpb24obV9mcmFtZSkpCkBAIC0zMzgsNyArMzM4LDcgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uV2l0aG91dAogCiAgICAgLy8gU2VsZWN0aW9uIG9m
ZnNldHMgc2hvdWxkIGluY3JlYXNlIHdoZW4gTEYgaXMgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBjYXJl
dCBpbiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLiBTZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzU2
MDYxPi4KICAgICBpZiAoSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHRDb250cm9sID0g
ZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG5ld1NlbGVjdGlvbi5zdGFydCgpKSkKLSAgICAgICAg
dGV4dENvbnRyb2wtPnNlbGVjdGlvbkNoYW5nZWQob3B0aW9ucyAmIEZpcmVTZWxlY3RFdmVudCk7
CisgICAgICAgIHRleHRDb250cm9sLT5zZWxlY3Rpb25DaGFuZ2VkKG9wdGlvbnMuY29udGFpbnMo
RmlyZVNlbGVjdEV2ZW50KSk7CiAKICAgICBpZiAoIWRpZE11dGF0ZVNlbGVjdGlvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDcgKzM1OCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGlvbldpdGhvdXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGcmFtZVNl
bGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwg
U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zLCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRl
bnQsIEN1cnNvckFsaWduT25TY3JvbGwgYWxpZ24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24sIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIEFY
VGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudCwgQ3Vyc29yQWxpZ25PblNjcm9sbCBhbGlnbiwg
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVj
dGVkRnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKCFzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdB
cHBlYXJhbmNlKHNlbGVjdGlvbiwgb3B0aW9ucywgYWxpZ24sIGdyYW51bGFyaXR5KSkKQEAgLTE5
OTMsMTUgKzE5OTMsMjIgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShS
YQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIE9wdGlvblNldDxTZXRTZWxl
Y3Rpb25PcHRpb24+IHNlbGVjdGlvbk9wdGlvbnMgeyAgQ2xlYXJUeXBpbmdTdHlsZSB9OworICAg
IGlmIChjbG9zZVR5cGluZykKKyAgICAgICAgc2VsZWN0aW9uT3B0aW9ucyB8PSBDbG9zZVR5cGlu
ZzsKKwogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpIHsKICAgICAgICAg
RnJhbWVTZWxlY3Rpb24gdHJpYWxGcmFtZVNlbGVjdGlvbjsKLSAgICAgICAgdHJpYWxGcmFtZVNl
bGVjdGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBDbGVhclR5cGluZ1N0eWxlIHwgKGNs
b3NlVHlwaW5nID8gQ2xvc2VUeXBpbmcgOiAwKSk7CisKKyAgICAgICAgdHJpYWxGcmFtZVNlbGVj
dGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBzZWxlY3Rpb25PcHRpb25zKTsKIAogICAg
ICAgICBpZiAoIXNob3VsZENoYW5nZVNlbGVjdGlvbih0cmlhbEZyYW1lU2VsZWN0aW9uLnNlbGVj
dGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzZWxlY3Rpb25P
cHRpb25zIHw9IElzVXNlclRyaWdnZXJlZDsKICAgICB9CiAKLSAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBDbGVhclR5cGluZ1N0eWxlIHwgKGNsb3NlVHlwaW5nID8gQ2xvc2VUeXBpbmcg
OiAwKSB8ICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQgPyBJc1VzZXJUcmlnZ2VyZWQg
OiAwKSk7CisgICAgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgc2VsZWN0aW9uT3B0aW9ucyk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2OTAsNyArMjY5Nyw4IEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnNlbGVjdFJhbmdlT25FbGVtZW4KICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQo
bm9kZSwgbG9jYXRpb24pOwogICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQobm9kZSwgbG9jYXRpb24g
KyBsZW5ndGgpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbigqcmVzdWx0UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKLSAgICBzZXRTZWxlY3Rp
b24oc2VsZWN0aW9uLCB0cnVlKTsKKyAgICAvLyBGSVhNRTogVGhlIHNlY29uZCBhcmd1bWVudCB3
YXMgInRydWUiIHdoaWNoIGltcGxpY2l0bHkgY29udmVydGVkIHRvIG9wdGlvbiAiRmlyZVNlbGVj
dEV2ZW50Ii4gSXMgdGhpcyBjb3JyZWN0PworICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHsg
RmlyZVNlbGVjdEV2ZW50IH0pOwogfQogCiBWaXNpYmxlU2VsZWN0aW9uIEZyYW1lU2VsZWN0aW9u
Ojp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmgJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDEwICsxMjksMTIgQEAgcHVibGljOgog
ICAgICAgICBSZXZlYWxTZWxlY3Rpb24gPSAxIDw8IDcsCiAgICAgICAgIFJldmVhbFNlbGVjdGlv
blVwVG9NYWluRnJhbWUgPSAxIDw8IDgsCiAgICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFNl
dFNlbGVjdGlvbk9wdGlvbnM7IC8vIFVuaW9uIG9mIHZhbHVlcyBpbiBTZXRTZWxlY3Rpb25PcHRp
b24gYW5kIEVVc2VyVHJpZ2dlcmVkCi0gICAgc3RhdGljIGlubGluZSBTZXRTZWxlY3Rpb25PcHRp
b25zIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2Vy
ZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKQorICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFNl
dFNlbGVjdGlvbk9wdGlvbj4gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoRVVzZXJUcmlnZ2Vy
ZWQgdXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpCiAgICAgewotICAgICAgICByZXR1
cm4gQ2xvc2VUeXBpbmcgfCBDbGVhclR5cGluZ1N0eWxlIHwgKHVzZXJUcmlnZ2VyZWQgPyAoUmV2
ZWFsU2VsZWN0aW9uIHwgRmlyZVNlbGVjdEV2ZW50IHwgSXNVc2VyVHJpZ2dlcmVkKSA6IDApOwor
ICAgICAgICBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zIHsgQ2xvc2VUeXBp
bmcsIENsZWFyVHlwaW5nU3R5bGUgfTsKKyAgICAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNl
clRyaWdnZXJlZCkKKyAgICAgICAgICAgIG9wdGlvbnMgfD0geyBSZXZlYWxTZWxlY3Rpb24sIEZp
cmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVkIH07CisgICAgICAgIHJldHVybiBvcHRpb25z
OwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYW1lU2VsZWN0aW9uKEZy
YW1lKiA9IG51bGxwdHIpOwpAQCAtMTQ3LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1v
dmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBi
b29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwgYm9vbCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9u
UmV2ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVD
aGFuZ2VJbnRlbnQoKSk7CiAKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBTZXRTZWxlY3Rpb25PcHRpb25z
ID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQg
PSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25D
dXJzb3JPblNjcm9sbElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+ID0gZGVmYXVsdFNldFNl
bGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgPSBBWFRleHRTdGF0ZUNo
YW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9sbElm
TmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFmZmluaXR5LCBib29s
IGNsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0QWxsKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhcigpOwpAQCAtMjgyLDcgKzI4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVBbmRS
ZXZlYWxTZWxlY3Rpb24oY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKICAgICB2b2lk
IHVwZGF0ZURhdGFEZXRlY3RvcnNGb3JTZWxlY3Rpb24oKTsKIAotICAgIGJvb2wgc2V0U2VsZWN0
aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgU2V0
U2VsZWN0aW9uT3B0aW9ucywgQ3Vyc29yQWxpZ25PblNjcm9sbCwgVGV4dEdyYW51bGFyaXR5KTsK
KyAgICBib29sIHNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+LCBDdXJzb3JBbGln
bk9uU2Nyb2xsLCBUZXh0R3JhbnVsYXJpdHkpOwogCiAgICAgdm9pZCByZXNwb25kVG9Ob2RlTW9k
aWZpY2F0aW9uKE5vZGUmLCBib29sIGJhc2VSZW1vdmVkLCBib29sIGV4dGVudFJlbW92ZWQsIGJv
b2wgc3RhcnRSZW1vdmVkLCBib29sIGVuZFJlbW92ZWQpOwogICAgIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
b3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgICAgICAvLyBEb2N1bWVudCB3YXMgbW9kaWZpZWQgb3V0IGZyb20gdW5kZXIgdXMuCiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRP
cHRpb25zIG9wdGlvbnMgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1l
bnQgfCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3Rpbmc7CisgICAgT3B0aW9u
U2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICBpZiAobV9zbWFydEluc2VydCkKICAgICAg
ICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAkocmV2aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw3ICszNzcsNyBA
QCBpbmxpbmUgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SW5zCiAgICAgICAgIG1fbGFz
dE5vZGVJbnNlcnRlZCA9IG5ld05vZGU7CiB9CiAKLVJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiYmIGZyYWdtZW50LCBDb21tYW5kT3B0aW9ucyBvcHRpb25zLCBFZGl0QWN0aW9u
IGVkaXRBY3Rpb24pCitSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFn
bWVudCwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+IG9wdGlvbnMsIEVkaXRBY3Rpb24gZWRpdEFj
dGlvbikKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50LCBlZGl0QWN0aW9uKQog
ICAgICwgbV9zZWxlY3RSZXBsYWNlbWVudChvcHRpb25zICYgU2VsZWN0UmVwbGFjZW1lbnQpCiAg
ICAgLCBtX3NtYXJ0UmVwbGFjZShvcHRpb25zICYgU21hcnRSZXBsYWNlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAkocmV2aXNp
b24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
SWdub3JlTWFpbEJsb2NrcXVvdGUgPSAxIDw8IDYsCiAgICAgfTsKIAotICAgIHR5cGVkZWYgdW5z
aWduZWQgQ29tbWFuZE9wdGlvbnM7Ci0KLSAgICBzdGF0aWMgUmVmPFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4mJiBmcmFnbWVudCwgQ29tbWFuZE9wdGlvbnMgb3B0aW9ucywgRWRpdEFjdGlvbiBlZGl0aW5n
QWN0aW9uID0gRWRpdEFjdGlvbkluc2VydCkKKyAgICBzdGF0aWMgUmVmPFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiBmcmFnbWVudCwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+IG9wdGlvbnMsIEVkaXRB
Y3Rpb24gZWRpdGluZ0FjdGlvbiA9IEVkaXRBY3Rpb25JbnNlcnQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChkb2N1bWVudCwgV1RG
TW92ZShmcmFnbWVudCksIG9wdGlvbnMsIGVkaXRpbmdBY3Rpb24pKTsKICAgICB9CkBAIC01NSw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb25G
b3JJbnNlcnRlZFRleHQoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVTZWxlY3Rpb25Gb3JJbnNl
cnRlZFRleHQ7IH0KIAogcHJpdmF0ZToKLSAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1
bWVudCYsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmLCBDb21tYW5kT3B0aW9ucywgRWRpdEFj
dGlvbik7CisgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQmLCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4mJiwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+LCBFZGl0QWN0aW9uKTsK
IAogICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IGlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdCBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2
aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21t
YW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNldFNlbGVjdGlvbkNvbW1hbmQ6OlNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9u
T3B0aW9ucyBvcHRpb25zKQorU2V0U2VsZWN0aW9uQ29tbWFuZDo6U2V0U2VsZWN0aW9uQ29tbWFu
ZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIE9wdGlvblNldDxGcmFtZVNlbGVj
dGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zKQogICAgIDogU2ltcGxlRWRpdENvbW1h
bmQoc2VsZWN0aW9uLmJhc2UoKS5hbmNob3JOb2RlKCktPmRvY3VtZW50KCkpCiAgICAgLCBtX29w
dGlvbnMob3B0aW9ucykKICAgICAsIG1fc2VsZWN0aW9uVG9TZXQoc2VsZWN0aW9uKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9u
IDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTZXRTZWxlY3Rpb25Db21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNldFNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rp
b25PcHRpb25zIG9wdGlvbnMpCisgICAgc3RhdGljIFJlZjxTZXRTZWxlY3Rpb25Db21tYW5kPiBj
cmVhdGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBPcHRpb25TZXQ8RnJhbWVT
ZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNldFNlbGVjdGlvbkNvbW1hbmQoc2VsZWN0aW9uLCBvcHRpb25z
KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAg
ICBTZXRTZWxlY3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8
RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4pOwogCiAgICAgdm9pZCBkb0FwcGx5
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+
Jikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAotICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rp
b25PcHRpb25zIG1fb3B0aW9uczsKKyAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNl
bGVjdGlvbk9wdGlvbj4gbV9vcHRpb25zOwogICAgIFZpc2libGVTZWxlY3Rpb24gbV9zZWxlY3Rp
b25Ub1NldDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDcgKzM2MCw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUkKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M6IHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlv
biBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgICAgIGlm
IChmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0aXRsZSwgc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkgewotICAg
ICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb25zIHJlcGxhY2VP
cHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUgfCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3Rpbmc7CisgICAgICAgICAgICBPcHRpb25TZXQ8UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IHJlcGxhY2VPcHRpb25zIHsgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpQcmV2ZW50TmVzdGluZyB9OwogCiAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJl
aGF2aW9yKCkuc2hvdWxkQWxsb3dTcGVsbGluZ1N1Z2dlc3Rpb25zV2l0aG91dFNlbGVjdGlvbigp
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ3
OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTk1LDcgKzU5NSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoY28KICAgICAgICAgICAgIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZnJhZ21l
bnQucmVsZWFzZU5vbk51bGwoKSwgZHJhZ0NhcmV0LmJhc2UoKSwgc21hcnRJbnNlcnQsIHNtYXJ0
RGVsZXRlKS0+YXBwbHkoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChzZXRT
ZWxlY3Rpb25Ub0RyYWdDYXJldChpbm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBw
b2ludCkpIHsKLSAgICAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFu
ZE9wdGlvbnMgb3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNl
bWVudCB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZzsKKyAgICAgICAg
ICAgICAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+
IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgICAgICAgICAgICAg
IGlmIChkcmFnRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgICAgICAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOwogICAgICAgICAg
ICAgICAgIGlmIChjaG9zZVBsYWluVGV4dCkKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKGNvCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQoaW5uZXJGcmFtZS5nZXQoKSwg
ZHJhZ0NhcmV0LCByYW5nZSwgcG9pbnQpKQotICAgICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OmNyZWF0ZSgqbV9kb2N1bWVudFVuZGVyTW91c2UsIGZyYWdtZW50LmdldCgpLCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQgfCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6TWF0Y2hTdHlsZSB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVz
dGluZywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHkoKTsKKyAgICAgICAgICAgIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoKm1fZG9jdW1lbnRVbmRlck1vdXNlLCBmcmFn
bWVudC5nZXQoKSwgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQs
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlLCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6UHJldmVudE5lc3RpbmcgfSwgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHko
KTsKICAgICB9CiAKICAgICBpZiAocm9vdEVkaXRhYmxlRWxlbWVudCkgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmUKICAgICBSZWY8
RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgVGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9ucyB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zID0gVGVtcG9yYXJ5U2VsZWN0
aW9uT3B0aW9uRGVmYXVsdDsKKyAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9u
PiB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNl
bGVjdGlvbkNoYW5nZXM7CiAgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlczsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1t
CShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQzLDcgKzY0Myw3IEBAIC0g
KHZvaWQpc2V0U2VsZWN0aW9uR3JhbnVsYXJpdHk6KFdlYlRleHQKICAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBGcmFtZVNlbGVjdGlvbiYgZnJhbWVTZWxlY3Rpb24gPSBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5zZWxlY3Rpb24oKTsKLSAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24o
ZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCksIHdjR3JhbnVsYXJpdHkpOworICAgIGZyYW1lU2Vs
ZWN0aW9uLnNldFNlbGVjdGlvbihmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKSwgeyB9LCB7IH0s
IHsgfSwgd2NHcmFudWxhcml0eSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FscGhhTnVt
ZXJpY0NoYXJhY3RlcihVQ2hhcjMyIGMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347009</attachid>
            <date>2018-08-13 04:10:56 -0700</date>
            <delta_ts>2018-08-13 08:29:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>optionset-editor-10.patch</filename>
            <type>text/plain</type>
            <size>27234</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDc5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTA4LTEzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IG1vcmUg
aW4gZWRpdGluZyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODg1MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUeXBlc2FmZSBmbGFncy4KKworICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6Om1v
dmVQYXJhZ3JhcGhzKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5n
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZTo6VGVt
cG9yYXJ5U2VsZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb3ZlV2l0aG91dFZhbGlk
YXRpb25Ubyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9u
V2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3RlZFJhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlv
bnMpOgorICAgICAgICAqIGVkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKToKKyAgICAgICAg
KiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5nL1NldFNl
bGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0U2VsZWN0aW9uQ29tbWFu
ZDo6U2V0U2VsZWN0aW9uQ29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9TZXRTZWxlY3Rpb25D
b21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXRTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUp
OgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvVGV4dEluZGlj
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoUmFu
Z2UpOgorCiAyMDE4LTA4LTEyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LlN0b3JhZ2UgYXQgV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJl
dmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg5LDcgKzE0ODksNyBAQCB2b2lkIENvbXBv
c2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBoCiAKICAgICBzZXRFbmRpbmdTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihkZXN0aW5hdGlvbiwgb3JpZ2luYWxJc0RpcmVjdGlvbmFsKSk7CiAg
ICAgQVNTRVJUKGVuZGluZ1NlbGVjdGlvbigpLmlzQ2FyZXRPclJhbmdlKCkpOwotICAgIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBvcHRpb25zID0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Ok1vdmluZ1BhcmFncmFwaDsKKyAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OkNvbW1hbmRPcHRpb24+IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0
UmVwbGFjZW1lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNb3ZpbmdQYXJhZ3JhcGggfTsK
ICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCiAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7CiAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50
KSwgb3B0aW9ucykpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24g
MjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAotVGVtcG9yYXJ5U2Vs
ZWN0aW9uQ2hhbmdlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmIGZyYW1lLCBzdGQ6
Om9wdGlvbmFsPFZpc2libGVTZWxlY3Rpb24+IHRlbXBvcmFyeVNlbGVjdGlvbiwgVGVtcG9yYXJ5
U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQorVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpUZW1w
b3JhcnlTZWxlY3Rpb25DaGFuZ2UoRnJhbWUmIGZyYW1lLCBzdGQ6Om9wdGlvbmFsPFZpc2libGVT
ZWxlY3Rpb24+IHRlbXBvcmFyeVNlbGVjdGlvbiwgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlv
bk9wdGlvbj4gb3B0aW9ucykKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX29wdGlvbnMo
b3B0aW9ucykKICAgICAsIG1fd2FzSWdub3JpbmdTZWxlY3Rpb25DaGFuZ2VzKGZyYW1lLmVkaXRv
cigpLmlnbm9yZVNlbGVjdGlvbkNoYW5nZXMoKSkKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIEVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVuCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkgJiYgZWRpdGluZ0FjdGlvbiA9PSBFZGl0QWN0aW9uUGFz
dGUpCiAgICAgICAgIHJlcGxhY2VkVGV4dCA9IEFjY2Vzc2liaWxpdHlSZXBsYWNlZFRleHQoc2Vs
ZWN0aW9uKTsKIAotICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9ucyBv
cHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nIHwgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OlNhbml0aXplRnJhZ21lbnQ7CisgICAgT3B0aW9uU2V0PFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nLCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2Fu
aXRpemVGcmFnbWVudCB9OwogICAgIGlmIChzZWxlY3RSZXBsYWNlbWVudCkKICAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQ7CiAgICAg
aWYgKHNtYXJ0UmVwbGFjZSkKQEAgLTEwNzMsNyArMTA3Myw5IEBAIHZvaWQgRWRpdG9yOjphcHBs
aWVkRWRpdGluZyhDb21wb3NpdGVFZGkKIAogICAgIGlmIChjb21tYW5kLmlzVG9wTGV2ZWxDb21t
YW5kKCkpIHsKICAgICAgICAgLy8gRG9uJ3QgY2xlYXIgdGhlIHR5cGluZyBzdHlsZSB3aXRoIHRo
aXMgc2VsZWN0aW9uIGNoYW5nZS4gV2UgZG8gdGhvc2UgdGhpbmdzIGVsc2V3aGVyZSBpZiBuZWNl
c3NhcnkuCi0gICAgICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlv
bnMgPSBjb21tYW5kLmlzRGljdGF0aW9uQ29tbWFuZCgpID8gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCA6IDA7CisgICAgICAgIE9wdGlvblNldDxGcmFtZVNlbGVjdGlvbjo6U2V0
U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zOworICAgICAgICBpZiAoY29tbWFuZC5pc0RpY3RhdGlv
bkNvbW1hbmQoKSkKKyAgICAgICAgICAgIG9wdGlvbnMgfD0gRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZDsKIAogICAgICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3
U2VsZWN0aW9uLCBvcHRpb25zKTsKICAgICB9CkBAIC0xNzgxLDcgKzE3ODMsNyBAQCB2b2lkIEVk
aXRvcjo6c2VsZWN0Q29tcG9zaXRpb24oKQogICAgIC8vIFNlZSA8aHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3ODE+CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b247CiAgICAgc2VsZWN0aW9uLnNldFdpdGhvdXRWYWxpZGF0aW9uKHJhbmdlLT5zdGFydFBvc2l0
aW9uKCksIHJhbmdlLT5lbmRQb3NpdGlvbigpKTsKLSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihzZWxlY3Rpb24sIDApOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKHNlbGVjdGlvbiwgeyB9KTsKIH0KIAogdm9pZCBFZGl0b3I6OmNvbmZpcm1Db21wb3Np
dGlvbigpCkBAIC0yOTg0LDcgKzI5ODYsNyBAQCB2b2lkIEVkaXRvcjo6c2V0SWdub3JlU2VsZWN0
aW9uQ2hhbmdlcyhiCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBTaG91bGQgc3Vw
cHJlc3Mgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIGR1cmluZyBhIGNvbXBvc2l0aW9u
IGNoYW5nZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMzg4MzA+IAogICAgIGlmICghaWdub3JlKQot
ICAgICAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCksIDApOworICAgICAgICByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKG1fZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIHsgfSk7CiAjZW5kaWYKICAgICBpZiAoIWlnbm9yZSAm
JiBzaG91bGRSZXZlYWxFeGlzdGluZ1NlbGVjdGlvbiA9PSBSZXZlYWxTZWxlY3Rpb246OlllcykK
ICAgICAgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJFZGl0aW5nT3BlcmF0aW9uKFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgUmV2ZWFsRXh0ZW50KTsKQEAgLTMxMDcsNyArMzEw
OSw3IEBAIHZvaWQgRWRpdG9yOjpkaXNtaXNzQ29ycmVjdGlvblBhbmVsQXNJZ24KICAgICBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXItPmRpc21pc3MoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dElnbm9yZWQpOwogfQogCi12b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0
ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxl
Y3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK3ZvaWQgRWRpdG9yOjpjaGFuZ2VT
ZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9u
LCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykK
IHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rpb24obV9mcmFtZSk7CiAKQEAgLTM0NzAsNyArMzQ3
Miw3IEBAIHZvaWQgRWRpdG9yOjpzZWxlY3Rpb25XaWxsQ2hhbmdlKCkKIH0KICNlbmRpZgogCi12
b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucykKK3ZvaWQg
RWRpdG9yOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
LCBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykK
IHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6IFNob3VsZCBzdXBwcmVzcyBzZWxl
Y3Rpb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMgZHVyaW5nIGEgY29tcG9zaXRpb24gY2hhbmdlIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8zODgzMD4gCkBAIC0zNDkyLDkgKzM0OTQsOCBAQCB2b2lkIEVk
aXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIERvbid0IGNoZWNrIHNwZWxsaW5nIGFuZCBncmFtbWFyIGlmIHRoZSBjaGFuZ2Ugb2Ygc2Vs
ZWN0aW9uIGlzIHRyaWdnZXJlZCBieSBzcGVsbGluZyBjb3JyZWN0aW9uIGl0c2VsZi4KLSAgICBt
X2VkaXRvclVJVXBkYXRlVGltZXJTaG91bGRDaGVja1NwZWxsaW5nQW5kR3JhbW1hciA9IG9wdGlv
bnMgJiBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcKLSAgICAgICAgJiYgIShvcHRpb25zICYg
RnJhbWVTZWxlY3Rpb246OlNwZWxsQ29ycmVjdGlvblRyaWdnZXJlZCk7Ci0gICAgbV9lZGl0b3JV
SVVwZGF0ZVRpbWVyV2FzVHJpZ2dlcmVkQnlEaWN0YXRpb24gPSBvcHRpb25zICYgRnJhbWVTZWxl
Y3Rpb246OkRpY3RhdGlvblRyaWdnZXJlZDsKKyAgICBtX2VkaXRvclVJVXBkYXRlVGltZXJTaG91
bGRDaGVja1NwZWxsaW5nQW5kR3JhbW1hciA9IG9wdGlvbnMuY29udGFpbnMoRnJhbWVTZWxlY3Rp
b246OkNsb3NlVHlwaW5nKSAmJiAhb3B0aW9ucy5jb250YWlucyhGcmFtZVNlbGVjdGlvbjo6U3Bl
bGxDb3JyZWN0aW9uVHJpZ2dlcmVkKTsKKyAgICBtX2VkaXRvclVJVXBkYXRlVGltZXJXYXNUcmln
Z2VyZWRCeURpY3RhdGlvbiA9IG9wdGlvbnMuY29udGFpbnMoRnJhbWVTZWxlY3Rpb246OkRpY3Rh
dGlvblRyaWdnZXJlZCk7CiAgICAgc2NoZWR1bGVFZGl0b3JVSVVwZGF0ZSgpOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDkgKzk5LDYgQEAgc3Ry
dWN0IEF0dGFjaG1lbnREaXNwbGF5T3B0aW9uczsKICNlbmRpZgogCiBlbnVtIFRlbXBvcmFyeVNl
bGVjdGlvbk9wdGlvbiA6IHVpbnQ4X3QgewotICAgIC8vIEJ5IGRlZmF1bHQsIG5vIGFkZGl0aW9u
YWwgb3B0aW9ucyBhcmUgZW5hYmxlZC4KLSAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25EZWZh
dWx0ID0gMCwKLQogICAgIC8vIFNjcm9sbCB0byByZXZlYWwgdGhlIHNlbGVjdGlvbi4KICAgICBU
ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25SZXZlYWxTZWxlY3Rpb24gPSAxIDw8IDAsCiAKQEAgLTEx
MiwxNiArMTA5LDE0IEBAIGVudW0gVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uIDogdWludDhfdCAK
ICAgICBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlcyA9IDEg
PDwgMgogfTsKIAotdXNpbmcgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyA9IHVpbnQ4X3Q7Ci0K
IGNsYXNzIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSB7CiBwdWJsaWM6Ci0gICAgVGVtcG9yYXJ5
U2VsZWN0aW9uQ2hhbmdlKEZyYW1lJiwgc3RkOjpvcHRpb25hbDxWaXNpYmxlU2VsZWN0aW9uPiA9
IHN0ZDo6bnVsbG9wdCwgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyA9IFRlbXBvcmFyeVNlbGVj
dGlvbk9wdGlvbkRlZmF1bHQpOworICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZShGcmFtZSYs
IHN0ZDo6b3B0aW9uYWw8VmlzaWJsZVNlbGVjdGlvbj4gPSBzdGQ6Om51bGxvcHQsIE9wdGlvblNl
dDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+ID0geyB9KTsKICAgICB+VGVtcG9yYXJ5U2VsZWN0
aW9uQ2hhbmdlKCk7CiAKIHByaXZhdGU6CiAgICAgUmVmPEZyYW1lPiBtX2ZyYW1lOwotICAgIFRl
bXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMgbV9vcHRpb25zOworICAgIE9wdGlvblNldDxUZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb24+IG1fb3B0aW9uczsKICAgICBib29sIG1fd2FzSWdub3JpbmdTZWxl
Y3Rpb25DaGFuZ2VzOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIG1fYXBwZWFyYW5jZVVw
ZGF0ZXNXZXJlRW5hYmxlZDsKQEAgLTQxNCw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgSW50UmVjdCBmaXJzdFJlY3RGb3JSYW5nZShSYW5nZSopIGNvbnN0OwogCiAgICAg
dm9pZCBzZWxlY3Rpb25XaWxsQ2hhbmdlKCk7Ci0gICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2Vs
ZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhbWVTZWxlY3Rp
b246OlNldFNlbGVjdGlvbk9wdGlvbnMpOworICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIE9wdGlvblNldDxGcmFt
ZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB1cGRhdGVFZGl0b3JVSU5vd0lmU2NoZWR1bGVkKCk7CiAgICAgYm9vbCBzaG91bGRDaGFuZ2VT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGlu
ZykgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgY291bnRNYXRjaGVzRm9yVGV4
dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBsaW1pdCwgYm9v
bCBtYXJrTWF0Y2hlcywgVmVjdG9yPFJlZlB0cjxSYW5nZT4+Kik7CkBAIC01NDEsNyArNTM2LDcg
QEAgcHJpdmF0ZToKICAgICBlbnVtIFNldENvbXBvc2l0aW9uTW9kZSB7IENvbmZpcm1Db21wb3Np
dGlvbiwgQ2FuY2VsQ29tcG9zaXRpb24gfTsKICAgICB2b2lkIHNldENvbXBvc2l0aW9uKGNvbnN0
IFN0cmluZyYsIFNldENvbXBvc2l0aW9uTW9kZSk7CiAKLSAgICB2b2lkIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEZyYW1l
U2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB2b2lkIGNoYW5nZVNlbGVjdGlv
bkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIE9wdGlv
blNldDxGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPik7CiAKICAgICBlbnVtIEVk
aXRvckFjdGlvblNwZWNpZmllciB7IEN1dEFjdGlvbiwgQ29weUFjdGlvbiB9OwogICAgIHZvaWQg
cGVyZm9ybUN1dE9yQ29weShFZGl0b3JBY3Rpb25TcGVjaWZpZXIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODUsNyArMTg1LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVdpdGhvdXRWYWxpZGF0
aQogICAgIG5ld1NlbGVjdGlvbi5zZXRXaXRob3V0VmFsaWRhdGlvbihiYXNlLCBleHRlbnQpOwog
ICAgIG5ld1NlbGVjdGlvbi5zZXRJc0RpcmVjdGlvbmFsKHNlbGVjdGlvbkhhc0RpcmVjdGlvbik7
CiAgICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgbmV3SW50ZW50ID0gaW50ZW50LnR5cGUgPT0g
QVhUZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93biA/IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4
dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFy
aXR5VW5rbm93biwgZmFsc2UgfSkgOiBpbnRlbnQ7Ci0gICAgU2V0U2VsZWN0aW9uT3B0aW9ucyBv
cHRpb25zID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKTsKKyAgICBhdXRvIG9wdGlvbnMg
PSBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwogICAgIGlmICghc2hvdWxkU2V0Rm9jdXMp
CiAgICAgICAgIG9wdGlvbnMgfD0gRG9Ob3RTZXRGb2N1czsKICAgICBzd2l0Y2ggKHJldmVhbE1v
ZGUpIHsKQEAgLTI5MSwxMCArMjkxLDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVj
dGlvbkJ5TW91c2UKICAgICBzZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBkZWZhdWx0U2V0U2Vs
ZWN0aW9uT3B0aW9ucygpIHwgRmlyZVNlbGVjdEV2ZW50LCBpbnRlbnQsIEFsaWduQ3Vyc29yT25T
Y3JvbGxJZk5lZWRlZCwgZ3JhbnVsYXJpdHkpOwogfQogCi1ib29sIEZyYW1lU2VsZWN0aW9uOjpz
ZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mIG5ld1NlbGVjdGlvblBvc3NpYmx5V2l0aG91dERpcmVjdGlvbiwgU2V0U2VsZWN0aW9uT3B0
aW9ucyBvcHRpb25zLCBDdXJzb3JBbGlnbk9uU2Nyb2xsIGFsaWduLCBUZXh0R3JhbnVsYXJpdHkg
Z3JhbnVsYXJpdHkpCitib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBk
YXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvblBvc3Np
Ymx5V2l0aG91dERpcmVjdGlvbiwgT3B0aW9uU2V0PFNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9u
cywgQ3Vyc29yQWxpZ25PblNjcm9sbCBhbGlnbiwgVGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KQogewotICAgIGJvb2wgY2xvc2VUeXBpbmcgPSBvcHRpb25zICYgQ2xvc2VUeXBpbmc7Ci0gICAg
Ym9vbCBzaG91bGRDbGVhclR5cGluZ1N0eWxlID0gb3B0aW9ucyAmIENsZWFyVHlwaW5nU3R5bGU7
CisgICAgYm9vbCBjbG9zZVR5cGluZyA9IG9wdGlvbnMuY29udGFpbnMoQ2xvc2VUeXBpbmcpOwor
ICAgIGJvb2wgc2hvdWxkQ2xlYXJUeXBpbmdTdHlsZSA9IG9wdGlvbnMuY29udGFpbnMoQ2xlYXJU
eXBpbmdTdHlsZSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbiA9IG5ld1Nl
bGVjdGlvblBvc3NpYmx5V2l0aG91dERpcmVjdGlvbjsKICAgICBpZiAoc2hvdWxkQWx3YXlzVXNl
RGlyZWN0aW9uYWxTZWxlY3Rpb24obV9mcmFtZSkpCkBAIC0zMzgsNyArMzM4LDcgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uV2l0aG91dAogCiAgICAgLy8gU2VsZWN0aW9uIG9m
ZnNldHMgc2hvdWxkIGluY3JlYXNlIHdoZW4gTEYgaXMgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBjYXJl
dCBpbiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLiBTZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzU2
MDYxPi4KICAgICBpZiAoSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHRDb250cm9sID0g
ZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKG5ld1NlbGVjdGlvbi5zdGFydCgpKSkKLSAgICAgICAg
dGV4dENvbnRyb2wtPnNlbGVjdGlvbkNoYW5nZWQob3B0aW9ucyAmIEZpcmVTZWxlY3RFdmVudCk7
CisgICAgICAgIHRleHRDb250cm9sLT5zZWxlY3Rpb25DaGFuZ2VkKG9wdGlvbnMuY29udGFpbnMo
RmlyZVNlbGVjdEV2ZW50KSk7CiAKICAgICBpZiAoIWRpZE11dGF0ZVNlbGVjdGlvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU4LDcgKzM1OCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGlvbldpdGhvdXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGcmFtZVNl
bGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwg
U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zLCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRl
bnQsIEN1cnNvckFsaWduT25TY3JvbGwgYWxpZ24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0
eSkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24sIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIEFY
VGV4dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudCwgQ3Vyc29yQWxpZ25PblNjcm9sbCBhbGlnbiwg
VGV4dEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVj
dGVkRnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKCFzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdB
cHBlYXJhbmNlKHNlbGVjdGlvbiwgb3B0aW9ucywgYWxpZ24sIGdyYW51bGFyaXR5KSkKQEAgLTE5
OTMsMTUgKzE5OTMsMjIgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZShS
YQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAorICAgIE9wdGlvblNldDxTZXRTZWxl
Y3Rpb25PcHRpb24+IHNlbGVjdGlvbk9wdGlvbnMgeyAgQ2xlYXJUeXBpbmdTdHlsZSB9OworICAg
IGlmIChjbG9zZVR5cGluZykKKyAgICAgICAgc2VsZWN0aW9uT3B0aW9ucyB8PSBDbG9zZVR5cGlu
ZzsKKwogICAgIGlmICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQpIHsKICAgICAgICAg
RnJhbWVTZWxlY3Rpb24gdHJpYWxGcmFtZVNlbGVjdGlvbjsKLSAgICAgICAgdHJpYWxGcmFtZVNl
bGVjdGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBDbGVhclR5cGluZ1N0eWxlIHwgKGNs
b3NlVHlwaW5nID8gQ2xvc2VUeXBpbmcgOiAwKSk7CisKKyAgICAgICAgdHJpYWxGcmFtZVNlbGVj
dGlvbi5zZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBzZWxlY3Rpb25PcHRpb25zKTsKIAogICAg
ICAgICBpZiAoIXNob3VsZENoYW5nZVNlbGVjdGlvbih0cmlhbEZyYW1lU2VsZWN0aW9uLnNlbGVj
dGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzZWxlY3Rpb25P
cHRpb25zIHw9IElzVXNlclRyaWdnZXJlZDsKICAgICB9CiAKLSAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBDbGVhclR5cGluZ1N0eWxlIHwgKGNsb3NlVHlwaW5nID8gQ2xvc2VUeXBpbmcg
OiAwKSB8ICh1c2VyVHJpZ2dlcmVkID09IFVzZXJUcmlnZ2VyZWQgPyBJc1VzZXJUcmlnZ2VyZWQg
OiAwKSk7CisgICAgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgc2VsZWN0aW9uT3B0aW9ucyk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI2OTAsNyArMjY5Nyw4IEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnNlbGVjdFJhbmdlT25FbGVtZW4KICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQo
bm9kZSwgbG9jYXRpb24pOwogICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQobm9kZSwgbG9jYXRpb24g
KyBsZW5ndGgpOwogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbigqcmVzdWx0UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKLSAgICBzZXRTZWxlY3Rp
b24oc2VsZWN0aW9uLCB0cnVlKTsKKyAgICAvLyBGSVhNRTogVGhlIHNlY29uZCBhcmd1bWVudCB3
YXMgInRydWUiIHdoaWNoIGltcGxpY2l0bHkgY29udmVydGVkIHRvIG9wdGlvbiAiRmlyZVNlbGVj
dEV2ZW50Ii4gSXMgdGhpcyBjb3JyZWN0PworICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHsg
RmlyZVNlbGVjdEV2ZW50IH0pOwogfQogCiBWaXNpYmxlU2VsZWN0aW9uIEZyYW1lU2VsZWN0aW9u
Ojp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmgJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDEwICsxMjksMTIgQEAgcHVibGljOgog
ICAgICAgICBSZXZlYWxTZWxlY3Rpb24gPSAxIDw8IDcsCiAgICAgICAgIFJldmVhbFNlbGVjdGlv
blVwVG9NYWluRnJhbWUgPSAxIDw8IDgsCiAgICAgfTsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIFNl
dFNlbGVjdGlvbk9wdGlvbnM7IC8vIFVuaW9uIG9mIHZhbHVlcyBpbiBTZXRTZWxlY3Rpb25PcHRp
b24gYW5kIEVVc2VyVHJpZ2dlcmVkCi0gICAgc3RhdGljIGlubGluZSBTZXRTZWxlY3Rpb25PcHRp
b25zIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2Vy
ZWQgPSBOb3RVc2VyVHJpZ2dlcmVkKQorICAgIHN0YXRpYyBjb25zdGV4cHIgT3B0aW9uU2V0PFNl
dFNlbGVjdGlvbk9wdGlvbj4gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoRVVzZXJUcmlnZ2Vy
ZWQgdXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpCiAgICAgewotICAgICAgICByZXR1
cm4gQ2xvc2VUeXBpbmcgfCBDbGVhclR5cGluZ1N0eWxlIHwgKHVzZXJUcmlnZ2VyZWQgPyAoUmV2
ZWFsU2VsZWN0aW9uIHwgRmlyZVNlbGVjdEV2ZW50IHwgSXNVc2VyVHJpZ2dlcmVkKSA6IDApOwor
ICAgICAgICBPcHRpb25TZXQ8U2V0U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zIHsgQ2xvc2VUeXBp
bmcsIENsZWFyVHlwaW5nU3R5bGUgfTsKKyAgICAgICAgaWYgKHVzZXJUcmlnZ2VyZWQgPT0gVXNl
clRyaWdnZXJlZCkKKyAgICAgICAgICAgIG9wdGlvbnMgfD0geyBSZXZlYWxTZWxlY3Rpb24sIEZp
cmVTZWxlY3RFdmVudCwgSXNVc2VyVHJpZ2dlcmVkIH07CisgICAgICAgIHJldHVybiBvcHRpb25z
OwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEZyYW1lU2VsZWN0aW9uKEZy
YW1lKiA9IG51bGxwdHIpOwpAQCAtMTQ3LDcgKzE0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1v
dmVXaXRob3V0VmFsaWRhdGlvblRvKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBi
b29sIHNlbGVjdGlvbkhhc0RpcmVjdGlvbiwgYm9vbCBzaG91bGRTZXRGb2N1cywgU2VsZWN0aW9u
UmV2ZWFsTW9kZSwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmID0gQVhUZXh0U3RhdGVD
aGFuZ2VJbnRlbnQoKSk7CiAKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbjsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBTZXRTZWxlY3Rpb25PcHRpb25z
ID0gZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQg
PSBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25D
dXJzb3JPblNjcm9sbElmTmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxh
cml0eSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+ID0gZGVmYXVsdFNldFNl
bGVjdGlvbk9wdGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgPSBBWFRleHRTdGF0ZUNo
YW5nZUludGVudCgpLCBDdXJzb3JBbGlnbk9uU2Nyb2xsID0gQWxpZ25DdXJzb3JPblNjcm9sbElm
TmVlZGVkLCBUZXh0R3JhbnVsYXJpdHkgPSBDaGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBzZXRTZWxlY3RlZFJhbmdlKFJhbmdlKiwgRUFmZmluaXR5LCBib29s
IGNsb3NlVHlwaW5nLCBFVXNlclRyaWdnZXJlZCA9IE5vdFVzZXJUcmlnZ2VyZWQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0QWxsKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhcigpOwpAQCAtMjgyLDcgKzI4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVBbmRS
ZXZlYWxTZWxlY3Rpb24oY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmKTsKICAgICB2b2lk
IHVwZGF0ZURhdGFEZXRlY3RvcnNGb3JTZWxlY3Rpb24oKTsKIAotICAgIGJvb2wgc2V0U2VsZWN0
aW9uV2l0aG91dFVwZGF0aW5nQXBwZWFyYW5jZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgU2V0
U2VsZWN0aW9uT3B0aW9ucywgQ3Vyc29yQWxpZ25PblNjcm9sbCwgVGV4dEdyYW51bGFyaXR5KTsK
KyAgICBib29sIHNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIE9wdGlvblNldDxTZXRTZWxlY3Rpb25PcHRpb24+LCBDdXJzb3JBbGln
bk9uU2Nyb2xsLCBUZXh0R3JhbnVsYXJpdHkpOwogCiAgICAgdm9pZCByZXNwb25kVG9Ob2RlTW9k
aWZpY2F0aW9uKE5vZGUmLCBib29sIGJhc2VSZW1vdmVkLCBib29sIGV4dGVudFJlbW92ZWQsIGJv
b2wgc3RhcnRSZW1vdmVkLCBib29sIGVuZFJlbW92ZWQpOwogICAgIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9N
b3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTW92ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQog
ICAgICAgICAvLyBEb2N1bWVudCB3YXMgbW9kaWZpZWQgb3V0IGZyb20gdW5kZXIgdXMuCiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRP
cHRpb25zIG9wdGlvbnMgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1l
bnQgfCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3Rpbmc7CisgICAgT3B0aW9u
U2V0PFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpDb21tYW5kT3B0aW9uPiBvcHRpb25zIHsgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50LCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6UHJldmVudE5lc3RpbmcgfTsKICAgICBpZiAobV9zbWFydEluc2VydCkKICAgICAg
ICAgb3B0aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcAkocmV2aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Nyw3ICszNzcsNyBA
QCBpbmxpbmUgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SW5zCiAgICAgICAgIG1fbGFz
dE5vZGVJbnNlcnRlZCA9IG5ld05vZGU7CiB9CiAKLVJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiYmIGZyYWdtZW50LCBDb21tYW5kT3B0aW9ucyBvcHRpb25zLCBFZGl0QWN0aW9u
IGVkaXRBY3Rpb24pCitSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6UmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFn
bWVudCwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+IG9wdGlvbnMsIEVkaXRBY3Rpb24gZWRpdEFj
dGlvbikKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50LCBlZGl0QWN0aW9uKQog
ICAgICwgbV9zZWxlY3RSZXBsYWNlbWVudChvcHRpb25zICYgU2VsZWN0UmVwbGFjZW1lbnQpCiAg
ICAgLCBtX3NtYXJ0UmVwbGFjZShvcHRpb25zICYgU21hcnRSZXBsYWNlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAkocmV2aXNp
b24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
SWdub3JlTWFpbEJsb2NrcXVvdGUgPSAxIDw8IDYsCiAgICAgfTsKIAotICAgIHR5cGVkZWYgdW5z
aWduZWQgQ29tbWFuZE9wdGlvbnM7Ci0KLSAgICBzdGF0aWMgUmVmPFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4mJiBmcmFnbWVudCwgQ29tbWFuZE9wdGlvbnMgb3B0aW9ucywgRWRpdEFjdGlvbiBlZGl0aW5n
QWN0aW9uID0gRWRpdEFjdGlvbkluc2VydCkKKyAgICBzdGF0aWMgUmVmPFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiBmcmFnbWVudCwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+IG9wdGlvbnMsIEVkaXRB
Y3Rpb24gZWRpdGluZ0FjdGlvbiA9IEVkaXRBY3Rpb25JbnNlcnQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChkb2N1bWVudCwgV1RG
TW92ZShmcmFnbWVudCksIG9wdGlvbnMsIGVkaXRpbmdBY3Rpb24pKTsKICAgICB9CkBAIC01NSw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlU2VsZWN0aW9uIHZpc2libGVTZWxlY3Rpb25G
b3JJbnNlcnRlZFRleHQoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVTZWxlY3Rpb25Gb3JJbnNl
cnRlZFRleHQ7IH0KIAogcHJpdmF0ZToKLSAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1
bWVudCYsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmLCBDb21tYW5kT3B0aW9ucywgRWRpdEFj
dGlvbik7CisgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQmLCBSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4mJiwgT3B0aW9uU2V0PENvbW1hbmRPcHRpb24+LCBFZGl0QWN0aW9uKTsK
IAogICAgIFN0cmluZyBpbnB1dEV2ZW50RGF0YSgpIGNvbnN0IGZpbmFsOwogICAgIFJlZlB0cjxE
YXRhVHJhbnNmZXI+IGlucHV0RXZlbnREYXRhVHJhbnNmZXIoKSBjb25zdCBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2
aXNpb24gMjM0NzkyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21t
YW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNldFNlbGVjdGlvbkNvbW1hbmQ6OlNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3Qg
VmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9u
T3B0aW9ucyBvcHRpb25zKQorU2V0U2VsZWN0aW9uQ29tbWFuZDo6U2V0U2VsZWN0aW9uQ29tbWFu
ZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIE9wdGlvblNldDxGcmFtZVNlbGVj
dGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zKQogICAgIDogU2ltcGxlRWRpdENvbW1h
bmQoc2VsZWN0aW9uLmJhc2UoKS5hbmNob3JOb2RlKCktPmRvY3VtZW50KCkpCiAgICAgLCBtX29w
dGlvbnMob3B0aW9ucykKICAgICAsIG1fc2VsZWN0aW9uVG9TZXQoc2VsZWN0aW9uKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9u
IDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMyArMzIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTZXRTZWxlY3Rpb25Db21tYW5kIDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNldFNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rp
b25PcHRpb25zIG9wdGlvbnMpCisgICAgc3RhdGljIFJlZjxTZXRTZWxlY3Rpb25Db21tYW5kPiBj
cmVhdGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBPcHRpb25TZXQ8RnJhbWVT
ZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucykKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNldFNlbGVjdGlvbkNvbW1hbmQoc2VsZWN0aW9uLCBvcHRpb25z
KSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFNldFNlbGVjdGlvbkNvbW1hbmQoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYsIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zKTsKKyAg
ICBTZXRTZWxlY3Rpb25Db21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBPcHRpb25TZXQ8
RnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbj4pOwogCiAgICAgdm9pZCBkb0FwcGx5
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+
Jikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAotICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rp
b25PcHRpb25zIG1fb3B0aW9uczsKKyAgICBPcHRpb25TZXQ8RnJhbWVTZWxlY3Rpb246OlNldFNl
bGVjdGlvbk9wdGlvbj4gbV9vcHRpb25zOwogICAgIFZpc2libGVTZWxlY3Rpb24gbV9zZWxlY3Rp
b25Ub1NldDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDcgKzM2MCw3
IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUkKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NwZWxsaW5nR3Vlc3M6IHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlv
biBzZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgICAgIGlm
IChmcmFtZS0+ZWRpdG9yKCkuc2hvdWxkSW5zZXJ0VGV4dCh0aXRsZSwgc2VsZWN0aW9uLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6UGFzdGVkKSkgewotICAg
ICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb25zIHJlcGxhY2VP
cHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUgfCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3Rpbmc7CisgICAgICAgICAgICBPcHRpb25TZXQ8UmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+IHJlcGxhY2VPcHRpb25zIHsgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGUsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpQcmV2ZW50TmVzdGluZyB9OwogCiAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLmJl
aGF2aW9yKCkuc2hvdWxkQWxsb3dTcGVsbGluZ1N1Z2dlc3Rpb25zV2l0aG91dFNlbGVjdGlvbigp
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHNlbGVjdGlvbi5pc0NhcmV0T3JSYW5nZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ3
OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTk1LDcgKzU5NSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRp
dERyYWcoY28KICAgICAgICAgICAgIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZnJhZ21l
bnQucmVsZWFzZU5vbk51bGwoKSwgZHJhZ0NhcmV0LmJhc2UoKSwgc21hcnRJbnNlcnQsIHNtYXJ0
RGVsZXRlKS0+YXBwbHkoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChzZXRT
ZWxlY3Rpb25Ub0RyYWdDYXJldChpbm5lckZyYW1lLmdldCgpLCBkcmFnQ2FyZXQsIHJhbmdlLCBw
b2ludCkpIHsKLSAgICAgICAgICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFu
ZE9wdGlvbnMgb3B0aW9ucyA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNl
bWVudCB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZzsKKyAgICAgICAg
ICAgICAgICBPcHRpb25TZXQ8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb24+
IG9wdGlvbnMgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQsIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZyB9OwogICAgICAgICAgICAgICAg
IGlmIChkcmFnRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgICAgICAgICAgICAgb3B0
aW9ucyB8PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U21hcnRSZXBsYWNlOwogICAgICAgICAg
ICAgICAgIGlmIChjaG9zZVBsYWluVGV4dCkKQEAgLTYxNyw3ICs2MTcsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKGNvCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgICAgICBpZiAoc2V0U2VsZWN0aW9uVG9EcmFnQ2FyZXQoaW5uZXJGcmFtZS5nZXQoKSwg
ZHJhZ0NhcmV0LCByYW5nZSwgcG9pbnQpKQotICAgICAgICAgICAgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQ6OmNyZWF0ZSgqbV9kb2N1bWVudFVuZGVyTW91c2UsIGZyYWdtZW50LmdldCgpLCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQgfCBSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6TWF0Y2hTdHlsZSB8IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVz
dGluZywgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHkoKTsKKyAgICAgICAgICAgIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoKm1fZG9jdW1lbnRVbmRlck1vdXNlLCBmcmFn
bWVudC5nZXQoKSwgeyBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQs
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlLCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6UHJldmVudE5lc3RpbmcgfSwgRWRpdEFjdGlvbkluc2VydEZyb21Ecm9wKS0+YXBwbHko
KTsKICAgICB9CiAKICAgICBpZiAocm9vdEVkaXRhYmxlRWxlbWVudCkgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOjpjcmUKICAgICBSZWY8
RnJhbWU+IHByb3RlY3RvcigqZnJhbWUpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxl
Y3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgVGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9ucyB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zID0gVGVtcG9yYXJ5U2VsZWN0
aW9uT3B0aW9uRGVmYXVsdDsKKyAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9u
PiB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zOwogI2lmIFBMQVRGT1JNKElPUykKICAgICB0ZW1w
b3JhcnlTZWxlY3Rpb25PcHRpb25zIHw9IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbklnbm9yZVNl
bGVjdGlvbkNoYW5nZXM7CiAgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucyB8PSBUZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25FbmFibGVBcHBlYXJhbmNlVXBkYXRlczsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1t
CShyZXZpc2lvbiAyMzQ3OTIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQzLDcgKzY0Myw3IEBAIC0g
KHZvaWQpc2V0U2VsZWN0aW9uR3JhbnVsYXJpdHk6KFdlYlRleHQKICAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBGcmFtZVNlbGVjdGlvbiYgZnJhbWVTZWxlY3Rpb24gPSBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5zZWxlY3Rpb24oKTsKLSAgICBmcmFtZVNlbGVjdGlvbi5zZXRTZWxlY3Rpb24o
ZnJhbWVTZWxlY3Rpb24uc2VsZWN0aW9uKCksIHdjR3JhbnVsYXJpdHkpOworICAgIGZyYW1lU2Vs
ZWN0aW9uLnNldFNlbGVjdGlvbihmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKSwgeyB9LCB7IH0s
IHsgfSwgd2NHcmFudWxhcml0eSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FscGhhTnVt
ZXJpY0NoYXJhY3RlcihVQ2hhcjMyIGMpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDIzNDc5MikKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNDcsNyAr
MTI0Nyw3IEBAIC0gKHZvaWQpc2VsZWN0V2l0aG91dENsb3NpbmdUeXBpbmdOU1JhbmcKICAgICBS
ZWZQdHI8UmFuZ2U+IGRvbVJhbmdlID0gW3NlbGYgX2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlXTsK
ICAgICBpZiAoZG9tUmFuZ2UpIHsKICAgICAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3
U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbigqZG9tUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklO
SVRZKTsKLSAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKG5ld1NlbGVjdGlvbiwgMCk7CisgICAgICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIHsgfSk7CiAgICAgICAgIAogICAgICAg
ICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0b3IoKS5lbnN1cmVMYXN0RWRpdENvbW1hbmRIYXND
dXJyZW50U2VsZWN0aW9uSWZPcGVuRm9yTW9yZVR5cGluZygpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>