<?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>16495</bug_id>
          
          <creation_ts>2007-12-17 17:14:08 -0800</creation_ts>
          <short_desc>[GTK] Accessibility support with ATK/AT-SPI</short_desc>
          <delta_ts>2008-10-11 17:14:05 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>21546</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alp Toker">alp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>chpe</cc>
    
    <cc>christian</cc>
    
    <cc>david.bolter</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>64598</commentid>
    <comment_count>0</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-17 17:14:08 -0800</bug_when>
    <thetext>The GTK+ port needs ATK/accessibility support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80930</commentid>
    <comment_count>1</comment_count>
      <attachid>21241</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-19 17:02:41 -0700</bug_when>
    <thetext>Created attachment 21241
Add initial accessibility support for GTK+ with ATK

There are a couple of commented out lines of code but I&apos;d like to leave them there since they&apos;re easy to miss and need to be implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80932</commentid>
    <comment_count>2</comment_count>
      <attachid>21241</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2008-05-19 17:54:10 -0700</bug_when>
    <thetext>Comment on attachment 21241
Add initial accessibility support for GTK+ with ATK

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80933</commentid>
    <comment_count>3</comment_count>
      <attachid>21242</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-19 18:07:20 -0700</bug_when>
    <thetext>Created attachment 21242
Revised coding style suggested by andersca</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80934</commentid>
    <comment_count>4</comment_count>
      <attachid>21242</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2008-05-19 18:09:32 -0700</bug_when>
    <thetext>Comment on attachment 21242
Revised coding style suggested by andersca

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80936</commentid>
    <comment_count>5</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-19 18:13:58 -0700</bug_when>
    <thetext>Landed in r33591. This will need a bit more work to provide complete accessibility support in upcoming patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81434</commentid>
    <comment_count>6</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-25 05:07:10 -0700</bug_when>
    <thetext>Will use this as a tracking bug since people are already CC&apos;ed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81436</commentid>
    <comment_count>7</comment_count>
      <attachid>21334</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-05-25 05:18:48 -0700</bug_when>
    <thetext>Created attachment 21334
AT-SPI accessibility enhancements

With these changes accessibility starts to become usable. There are still many TODOs and FIXMEs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81531</commentid>
    <comment_count>8</comment_count>
      <attachid>21334</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2008-05-26 09:41:03 -0700</bug_when>
    <thetext>Comment on attachment 21334
AT-SPI accessibility enhancements


&gt;+// Used to provide const gchar* returns.
&gt;+static const char* returnString(String str)

This should take a const String&amp;

I&apos;m not too fond of the #if 0 and commented out code, but I think it might be OK for now.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81564</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-05-26 21:18:30 -0700</bug_when>
    <thetext>All patches associated with this bug have been landed.  Please file new bugs about any remaining work that needs to be completed on this feature.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21241</attachid>
            <date>2008-05-19 17:02:41 -0700</date>
            <delta_ts>2008-05-19 17:54:10 -0700</delta_ts>
            <desc>Add initial accessibility support for GTK+ with ATK</desc>
            <filename>nuanti-webkit-atk-1.patch</filename>
            <type>text/plain</type>
            <size>19795</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMzNTg2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDgtMDUtMTkgIEFscCBUb2tl
ciAgPGFscEBudWFudGkuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluaXRpYWwgQVRLL0FULVNQSSBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9y
IHRoZSBHVEsrIHBvcnQuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAwOC0wNS0x
OSAgS2V2aW4gTWNDdWxsb3VnaCAgPGttY2N1bGxvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBUaW0uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMzM1ODAp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjM2
LDYgKzIzNiw5IEBACiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKICNkZWZp
bmUgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgSEFWRV9BQ0NFU1NJ
QklMSVRZIDEKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzM1ODYpCisrKyBXZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDA4LTA1LTE5ICBBbHAgVG9rZXIg
IDxhbHBAbnVhbnRpLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbml0aWFsIEFUSy9BVC1TUEkgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGZvciB0
aGUgR1RLKyBwb3J0LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogcGFn
ZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGV0YWNoKToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaDoKKyAgICAgICAgKiBwYWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uVG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKToKKyAgICAg
ICAgKiBwYWdlL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
V3JhcHBlcik6CisgICAgICAgICogcGFnZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJB
dGsuaDogQWRkZWQuCisKIDIwMDgtMDUtMTkgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCBCdWcgMTkwNjU6IFJlc291cmNlcyB3aXRoIGEgc3BhY2UgaW4gdGhl
aXIgVVJMIGRvbid0IGdldApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzMzU4MCkKKysrIFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMzAsNiArMTAzMCw4IEBAIHdlYmtp
dGd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNw
cCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3VuZGFyaWVzSUNVLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySUNVLmNwcCBcCisJV2ViQ29yZS9w
YWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBcCisJV2ViQ29yZS9wYWdlL2d0ay9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgXAogCVdlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5k
bGVyR3RrLmNwcCBcCiAJV2ViQ29yZS9wYWdlL2d0ay9GcmFtZUd0ay5jcHAgXAogCVdlYkNvcmUv
cGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIFwKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDMzNTgwKQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw5IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KCkKICAgICA6IG1faWQoMCkKICAgICAsIG1faGF2ZUNoaWxkcmVuKGZhbHNlKQorI2lmIFBM
QVRGT1JNKEdUSykKKyAgICAsIG1fd3JhcHBlcigwKQorI2VuZGlmCiB7CiB9CiAKQEAgLTc1LDcg
Kzc4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2goKQogewogICAgIHJlbW92
ZUFYT2JqZWN0SUQoKTsKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCi0gICAgbV93cmFwcGVyID0g
MDsKKyAgICBzZXRXcmFwcGVyKDApOwogI2VuZGlmICAgIAogfQogCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDMzNTgwKQorKysgV2ViQ29yZS9wYWdlL0FjY2Vz
c2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU1LDcgKzU2LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5nZTsKIEBj
bGFzcyBXZWJDb3JlVGV4dE1hcmtlcjsKIEBjbGFzcyBXZWJDb3JlVGV4dE1hcmtlclJhbmdlOwog
I2Vsc2UKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOwogY2xhc3MgTlNBcnJheTsK
IGNsYXNzIE5TQXR0cmlidXRlZFN0cmluZzsKIGNsYXNzIE5TRGF0YTsKQEAgLTY1LDYgKzY1LDEy
IEBAIGNsYXNzIE5TVmFsdWU7CiBjbGFzcyBOU1ZpZXc7CiBjbGFzcyBXZWJDb3JlVGV4dE1hcmtl
cjsKIGNsYXNzIFdlYkNvcmVUZXh0TWFya2VyUmFuZ2U7CisjaWYgUExBVEZPUk0oR1RLKQordHlw
ZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBBdGtPYmplY3Q7Cit0eXBlZGVmIHN0cnVjdCBfQXRrT2Jq
ZWN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOworI2Vsc2UKK2NsYXNzIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyOworI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtMzQ4LDEyICszNTQsMTcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGRvQVhMaW5lRm9ySW5k
ZXgodW5zaWduZWQpOwogCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQorI2lmIFBMQVRGT1JNKEdU
SykKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OworICAg
IHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopOworI2Vsc2UKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIG1f
d3JhcHBlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciogd3JhcHBlcikgCiAgICAgewogICAgICAgICBtX3dyYXBwZXIgPSB3cmFwcGVyOwog
ICAgIH0KICNlbmRpZgorI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2lkOwpA
QCAtMzY4LDYgKzM3OSw4IEBAIHByb3RlY3RlZDoKICAgICBSZXRhaW5QdHI8QWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXI+IG1fd3JhcHBlcjsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICBDT01Q
dHI8QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IG1fd3JhcHBlcjsKKyNlbGlmIFBMQVRGT1JN
KEdUSykKKyAgICBBdGtPYmplY3QqIG1fd3JhcHBlcjsKICNlbmRpZgogfTsKIApJbmRleDogV2Vi
Q29yZS9wYWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9w
YWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVy
KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK3sKKyAgICAvL3dlYmtpdF9hY2Nlc3NpYmxlX2Rl
dGFjaChvYmotPndyYXBwZXIoKSk7CisgICAgd2Via2l0X2FjY2Vzc2libGVfZGV0YWNoKFdFQktJ
VF9BQ0NFU1NJQkxFKG9iai0+d3JhcHBlcigpKSk7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCit7CisgICAgQXRrT2JqZWN0
KiBhdGtPYmogPSBBVEtfT0JKRUNUKHdlYmtpdF9hY2Nlc3NpYmxlX25ldyhvYmopKTsKKyAgICBv
YmotPnNldFdyYXBwZXIoYXRrT2JqKTsKKyAgICBnX29iamVjdF91bnJlZihhdGtPYmopOworfQor
Cit2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oUmVuZGVyT2JqZWN0KiwgY29u
c3QgU3RyaW5nJikKK3sKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9u
VG9FbGVtZW50KFJlbmRlck9iamVjdCosIGNvbnN0IFN0cmluZyYpCit7Cit9CisKK3ZvaWQgQVhP
YmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoKQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvZ3RrL0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQXRrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvZ3RrL0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFn
ZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsu
aCIKKworI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
TGlzdEJveC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKyNpbmNs
dWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworI2luY2x1ZGUg
PGF0ay9hdGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitleHRlcm4gIkMiIHsKKworc3Rh
dGljIGdwb2ludGVyIHBhcmVudF9jbGFzcyA9IE5VTEw7CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9h
Y2Nlc3NpYmxlX2luaXQoQXRrT2JqZWN0KiB0aGl6LCBncG9pbnRlciBkYXRhKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUodGhpeikpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoZGF0YSk7CisKKyAgICBpZiAoQVRLX09CSkVDVF9DTEFTUyhwYXJlbnRfY2xhc3Mp
LT5pbml0aWFsaXplKQorICAgICAgICBBVEtfT0JKRUNUX0NMQVNTKHBhcmVudF9jbGFzcyktPmlu
aXRpYWxpemUodGhpeiwgZGF0YSk7CisKKyAgICBXRUJLSVRfQUNDRVNTSUJMRSh0aGl6KS0+bV9v
YmplY3QgPSByZWludGVycHJldF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihkYXRhKTsKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X2FjY2Vzc2libGVfZmluYWxpemUoR09iamVjdCogdGhpeikK
K3sKKyAgICBpZiAoR19PQkpFQ1RfQ0xBU1MocGFyZW50X2NsYXNzKS0+ZmluYWxpemUpCisgICAg
ICAgIEdfT0JKRUNUX0NMQVNTKHBhcmVudF9jbGFzcyktPmZpbmFsaXplKHRoaXopOworfQorCitz
dGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9uYW1lKEF0a09iamVjdCog
dGhpeikKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QgPSBXRUJLSVRfQUNDRVNT
SUJMRSh0aGl6KS0+bV9vYmplY3Q7CisKKyAgICAvLyBUT0RPOiBEZWFsIHdpdGggbGF0ZXIgY2hh
bmdlcy4KKyAgICBpZiAoIXRoaXotPm5hbWUpCisgICAgICAgIGF0a19vYmplY3Rfc2V0X25hbWUo
dGhpeiwgb2JqZWN0LT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiB0aGl6LT5u
YW1lOworfQorCitzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9kZXNj
cmlwdGlvbihBdGtPYmplY3QqIHRoaXopCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ZWN0ID0gV0VCS0lUX0FDQ0VTU0lCTEUodGhpeiktPm1fb2JqZWN0OworCisgICAgLy8gVE9ETzog
dGhlIE1vemlsbGEgTVNBQSBpbXBsZW1lbnRhdGlvbiBwcmVwZW5kcyAiRGVzY3JpcHRpb246ICIK
KyAgICAvLyBTaG91bGQgd2UgZG8gdGhpcyB0b28/CisKKyAgICAvLyBUT0RPOiBEZWFsIHdpdGgg
bGF0ZXIgY2hhbmdlcy4KKyAgICBpZiAoIXRoaXotPmRlc2NyaXB0aW9uKQorICAgICAgICBhdGtf
b2JqZWN0X3NldF9kZXNjcmlwdGlvbih0aGl6LCBvYmplY3QtPmFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiB0aGl6LT5kZXNjcmlwdGlvbjsKK30K
KworQXRrT2JqZWN0KiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcGFyZW50KEF0a09iamVjdCogdGhp
eikKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlUGFyZW50ID0gV0VCS0lUX0FDQ0VT
U0lCTEUodGhpeiktPm1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKworICAgIGlmICghY29yZVBh
cmVudCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gY29yZVBhcmVudC0+d3Jh
cHBlcigpOworfQorCitzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbl9jaGlsZHJl
bihBdGtPYmplY3QqIHRoaXopCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0g
V0VCS0lUX0FDQ0VTU0lCTEUodGhpeiktPm1fb2JqZWN0OworICAgIHJldHVybiBvYmplY3QtPmNo
aWxkcmVuKCkuc2l6ZSgpOworfQorCitzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRfYWNjZXNzaWJs
ZV9yZWZfY2hpbGQoQXRrT2JqZWN0KiB0aGl6LCBnaW50IGluZGV4KQoreworICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIG9iamVjdCA9IFdFQktJVF9BQ0NFU1NJQkxFKHRoaXopLT5tX29iamVjdDsK
KworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGluZGV4ID49IDAsIE5VTEwpOworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKGluZGV4IDwgb2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKSwgTlVMTCk7
CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlQ2hpbGQgPSBvYmplY3QtPmNoaWxkcmVu
KCkuYXQoaW5kZXgpLmdldCgpOworCisgICAgaWYgKCFjb3JlQ2hpbGQpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgQXRrT2JqZWN0KiBjaGlsZCA9IGNvcmVDaGlsZC0+d3JhcHBlcigpOwor
ICAgIGdfb2JqZWN0X3JlZihjaGlsZCk7CisKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK3N0YXRp
YyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9pbmRleF9pbl9wYXJlbnQoQXRrT2JqZWN0KiB0
aGl6KQoreworICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkLgorICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBBdGtSb2xlIGF0
a1JvbGUoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKK3sKKyAgICBzd2l0Y2ggKHJvbGUpIHsKKyAg
ICBjYXNlIFdlYkNvcmU6OkJ1dHRvblJvbGU6CisgICAgICAgIHJldHVybiBBVEtfUk9MRV9QVVNI
X0JVVFRPTjsKKyAgICBjYXNlIFdlYkNvcmU6OlJhZGlvQnV0dG9uUm9sZToKKyAgICAgICAgcmV0
dXJuIEFUS19ST0xFX1JBRElPX0JVVFRPTjsKKyAgICBjYXNlIFdlYkNvcmU6OkNoZWNrQm94Um9s
ZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX0NIRUNLX0JPWDsKKyAgICBjYXNlIFdlYkNvcmU6
OlNsaWRlclJvbGU6CisgICAgICAgIHJldHVybiBBVEtfUk9MRV9TTElERVI7CisgICAgY2FzZSBX
ZWJDb3JlOjpUYWJHcm91cFJvbGU6CisgICAgICAgIHJldHVybiBBVEtfUk9MRV9QQUdFX1RBQl9M
SVNUOworICAgIGNhc2UgV2ViQ29yZTo6VGV4dEZpZWxkUm9sZToKKyAgICBjYXNlIFdlYkNvcmU6
OlRleHRBcmVhUm9sZToKKyAgICBjYXNlIFdlYkNvcmU6Okxpc3RNYXJrZXJSb2xlOgorICAgICAg
ICByZXR1cm4gQVRLX1JPTEVfRU5UUlk7CisgICAgY2FzZSBXZWJDb3JlOjpTdGF0aWNUZXh0Um9s
ZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RFWFQ7IC8vPworICAgIGNhc2UgV2ViQ29yZTo6
T3V0bGluZVJvbGU6CisgICAgICAgIHJldHVybiBBVEtfUk9MRV9UUkVFOworICAgIGNhc2UgV2Vi
Q29yZTo6Q29sdW1uUm9sZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX1VOS05PV047IC8vPwor
ICAgIGNhc2UgV2ViQ29yZTo6Um93Um9sZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX0xJU1Rf
SVRFTTsKKyAgICBjYXNlIFdlYkNvcmU6Okdyb3VwUm9sZToKKyAgICAgICAgcmV0dXJuIEFUS19S
T0xFX1VOS05PV047IC8vPworICAgIGNhc2UgV2ViQ29yZTo6TGlzdFJvbGU6CisgICAgICAgIHJl
dHVybiBBVEtfUk9MRV9MSVNUOworICAgIGNhc2UgV2ViQ29yZTo6VGFibGVSb2xlOgorICAgICAg
ICByZXR1cm4gQVRLX1JPTEVfVEFCTEU7CisgICAgY2FzZSBXZWJDb3JlOjpMaW5rUm9sZToKKyAg
ICBjYXNlIFdlYkNvcmU6OldlYkNvcmVMaW5rUm9sZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xF
X0xJTks7CisgICAgY2FzZSBXZWJDb3JlOjpJbWFnZU1hcFJvbGU6CisgICAgY2FzZSBXZWJDb3Jl
OjpJbWFnZVJvbGU6CisgICAgICAgIHJldHVybiBBVEtfUk9MRV9JTUFHRTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gQVRLX1JPTEVfVU5LTk9XTjsKKyAgICB9Cit9CisKK0F0a1JvbGUg
d2Via2l0X2FjY2Vzc2libGVfZ2V0X3JvbGUoQXRrT2JqZWN0KiB0aGl6KQoreworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iamVjdCA9IFdFQktJVF9BQ0NFU1NJQkxFKHRoaXopLT5tX29iamVj
dDsKKyAgICByZXR1cm4gYXRrUm9sZShvYmplY3QtPnJvbGVWYWx1ZSgpKTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X2FjY2Vzc2libGVfY2xhc3NfaW5pdChBdGtPYmplY3RDbGFzcyAqa2xhc3Mp
Cit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNz
KTsKKworICBwYXJlbnRfY2xhc3MgPSBnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQoa2xhc3MpOwor
CisgIGtsYXNzLT5pbml0aWFsaXplID0gd2Via2l0X2FjY2Vzc2libGVfaW5pdDsKKworICBnb2Jq
ZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9hY2Nlc3NpYmxlX2ZpbmFsaXplOworCisgIGts
YXNzLT5nZXRfbmFtZSA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9uYW1lOworICBrbGFzcy0+Z2V0
X2Rlc2NyaXB0aW9uID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X2Rlc2NyaXB0aW9uOworICBrbGFz
cy0+Z2V0X3BhcmVudCA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9wYXJlbnQ7CisgIGtsYXNzLT5n
ZXRfbl9jaGlsZHJlbiA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9uX2NoaWxkcmVuOworICBrbGFz
cy0+cmVmX2NoaWxkID0gd2Via2l0X2FjY2Vzc2libGVfcmVmX2NoaWxkOworICAvL2tsYXNzLT5n
ZXRfaW5kZXhfaW5fcGFyZW50ID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X2luZGV4X2luX3BhcmVu
dDsKKyAga2xhc3MtPmdldF9yb2xlID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X3JvbGU7CisgIC8v
a2xhc3MtPmdldF9hdHRyaWJ1dGVzID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X2F0dHJpYnV0ZXM7
CisgIC8va2xhc3MtPnJlZl9zdGF0ZV9zZXQgPSB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfc3RhdGVf
c2V0OworICAvL2tsYXNzLT5yZWZfcmVsYXRpb25fc2V0ID0gd2Via2l0X2FjY2Vzc2libGVfcmVm
X3JlbGF0aW9uX3NldDsKK30KKworR1R5cGUgd2Via2l0X2FjY2Vzc2libGVfZ2V0X3R5cGUoKQor
eworICAgIHN0YXRpYyBHVHlwZSB0eXBlID0gMDsKKworICAgIGlmICghdHlwZSkgeworICAgICAg
ICBzdGF0aWMgY29uc3QgR1R5cGVJbmZvIHRpbmZvID0geworICAgICAgICAgICAgc2l6ZW9mKFdl
YktpdEFjY2Vzc2libGVDbGFzcyksCisgICAgICAgICAgICAoR0Jhc2VJbml0RnVuYylOVUxMLAor
ICAgICAgICAgICAgKEdCYXNlRmluYWxpemVGdW5jKU5VTEwsCisgICAgICAgICAgICAoR0NsYXNz
SW5pdEZ1bmMpd2Via2l0X2FjY2Vzc2libGVfY2xhc3NfaW5pdCwKKyAgICAgICAgICAgIChHQ2xh
c3NGaW5hbGl6ZUZ1bmMpTlVMTCwKKyAgICAgICAgICAgIE5VTEwsIC8qIGNsYXNzIGRhdGEgKi8K
KyAgICAgICAgICAgIHNpemVvZihXZWJLaXRBY2Nlc3NpYmxlKSwgLyogaW5zdGFuY2Ugc2l6ZSAq
LworICAgICAgICAgICAgMCwgLyogbmIgcHJlYWxsb2NzICovCisgICAgICAgICAgICAoR0luc3Rh
bmNlSW5pdEZ1bmMpTlVMTCwKKyAgICAgICAgICAgIE5VTEwgLyogdmFsdWUgdGFibGUgKi8KKyAg
ICAgICAgfTsKKworICAgICAgICB0eXBlID0gZ190eXBlX3JlZ2lzdGVyX3N0YXRpYyhBVEtfVFlQ
RV9PQkpFQ1QsICJXZWJLaXRBY2Nlc3NpYmxlIiwgJnRpbmZvLCBHVHlwZUZsYWdzKDApKTsKKyAg
ICB9CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK1dlYktpdEFjY2Vzc2libGUqIHdlYmtpdF9hY2Nl
c3NpYmxlX25ldyhBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QpCit7CisgICAgR1R5cGUgdHlw
ZSA9IFdFQktJVF9UWVBFX0FDQ0VTU0lCTEU7CisgICAgQXRrT2JqZWN0KiB0aGl6ID0gcmVpbnRl
cnByZXRfY2FzdDxBdGtPYmplY3QqPihnX29iamVjdF9uZXcodHlwZSwgTlVMTCkpOworICAgIGF0
a19vYmplY3RfaW5pdGlhbGl6ZSh0aGl6LCBvYmplY3QpOworICAgIHJldHVybiBXRUJLSVRfQUND
RVNTSUJMRSh0aGl6KTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogd2Via2l0X2FjY2Vzc2li
bGVfZ2V0X2FjY2Vzc2liaWxpdHlfb2JqZWN0KFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUp
Cit7CisgICAgcmV0dXJuIGFjY2Vzc2libGUtPm1fb2JqZWN0OworfQorCit2b2lkIHdlYmtpdF9h
Y2Nlc3NpYmxlX2RldGFjaChXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgYWNjZXNzaWJsZS0+bV9vYmplY3QgPSAwOworfQorCit9CisK
Ky8vIEFjY2Vzc2liaWxpdHlPYmplY3QgaW1wbGVtZW50YXRpb25zCisKK0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp3cmFwcGVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV93cmFwcGVyOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdy
YXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIpCit7CisgICAgaWYgKG1f
d3JhcHBlcikKKyAgICAgICAgZ19vYmplY3RfdW5yZWYobV93cmFwcGVyKTsKKworICAgIG1fd3Jh
cHBlciA9IHdyYXBwZXI7CisKKyAgICBpZiAobV93cmFwcGVyKQorICAgICAgICBnX29iamVjdF9y
ZWYobV93cmFwcGVyKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9wYWdlL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcGFnZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBOdWFudGkgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrX2gKKyNk
ZWZpbmUgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGtfaAorCisjaW5jbHVkZSA8YXRrL2F0
ay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7
CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFICAgICAg
ICAgICAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX2dldF90eXBlICgpKQorI2RlZmluZSBXRUJL
SVRfQUNDRVNTSUJMRShvYmopICAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5D
RV9DQVNUICgob2JqKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZSkp
CisjZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxFX0NMQVNTKGtsYXNzKSAgICAgICAgICAoR19UWVBF
X0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUsIFdlYktp
dEFjY2Vzc2libGVDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iaikgICAg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQ
RV9BQ0NFU1NJQkxFKSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQ0xBU1Moa2xhc3Mp
ICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfQUND
RVNTSUJMRSkpCisjZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxFX0dFVF9DTEFTUyhvYmopICAgICAg
ICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIFdFQktJVF9UWVBFX0FDQ0VTU0lC
TEUsIFdlYktpdEFjY2Vzc2libGVDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBY2Nl
c3NpYmxlICAgICAgICAgICAgICAgIFdlYktpdEFjY2Vzc2libGU7Cit0eXBlZGVmIHN0cnVjdCBf
V2ViS2l0QWNjZXNzaWJsZUNsYXNzICAgICAgICAgICBXZWJLaXRBY2Nlc3NpYmxlQ2xhc3M7CisK
K3N0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZQoreworICAgIEF0a09iamVjdCBwYXJlbnQ7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogbV9vYmplY3Q7Cit9OworCitzdHJ1Y3QgX1dlYktpdEFjY2Vz
c2libGVDbGFzcworeworICAgIEF0a09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dU
eXBlIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF90eXBlICh2b2lkKSBHX0dOVUNfQ09OU1Q7CisKK1dl
YktpdEFjY2Vzc2libGUqIHdlYmtpdF9hY2Nlc3NpYmxlX25ldyAoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0KTsKKworQWNjZXNzaWJpbGl0eU9iamVjdCogd2Via2l0X2FjY2Vzc2libGVfZ2V0
X2FjY2Vzc2liaWxpdHlfb2JqZWN0IChXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKTsKKwor
dm9pZCB3ZWJraXRfYWNjZXNzaWJsZV9kZXRhY2ggKFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2li
bGUpOworCitHX0VORF9ERUNMUworCit9CisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckF0a19oCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMzM1ODYpCisrKyBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkgQEAKKzIwMDgtMDUtMTkgIEFscCBUb2tl
ciAgPGFscEBudWFudGkuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorCiAyMDA4LTA1LTA2ICBD
aHJpc3RpYW4gRHl3YW4gIDxjaHJpc3RpYW5AdHdvdG9hc3RzLmRlPgogCiAgICAgICAgIFJ1YmJl
ciBzdGFtcGVkIGJ5IEFscC4KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShy
ZXZpc2lvbiAzMzU4MCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwNyBYYW4g
TG9wZXogPHhhbkBnbm9tZS5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8
YWxwQGF0b2tlci5jb20+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEphbiBBbG9uem8gPGptYWxv
bnpvQHVucGx1Z2dhYmxlLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDYgKzI5LDcgQEAKICNpbmNsdWRlICJ3ZWJraXR3
ZWJiYWNrZm9yd2FyZGxpc3QuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJoaXN0b3J5aXRlbS5oIgog
CisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgpAQCAt
MzYsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50R3RrLmgiCiAjaW5jbHVk
ZSAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50R3RrLmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50R3RrLmgiCkBAIC03MTQsNiArNzE3LDI2IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfbmF2aWdhdGlvbl9yZXF1ZXMKICAgcmV0dXJuIGNvbnRp
bnVlRW1pc3Npb247CiB9CiAKK3N0YXRpYyBBdGtPYmplY3QqIHdlYmtpdF93ZWJfdmlld19nZXRf
YWNjZXNzaWJsZShHdGtXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CisgICAgQVhPYmplY3RDYWNoZTo6ZW5hYmxl
QWNjZXNzaWJpbGl0eSgpOworCisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUod2ViVmlldykt
Pm1haW5GcmFtZSgpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gTlVMTDsK
KworICAgIERvY3VtZW50KiBkb2MgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFk
b2MpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZUFjY2Vzc2libGUgPSBkb2MtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0KGRvYy0+cmVuZGVyZXIoKSk7
CisgICAgaWYgKCFjb3JlQWNjZXNzaWJsZSB8fCAhY29yZUFjY2Vzc2libGUtPndyYXBwZXIoKSkK
KyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gY29yZUFjY2Vzc2libGUtPndyYXBw
ZXIoKTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0
V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiB7CiAgICAgR3RrQmluZGluZ1NldCogYmluZGlu
Z19zZXQ7CkBAIC0xMDgwLDYgKzExMDMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
Y2xhc3NfaW5pdChXCiAgICAgd2lkZ2V0Q2xhc3MtPnNpemVfYWxsb2NhdGUgPSB3ZWJraXRfd2Vi
X3ZpZXdfc2l6ZV9hbGxvY2F0ZTsKICAgICB3aWRnZXRDbGFzcy0+cG9wdXBfbWVudSA9IHdlYmtp
dF93ZWJfdmlld19wb3B1cF9tZW51X2hhbmRsZXI7CiAgICAgd2lkZ2V0Q2xhc3MtPmZvY3VzX2lu
X2V2ZW50ID0gd2Via2l0X3dlYl92aWV3X2ZvY3VzX2luX2V2ZW50OworICAgIHdpZGdldENsYXNz
LT5nZXRfYWNjZXNzaWJsZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfYWNjZXNzaWJsZTsKIAogICAg
IEd0a0NvbnRhaW5lckNsYXNzKiBjb250YWluZXJDbGFzcyA9IEdUS19DT05UQUlORVJfQ0xBU1Mo
d2ViVmlld0NsYXNzKTsKICAgICBjb250YWluZXJDbGFzcy0+YWRkID0gd2Via2l0X3dlYl92aWV3
X2NvbnRhaW5lcl9hZGQ7Cg==
</data>
<flag name="review"
          id="9280"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21242</attachid>
            <date>2008-05-19 18:07:20 -0700</date>
            <delta_ts>2008-05-19 18:09:32 -0700</delta_ts>
            <desc>Revised coding style suggested by andersca</desc>
            <filename>nuanti-webkit-atk-2.patch</filename>
            <type>text/plain</type>
            <size>19935</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDMzNTkwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDgtMDUtMTkgIEFscCBUb2tl
ciAgPGFscEBudWFudGkuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEluaXRpYWwgQVRLL0FULVNQSSBhY2Nlc3NpYmlsaXR5IHN1cHBvcnQgZm9y
IHRoZSBHVEsrIHBvcnQuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAwOC0wNS0x
OSAgS2V2aW4gTWNDdWxsb3VnaCAgPGttY2N1bGxvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBUaW0uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMzM1OTAp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjM2
LDYgKzIzNiw5IEBACiAKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKICNkZWZp
bmUgRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKEdUSykKICNkZWZpbmUgSEFWRV9BQ0NFU1NJ
QklMSVRZIDEKICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzM1OTApCisrKyBXZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDA4LTA1LTE5ICBBbHAgVG9rZXIg
IDxhbHBAbnVhbnRpLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbml0aWFsIEFUSy9BVC1TUEkgYWNjZXNzaWJpbGl0eSBzdXBwb3J0IGZvciB0
aGUgR1RLKyBwb3J0LgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogcGFn
ZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6ZGV0YWNoKToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaDoKKyAgICAgICAgKiBwYWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjpwb3N0Tm90aWZpY2F0aW9uVG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKToKKyAgICAg
ICAgKiBwYWdlL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OndyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0
V3JhcHBlcik6CisgICAgICAgICogcGFnZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJB
dGsuaDogQWRkZWQuCisKIDIwMDgtMDUtMTkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtLgpJbmRleDogV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lv
biAzMzU5MCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MzAsNiArMTAzMCw4IEBAIHdlYmtpdGd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCb3Vu
ZGFyaWVzSUNVLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9y
SUNVLmNwcCBcCisJV2ViQ29yZS9wYWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcCBcCisJV2Vi
Q29yZS9wYWdlL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgXAogCVdlYkNv
cmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcCBcCiAJV2ViQ29yZS9wYWdlL2d0ay9GcmFt
ZUd0ay5jcHAgXAogCVdlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIFwKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDMzNTkwKQorKysg
V2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Myw2ICs2Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5T2JqZWN0KCkKICAgICA6IG1faWQoMCkKICAgICAsIG1faGF2ZUNo
aWxkcmVuKGZhbHNlKQorI2lmIFBMQVRGT1JNKEdUSykKKyAgICAsIG1fd3JhcHBlcigwKQorI2Vu
ZGlmCiB7CiB9CiAKQEAgLTc1LDcgKzc4LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpk
ZXRhY2goKQogewogICAgIHJlbW92ZUFYT2JqZWN0SUQoKTsKICNpZiBIQVZFKEFDQ0VTU0lCSUxJ
VFkpCi0gICAgbV93cmFwcGVyID0gMDsKKyAgICBzZXRXcmFwcGVyKDApOwogI2VuZGlmICAgIAog
fQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDMzNTkwKQor
KysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDcgKzU2LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X05TUmFuZ2UgTlNSYW5nZTsKIEBjbGFzcyBXZWJDb3JlVGV4dE1hcmtlcjsKIEBjbGFzcyBXZWJD
b3JlVGV4dE1hcmtlclJhbmdlOwogI2Vsc2UKLWNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyOwogY2xhc3MgTlNBcnJheTsKIGNsYXNzIE5TQXR0cmlidXRlZFN0cmluZzsKIGNsYXNzIE5T
RGF0YTsKQEAgLTY1LDYgKzY1LDEyIEBAIGNsYXNzIE5TVmFsdWU7CiBjbGFzcyBOU1ZpZXc7CiBj
bGFzcyBXZWJDb3JlVGV4dE1hcmtlcjsKIGNsYXNzIFdlYkNvcmVUZXh0TWFya2VyUmFuZ2U7Cisj
aWYgUExBVEZPUk0oR1RLKQordHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBBdGtPYmplY3Q7Cit0
eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOworI2Vs
c2UKK2NsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOworI2VuZGlmCiAjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzQ4LDEyICszNTQsMTcgQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGRvQVhMaW5lRm9ySW5kZXgodW5zaWduZWQpOwogCiAjaWYgSEFWRShBQ0NFU1NJQklM
SVRZKQorI2lmIFBMQVRGT1JNKEdUSykKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciog
d3JhcHBlcigpIGNvbnN0OworICAgIHZvaWQgc2V0V3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciopOworI2Vsc2UKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBl
cigpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0V3JhcHBl
cihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcikgCiAgICAgewogICAgICAgICBt
X3dyYXBwZXIgPSB3cmFwcGVyOwogICAgIH0KICNlbmRpZgorI2VuZGlmCiAKIHByb3RlY3RlZDoK
ICAgICB1bnNpZ25lZCBtX2lkOwpAQCAtMzY4LDYgKzM3OSw4IEBAIHByb3RlY3RlZDoKICAgICBS
ZXRhaW5QdHI8QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IG1fd3JhcHBlcjsKICNlbGlmIFBM
QVRGT1JNKFdJTikKICAgICBDT01QdHI8QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IG1fd3Jh
cHBlcjsKKyNlbGlmIFBMQVRGT1JNKEdUSykKKyAgICBBdGtPYmplY3QqIG1fd3JhcHBlcjsKICNl
bmRpZgogfTsKIApJbmRleDogV2ViQ29yZS9wYWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvZ3RrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL2d0ay9BWE9iamVjdENhY2hlQXRrLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkg
THRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyQXRrLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBBWE9iamVj
dENhY2hlOjpkZXRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK3sKKyAgICB3
ZWJraXRfYWNjZXNzaWJsZV9kZXRhY2goV0VCS0lUX0FDQ0VTU0lCTEUob2JqLT53cmFwcGVyKCkp
KTsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaikKK3sKKyAgICBBdGtPYmplY3QqIGF0a09iaiA9IEFUS19PQkpFQ1Qod2Via2l0
X2FjY2Vzc2libGVfbmV3KG9iaikpOworICAgIG9iai0+c2V0V3JhcHBlcihhdGtPYmopOworICAg
IGdfb2JqZWN0X3VucmVmKGF0a09iaik7Cit9CisKK3ZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5v
dGlmaWNhdGlvbihSZW5kZXJPYmplY3QqLCBjb25zdCBTdHJpbmcmKQoreworfQorCit2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb25Ub0VsZW1lbnQoUmVuZGVyT2JqZWN0KiwgY29u
c3QgU3RyaW5nJikKK3sKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVGb2N1c2VkVUlF
bGVtZW50Q2hhbmdlZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvcGFnZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IE51YW50aSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5oIgorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCisjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorCisjaW5jbHVkZSA8YXRrL2F0ay5oPgorCitleHRlcm4gIkMiIHsK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBncG9pbnRlciBwYXJlbnRfY2xh
c3MgPSBOVUxMOworCitzdGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJsZV9pbml0KEF0a09iamVj
dCogb2JqZWN0LCBncG9pbnRlciBkYXRhKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0lTX0FDQ0VTU0lCTEUob2JqZWN0KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChkYXRhKTsKKwor
ICAgIGlmIChBVEtfT0JKRUNUX0NMQVNTKHBhcmVudF9jbGFzcyktPmluaXRpYWxpemUpCisgICAg
ICAgIEFUS19PQkpFQ1RfQ0xBU1MocGFyZW50X2NsYXNzKS0+aW5pdGlhbGl6ZShvYmplY3QsIGRh
dGEpOworCisgICAgV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KS0+bV9vYmplY3QgPSByZWludGVy
cHJldF9jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihkYXRhKTsKK30KKworc3RhdGljIHZvaWQg
d2Via2l0X2FjY2Vzc2libGVfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIGlmIChH
X09CSkVDVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSkKKyAgICAgICAgR19PQkpFQ1Rf
Q0xBU1MocGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIGNvbnN0
IGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbmFtZShBdGtPYmplY3QqIG9iamVjdCkKK3sK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gV0VCS0lUX0FDQ0VTU0lCTEUo
b2JqZWN0KS0+bV9vYmplY3Q7CisKKyAgICAvLyBUT0RPOiBEZWFsIHdpdGggbGF0ZXIgY2hhbmdl
cy4KKyAgICBpZiAoIW9iamVjdC0+bmFtZSkKKyAgICAgICAgYXRrX29iamVjdF9zZXRfbmFtZShv
YmplY3QsIGNvcmVPYmplY3QtPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIG9i
amVjdC0+bmFtZTsKK30KKworc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV9n
ZXRfZGVzY3JpcHRpb24oQXRrT2JqZWN0KiBvYmplY3QpCit7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogY29yZU9iamVjdCA9IFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCktPm1fb2JqZWN0Owor
CisgICAgLy8gVE9ETzogdGhlIE1vemlsbGEgTVNBQSBpbXBsZW1lbnRhdGlvbiBwcmVwZW5kcyAi
RGVzY3JpcHRpb246ICIKKyAgICAvLyBTaG91bGQgd2UgZG8gdGhpcyB0b28/CisKKyAgICAvLyBU
T0RPOiBEZWFsIHdpdGggbGF0ZXIgY2hhbmdlcy4KKyAgICBpZiAoIW9iamVjdC0+ZGVzY3JpcHRp
b24pCisgICAgICAgIGF0a19vYmplY3Rfc2V0X2Rlc2NyaXB0aW9uKG9iamVjdCwgY29yZU9iamVj
dC0+YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJu
IG9iamVjdC0+ZGVzY3JpcHRpb247Cit9CisKK0F0a09iamVjdCogd2Via2l0X2FjY2Vzc2libGVf
Z2V0X3BhcmVudChBdGtPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBjb3JlUGFyZW50ID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KS0+bV9vYmplY3QtPnBhcmVu
dE9iamVjdCgpOworCisgICAgaWYgKCFjb3JlUGFyZW50KQorICAgICAgICByZXR1cm4gTlVMTDsK
KworICAgIHJldHVybiBjb3JlUGFyZW50LT53cmFwcGVyKCk7Cit9CisKK3N0YXRpYyBnaW50IHdl
YmtpdF9hY2Nlc3NpYmxlX2dldF9uX2NoaWxkcmVuKEF0a09iamVjdCogb2JqZWN0KQoreworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmpl
Y3QpLT5tX29iamVjdDsKKyAgICByZXR1cm4gY29yZU9iamVjdC0+Y2hpbGRyZW4oKS5zaXplKCk7
Cit9CisKK3N0YXRpYyBBdGtPYmplY3QqIHdlYmtpdF9hY2Nlc3NpYmxlX3JlZl9jaGlsZChBdGtP
YmplY3QqIG9iamVjdCwgZ2ludCBpbmRleCkKK3sKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b3JlT2JqZWN0ID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KS0+bV9vYmplY3Q7CisKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChpbmRleCA+PSAwLCBOVUxMKTsKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChpbmRleCA8IGNvcmVPYmplY3QtPmNoaWxkcmVuKCkuc2l6ZSgpLCBOVUxMKTsKKwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVDaGlsZCA9IGNvcmVPYmplY3QtPmNoaWxkcmVu
KCkuYXQoaW5kZXgpLmdldCgpOworCisgICAgaWYgKCFjb3JlQ2hpbGQpCisgICAgICAgIHJldHVy
biBOVUxMOworCisgICAgQXRrT2JqZWN0KiBjaGlsZCA9IGNvcmVDaGlsZC0+d3JhcHBlcigpOwor
ICAgIGdfb2JqZWN0X3JlZihjaGlsZCk7CisKKyAgICByZXR1cm4gY2hpbGQ7Cit9CisKK3N0YXRp
YyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9pbmRleF9pbl9wYXJlbnQoQXRrT2JqZWN0KiBv
YmplY3QpCit7CisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQuCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIEF0a1JvbGUg
YXRrUm9sZShBY2Nlc3NpYmlsaXR5Um9sZSByb2xlKQoreworICAgIHN3aXRjaCAocm9sZSkgewor
ICAgIGNhc2UgV2ViQ29yZTo6QnV0dG9uUm9sZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX1BV
U0hfQlVUVE9OOworICAgIGNhc2UgV2ViQ29yZTo6UmFkaW9CdXR0b25Sb2xlOgorICAgICAgICBy
ZXR1cm4gQVRLX1JPTEVfUkFESU9fQlVUVE9OOworICAgIGNhc2UgV2ViQ29yZTo6Q2hlY2tCb3hS
b2xlOgorICAgICAgICByZXR1cm4gQVRLX1JPTEVfQ0hFQ0tfQk9YOworICAgIGNhc2UgV2ViQ29y
ZTo6U2xpZGVyUm9sZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX1NMSURFUjsKKyAgICBjYXNl
IFdlYkNvcmU6OlRhYkdyb3VwUm9sZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX1BBR0VfVEFC
X0xJU1Q7CisgICAgY2FzZSBXZWJDb3JlOjpUZXh0RmllbGRSb2xlOgorICAgIGNhc2UgV2ViQ29y
ZTo6VGV4dEFyZWFSb2xlOgorICAgIGNhc2UgV2ViQ29yZTo6TGlzdE1hcmtlclJvbGU6CisgICAg
ICAgIHJldHVybiBBVEtfUk9MRV9FTlRSWTsKKyAgICBjYXNlIFdlYkNvcmU6OlN0YXRpY1RleHRS
b2xlOgorICAgICAgICByZXR1cm4gQVRLX1JPTEVfVEVYVDsgLy8/CisgICAgY2FzZSBXZWJDb3Jl
OjpPdXRsaW5lUm9sZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX1RSRUU7CisgICAgY2FzZSBX
ZWJDb3JlOjpDb2x1bW5Sb2xlOgorICAgICAgICByZXR1cm4gQVRLX1JPTEVfVU5LTk9XTjsgLy8/
CisgICAgY2FzZSBXZWJDb3JlOjpSb3dSb2xlOgorICAgICAgICByZXR1cm4gQVRLX1JPTEVfTElT
VF9JVEVNOworICAgIGNhc2UgV2ViQ29yZTo6R3JvdXBSb2xlOgorICAgICAgICByZXR1cm4gQVRL
X1JPTEVfVU5LTk9XTjsgLy8/CisgICAgY2FzZSBXZWJDb3JlOjpMaXN0Um9sZToKKyAgICAgICAg
cmV0dXJuIEFUS19ST0xFX0xJU1Q7CisgICAgY2FzZSBXZWJDb3JlOjpUYWJsZVJvbGU6CisgICAg
ICAgIHJldHVybiBBVEtfUk9MRV9UQUJMRTsKKyAgICBjYXNlIFdlYkNvcmU6OkxpbmtSb2xlOgor
ICAgIGNhc2UgV2ViQ29yZTo6V2ViQ29yZUxpbmtSb2xlOgorICAgICAgICByZXR1cm4gQVRLX1JP
TEVfTElOSzsKKyAgICBjYXNlIFdlYkNvcmU6OkltYWdlTWFwUm9sZToKKyAgICBjYXNlIFdlYkNv
cmU6OkltYWdlUm9sZToKKyAgICAgICAgcmV0dXJuIEFUS19ST0xFX0lNQUdFOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBBVEtfUk9MRV9VTktOT1dOOworICAgIH0KK30KKworQXRrUm9s
ZSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcm9sZShBdGtPYmplY3QqIG9iamVjdCkKK3sKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0
KS0+bV9vYmplY3Q7CisgICAgcmV0dXJuIGF0a1JvbGUoY29yZU9iamVjdC0+cm9sZVZhbHVlKCkp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJsZV9jbGFzc19pbml0KEF0a09iamVj
dENsYXNzICprbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpF
Q1RfQ0xBU1Moa2xhc3MpOworCisgIHBhcmVudF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrX3Bh
cmVudChrbGFzcyk7CisKKyAga2xhc3MtPmluaXRpYWxpemUgPSB3ZWJraXRfYWNjZXNzaWJsZV9p
bml0OworCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2FjY2Vzc2libGVfZmlu
YWxpemU7CisKKyAga2xhc3MtPmdldF9uYW1lID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X25hbWU7
CisgIGtsYXNzLT5nZXRfZGVzY3JpcHRpb24gPSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfZGVzY3Jp
cHRpb247CisgIGtsYXNzLT5nZXRfcGFyZW50ID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X3BhcmVu
dDsKKyAga2xhc3MtPmdldF9uX2NoaWxkcmVuID0gd2Via2l0X2FjY2Vzc2libGVfZ2V0X25fY2hp
bGRyZW47CisgIGtsYXNzLT5yZWZfY2hpbGQgPSB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfY2hpbGQ7
CisgIC8va2xhc3MtPmdldF9pbmRleF9pbl9wYXJlbnQgPSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRf
aW5kZXhfaW5fcGFyZW50OworICBrbGFzcy0+Z2V0X3JvbGUgPSB3ZWJraXRfYWNjZXNzaWJsZV9n
ZXRfcm9sZTsKKyAgLy9rbGFzcy0+Z2V0X2F0dHJpYnV0ZXMgPSB3ZWJraXRfYWNjZXNzaWJsZV9n
ZXRfYXR0cmlidXRlczsKKyAgLy9rbGFzcy0+cmVmX3N0YXRlX3NldCA9IHdlYmtpdF9hY2Nlc3Np
YmxlX3JlZl9zdGF0ZV9zZXQ7CisgIC8va2xhc3MtPnJlZl9yZWxhdGlvbl9zZXQgPSB3ZWJraXRf
YWNjZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0OworfQorCitHVHlwZSB3ZWJraXRfYWNjZXNzaWJs
ZV9nZXRfdHlwZSgpCit7CisgICAgc3RhdGljIEdUeXBlIHR5cGUgPSAwOworCisgICAgaWYgKCF0
eXBlKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBHVHlwZUluZm8gdGluZm8gPSB7CisgICAgICAg
ICAgICBzaXplb2YoV2ViS2l0QWNjZXNzaWJsZUNsYXNzKSwKKyAgICAgICAgICAgIChHQmFzZUlu
aXRGdW5jKU5VTEwsCisgICAgICAgICAgICAoR0Jhc2VGaW5hbGl6ZUZ1bmMpTlVMTCwKKyAgICAg
ICAgICAgIChHQ2xhc3NJbml0RnVuYyl3ZWJraXRfYWNjZXNzaWJsZV9jbGFzc19pbml0LAorICAg
ICAgICAgICAgKEdDbGFzc0ZpbmFsaXplRnVuYylOVUxMLAorICAgICAgICAgICAgTlVMTCwgLyog
Y2xhc3MgZGF0YSAqLworICAgICAgICAgICAgc2l6ZW9mKFdlYktpdEFjY2Vzc2libGUpLCAvKiBp
bnN0YW5jZSBzaXplICovCisgICAgICAgICAgICAwLCAvKiBuYiBwcmVhbGxvY3MgKi8KKyAgICAg
ICAgICAgIChHSW5zdGFuY2VJbml0RnVuYylOVUxMLAorICAgICAgICAgICAgTlVMTCAvKiB2YWx1
ZSB0YWJsZSAqLworICAgICAgICB9OworCisgICAgICAgIHR5cGUgPSBnX3R5cGVfcmVnaXN0ZXJf
c3RhdGljKEFUS19UWVBFX09CSkVDVCwgIldlYktpdEFjY2Vzc2libGUiLCAmdGluZm8sIHN0YXRp
Y19jYXN0PEdUeXBlRmxhZ3M+KDApKTsKKyAgICB9CisgICAgcmV0dXJuIHR5cGU7Cit9CisKK1dl
YktpdEFjY2Vzc2libGUqIHdlYmtpdF9hY2Nlc3NpYmxlX25ldyhBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBjb3JlT2JqZWN0KQoreworICAgIEdUeXBlIHR5cGUgPSBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxF
OworICAgIEF0a09iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8QXRrT2JqZWN0Kj4oZ19vYmpl
Y3RfbmV3KHR5cGUsIE5VTEwpKTsKKyAgICBhdGtfb2JqZWN0X2luaXRpYWxpemUob2JqZWN0LCBj
b3JlT2JqZWN0KTsKKyAgICByZXR1cm4gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKK30KKwor
QWNjZXNzaWJpbGl0eU9iamVjdCogd2Via2l0X2FjY2Vzc2libGVfZ2V0X2FjY2Vzc2liaWxpdHlf
b2JqZWN0KFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCit7CisgICAgcmV0dXJuIGFjY2Vz
c2libGUtPm1fb2JqZWN0OworfQorCit2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2RldGFjaChXZWJL
aXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQoreworICAgIGFjY2Vzc2libGUtPm1fb2JqZWN0ID0g
MDsKK30KKworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEFjY2Vzc2liaWxpdHlPYmpl
Y3QgaW1wbGVtZW50YXRpb25zCisKK0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojp3cmFwcGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93cmFwcGVyOwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIpCit7CisgICAgaWYgKG1fd3JhcHBlcikKKyAgICAgICAgZ19v
YmplY3RfdW5yZWYobV93cmFwcGVyKTsKKworICAgIG1fd3JhcHBlciA9IHdyYXBwZXI7CisKKyAg
ICBpZiAobV93cmFwcGVyKQorICAgICAgICBnX29iamVjdF9yZWYobV93cmFwcGVyKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL2d0ay9BY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckF0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFn
ZS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVm
IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJBdGtfaAorCisjaW5jbHVkZSA8YXRrL2F0ay5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKK30KKworR19CRUdJTl9ERUNM
UworCisjZGVmaW5lIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUgICAgICAgICAgICAgICAgICAod2Vi
a2l0X2FjY2Vzc2libGVfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxFKG9i
aikgICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBX
RUJLSVRfVFlQRV9BQ0NFU1NJQkxFLCBXZWJLaXRBY2Nlc3NpYmxlKSkKKyNkZWZpbmUgV0VCS0lU
X0FDQ0VTU0lCTEVfQ0xBU1Moa2xhc3MpICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FT
VCAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZUNsYXNz
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqKSAgICAgICAgICAgICAgIChHX1RZ
UEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUpKQor
I2RlZmluZSBXRUJLSVRfSVNfQUNDRVNTSUJMRV9DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9D
SEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFKSkKKyNkZWZp
bmUgV0VCS0lUX0FDQ0VTU0lCTEVfR0VUX0NMQVNTKG9iaikgICAgICAgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTICgob2JqKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNz
aWJsZUNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGUgICAgICAgICAg
ICAgICAgV2ViS2l0QWNjZXNzaWJsZTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxl
Q2xhc3MgICAgICAgICAgIFdlYktpdEFjY2Vzc2libGVDbGFzczsKKworc3RydWN0IF9XZWJLaXRB
Y2Nlc3NpYmxlCit7CisgICAgQXRrT2JqZWN0IHBhcmVudDsKKyAgICBXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBtX29iamVjdDsKK307CisKK3N0cnVjdCBfV2ViS2l0QWNjZXNzaWJsZUNs
YXNzCit7CisgICAgQXRrT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR1R5cGUgd2Vi
a2l0X2FjY2Vzc2libGVfZ2V0X3R5cGUgKHZvaWQpIEdfR05VQ19DT05TVDsKKworV2ViS2l0QWNj
ZXNzaWJsZSogd2Via2l0X2FjY2Vzc2libGVfbmV3IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjb3JlX29iamVjdCk7CisKK1dlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIHdlYmtp
dF9hY2Nlc3NpYmxlX2dldF9hY2Nlc3NpYmlsaXR5X29iamVjdCAoV2ViS2l0QWNjZXNzaWJsZSog
YWNjZXNzaWJsZSk7CisKK3ZvaWQgd2Via2l0X2FjY2Vzc2libGVfZGV0YWNoIChXZWJLaXRBY2Nl
c3NpYmxlKiBhY2Nlc3NpYmxlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQXRrX2gKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAzMzU5MCkKKysrIFdlYktp
dC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDgtMDUt
MTkgIEFscCBUb2tlciAgPGFscEBudWFudGkuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWwgQVRLL0FULVNQSSBhY2Nlc3NpYmlsaXR5
IHN1cHBvcnQgZm9yIHRoZSBHVEsrIHBvcnQuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHA6CisKIDIwMDgtMDUtMDYgIENocmlzdGlhbiBEeXdhbiAgPGNocmlzdGlhbkB0d290
b2FzdHMuZGU+CiAKICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgQWxwLgpJbmRleDogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDMzNTkwKQorKysgV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDggSmFuIEFsb256byA8am1hbG9uem9AdW5wbHVnZ2FibGUuY29tPgorICogIENvcHly
aWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsNiAr
MjksNyBAQAogI2luY2x1ZGUgIndlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYmhpc3RvcnlpdGVtLmgiCiAKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIK
ICNpbmNsdWRlICJDU3RyaW5nLmgiCkBAIC0zNiw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ29udGV4
dE1lbnVDbGllbnRHdGsuaCIKICNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRyYWdD
bGllbnRHdGsuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRH
dGsuaCIKQEAgLTcxNCw2ICs3MTcsMjYgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF9uYXZpZ2F0
aW9uX3JlcXVlcwogICByZXR1cm4gY29udGludWVFbWlzc2lvbjsKIH0KIAorc3RhdGljIEF0a09i
amVjdCogd2Via2l0X3dlYl92aWV3X2dldF9hY2Nlc3NpYmxlKEd0a1dpZGdldCogd2lkZ2V0KQor
eworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsK
KyAgICBBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CisKKyAgICBGcmFtZSog
Y29yZUZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFjb3JlRnJh
bWUpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgRG9jdW1lbnQqIGRvYyA9IGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvYykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlQWNjZXNzaWJsZSA9IGRvYy0+YXhPYmplY3RDYWNo
ZSgpLT5nZXQoZG9jLT5yZW5kZXJlcigpKTsKKyAgICBpZiAoIWNvcmVBY2Nlc3NpYmxlIHx8ICFj
b3JlQWNjZXNzaWJsZS0+d3JhcHBlcigpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJl
dHVybiBjb3JlQWNjZXNzaWJsZS0+d3JhcHBlcigpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKIHsK
ICAgICBHdGtCaW5kaW5nU2V0KiBiaW5kaW5nX3NldDsKQEAgLTEwODAsNiArMTEwMyw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAgICB3aWRnZXRDbGFzcy0+
c2l6ZV9hbGxvY2F0ZSA9IHdlYmtpdF93ZWJfdmlld19zaXplX2FsbG9jYXRlOwogICAgIHdpZGdl
dENsYXNzLT5wb3B1cF9tZW51ID0gd2Via2l0X3dlYl92aWV3X3BvcHVwX21lbnVfaGFuZGxlcjsK
ICAgICB3aWRnZXRDbGFzcy0+Zm9jdXNfaW5fZXZlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNf
aW5fZXZlbnQ7CisgICAgd2lkZ2V0Q2xhc3MtPmdldF9hY2Nlc3NpYmxlID0gd2Via2l0X3dlYl92
aWV3X2dldF9hY2Nlc3NpYmxlOwogCiAgICAgR3RrQ29udGFpbmVyQ2xhc3MqIGNvbnRhaW5lckNs
YXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIGNvbnRhaW5lckNs
YXNzLT5hZGQgPSB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2FkZDsK
</data>
<flag name="review"
          id="9281"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21334</attachid>
            <date>2008-05-25 05:18:48 -0700</date>
            <delta_ts>2008-05-26 09:41:03 -0700</delta_ts>
            <desc>AT-SPI accessibility enhancements</desc>
            <filename>nuanti-atk-navi.patch</filename>
            <type>text/plain</type>
            <size>22943</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDEyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMDgtMDUtMjUgIEFscCBUb2tlciAgPGFscEBudWFudGkuY29tPgor
CisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDk1Cisg
ICAgICAgIFtHVEtdIEFjY2Vzc2liaWxpdHkgc3VwcG9ydCB3aXRoIEFUSy9BVC1TUEkKKworICAg
ICAgICBJbXBsZW1lbnQgYmFzaWMgYWN0aW9uLCB0ZXh0IGFuZCBlZGl0YWJsZSB0ZXh0IGFjY2Vz
c2liaWxpdHkuCisKKyAgICAgICAgUHJvdmlkZSB1dGlsaXR5IGZ1bmN0aW9ucyB0byBzaW1wbGlm
eSBjb25zdCBzdHJpbmcgcmV0dXJuIGFuZCBjYXN0aW5nCisgICAgICAgIGFuZCBhZGQgc29tZSBt
b3JlIHN0dWJzLgorCisgICAgICAgIEl0J3Mgbm93IHBvc3NpYmxlIHRvIG5hdmlnYXRlIGFuZCBt
YW5pcHVsYXRlIGZvcm1zIGFuZCB0ZXh0IHVzaW5nCisgICAgICAgIGFzc2lzdGl2ZSB0ZWNobm9s
b2dpZXMuCisKKyAgICAgICAgKiBwYWdlL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHA6CisgICAgICAgIChyZXR1cm5TdHJpbmcpOgorICAgICAgICAoY29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QVhCdXR0b25BY3Rpb25WZXJiKToKKyAgICAgICAgKFdlYkNvcmU6OkFYUmFkaW9CdXR0b25B
Y3Rpb25WZXJiKToKKyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dEZpZWxkQWN0aW9uVmVyYik6Cisg
ICAgICAgIChXZWJDb3JlOjpBWENoZWNrZWRDaGVja0JveEFjdGlvblZlcmIpOgorICAgICAgICAo
V2ViQ29yZTo6QVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhMaW5rQWN0aW9uVmVyYik6CisgICAgICAgIChXZWJDb3JlOjppbWFnZVRpdGxlKToKKwog
MjAwOC0wNS0yNSAgSmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbHAgVG9rZXIuCkluZGV4OiBXZWJDb3JlL3BhZ2UvZ3RrL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAkocmV2aXNpb24gMzQxMjQp
CisrKyBXZWJDb3JlL3BhZ2UvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjMsMTUgKzIzLDY1IEBACiAjaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCiAjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogI2luY2x1
ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVkaXRvci5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKICNpbmNsdWRlIDxhdGsv
YXRrLmg+CiAKLWV4dGVybiAiQyIgewotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorLy8g
VXNlZCB0byBwcm92aWRlIGNvbnN0IGdjaGFyKiByZXR1cm5zLgorc3RhdGljIGNvbnN0IGNoYXIq
IHJldHVyblN0cmluZyhTdHJpbmcgc3RyKQoreworICAgIHN0YXRpYyBDU3RyaW5nIHJldHVybmVk
U3RyaW5nOworICAgIHJldHVybmVkU3RyaW5nID0gc3RyLnV0ZjgoKTsKKyAgICByZXR1cm4gcmV0
dXJuZWRTdHJpbmcuZGF0YSgpOworfQorCitzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZShXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQoreworICAgIGlmICghYWNjZXNzaWJsZSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gYWNjZXNzaWJsZS0+bV9vYmplY3Q7Cit9
CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a09iamVjdCogb2JqZWN0KQor
eworICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICByZXR1cm4gY29yZShXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpKTsKK30KKwor
c3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrQWN0aW9uKiBhY3Rpb24pCit7Cisg
ICAgcmV0dXJuIGNvcmUoQVRLX09CSkVDVChhY3Rpb24pKTsKK30KKworc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmUoQXRrU3RyZWFtYWJsZUNvbnRlbnQqIHN0cmVhbWFibGUpCit7Cisg
ICAgcmV0dXJuIGNvcmUoQVRLX09CSkVDVChzdHJlYW1hYmxlKSk7Cit9CisKK3N0YXRpYyBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBjb3JlKEF0a1RleHQqIHRleHQpCit7CisgICAgcmV0dXJuIGNvcmUo
QVRLX09CSkVDVCh0ZXh0KSk7Cit9CisKK3N0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jl
KEF0a0VkaXRhYmxlVGV4dCogdGV4dCkKK3sKKyAgICByZXR1cm4gY29yZShBVEtfT0JKRUNUKHRl
eHQpKTsKK30KKworZXh0ZXJuICJDIiB7CisKIHN0YXRpYyBncG9pbnRlciBwYXJlbnRfY2xhc3Mg
PSBOVUxMOwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJsZV9pbml0KEF0a09iamVjdCog
b2JqZWN0LCBncG9pbnRlciBkYXRhKQpAQCAtNDcsMzYgKzk3LDM1IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9hY2Nlc3NpYmxlX2luaXQoQXRrT2IKIAogc3RhdGljIHZvaWQgd2Via2l0X2FjY2Vzc2li
bGVfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogeworICAgIC8vIFRoaXMgaXMgYSBnb29kIHRp
bWUgdG8gY2xlYXIgdGhlIHJldHVybiBidWZmZXIuCisgICAgcmV0dXJuU3RyaW5nKFN0cmluZygp
KTsKKwogICAgIGlmIChHX09CSkVDVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSkKICAg
ICAgICAgR19PQkpFQ1RfQ0xBU1MocGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0K
IAogc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbmFtZShBdGtPYmpl
Y3QqIG9iamVjdCkKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gV0VC
S0lUX0FDQ0VTU0lCTEUob2JqZWN0KS0+bV9vYmplY3Q7Ci0KICAgICAvLyBUT0RPOiBEZWFsIHdp
dGggbGF0ZXIgY2hhbmdlcy4KICAgICBpZiAoIW9iamVjdC0+bmFtZSkKLSAgICAgICAgYXRrX29i
amVjdF9zZXRfbmFtZShvYmplY3QsIGNvcmVPYmplY3QtPnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIGF0a19vYmplY3Rfc2V0X25hbWUob2JqZWN0LCBjb3JlKG9iamVjdCktPnRpdGxl
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIG9iamVjdC0+bmFtZTsKIH0KIAogc3RhdGlj
IGNvbnN0IGdjaGFyKiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfZGVzY3JpcHRpb24oQXRrT2JqZWN0
KiBvYmplY3QpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCA9IFdFQktJ
VF9BQ0NFU1NJQkxFKG9iamVjdCktPm1fb2JqZWN0OwotCiAgICAgLy8gVE9ETzogdGhlIE1vemls
bGEgTVNBQSBpbXBsZW1lbnRhdGlvbiBwcmVwZW5kcyAiRGVzY3JpcHRpb246ICIKICAgICAvLyBT
aG91bGQgd2UgZG8gdGhpcyB0b28/CiAKICAgICAvLyBUT0RPOiBEZWFsIHdpdGggbGF0ZXIgY2hh
bmdlcy4KICAgICBpZiAoIW9iamVjdC0+ZGVzY3JpcHRpb24pCi0gICAgICAgIGF0a19vYmplY3Rf
c2V0X2Rlc2NyaXB0aW9uKG9iamVjdCwgY29yZU9iamVjdC0+YWNjZXNzaWJpbGl0eURlc2NyaXB0
aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGF0a19vYmplY3Rfc2V0X2Rlc2NyaXB0aW9u
KG9iamVjdCwgY29yZShvYmplY3QpLT5hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKS51dGY4KCku
ZGF0YSgpKTsKICAgICByZXR1cm4gb2JqZWN0LT5kZXNjcmlwdGlvbjsKIH0KIAotQXRrT2JqZWN0
KiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcGFyZW50KEF0a09iamVjdCogb2JqZWN0KQorc3RhdGlj
IEF0a09iamVjdCogd2Via2l0X2FjY2Vzc2libGVfZ2V0X3BhcmVudChBdGtPYmplY3QqIG9iamVj
dCkKIHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlUGFyZW50ID0gV0VCS0lUX0FDQ0VT
U0lCTEUob2JqZWN0KS0+bV9vYmplY3QtPnBhcmVudE9iamVjdCgpOworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcmVQYXJlbnQgPSBjb3JlKG9iamVjdCktPnBhcmVudE9iamVjdCgpOwogCiAg
ICAgaWYgKCFjb3JlUGFyZW50KQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTg2LDEzICsxMzUs
MTIgQEAgQXRrT2JqZWN0KiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcGFyZW50KAogCiBzdGF0aWMg
Z2ludCB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbl9jaGlsZHJlbihBdGtPYmplY3QqIG9iamVjdCkK
IHsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gV0VCS0lUX0FDQ0VTU0lC
TEUob2JqZWN0KS0+bV9vYmplY3Q7Ci0gICAgcmV0dXJuIGNvcmVPYmplY3QtPmNoaWxkcmVuKCku
c2l6ZSgpOworICAgIHJldHVybiBjb3JlKG9iamVjdCktPmNoaWxkcmVuKCkuc2l6ZSgpOwogfQog
CiBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfY2hpbGQoQXRrT2JqZWN0
KiBvYmplY3QsIGdpbnQgaW5kZXgpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9i
amVjdCA9IFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCktPm1fb2JqZWN0OworICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7CiAKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChpbmRleCA+PSAwLCBOVUxMKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChp
bmRleCA8IGNvcmVPYmplY3QtPmNoaWxkcmVuKCkuc2l6ZSgpLCBOVUxMKTsKQEAgLTEwMyw2ICsx
NTEsOCBAQCBzdGF0aWMgQXRrT2JqZWN0KiB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfCiAgICAgICAg
IHJldHVybiBOVUxMOwogCiAgICAgQXRrT2JqZWN0KiBjaGlsZCA9IGNvcmVDaGlsZC0+d3JhcHBl
cigpOworICAgIC8vIFRPRE86IFNob3VsZCB3ZSBjYWxsIGF0a19vYmplY3Rfc2V0X3BhcmVudCgp
IGhlcmU/CisgICAgLy9hdGtfb2JqZWN0X3NldF9wYXJlbnQoY2hpbGQsIG9iamVjdCk7CiAgICAg
Z19vYmplY3RfcmVmKGNoaWxkKTsKIAogICAgIHJldHVybiBjaGlsZDsKQEAgLTE1NywzMiArMjA3
LDM2NCBAQCBzdGF0aWMgQXRrUm9sZSBhdGtSb2xlKEFjY2Vzc2liaWxpdHlSb2xlCiAgICAgfQog
fQogCi1BdGtSb2xlIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9yb2xlKEF0a09iamVjdCogb2JqZWN0
KQorc3RhdGljIEF0a1JvbGUgd2Via2l0X2FjY2Vzc2libGVfZ2V0X3JvbGUoQXRrT2JqZWN0KiBv
YmplY3QpCit7CisgICAgcmV0dXJuIGF0a1JvbGUoY29yZShvYmplY3QpLT5yb2xlVmFsdWUoKSk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2NsYXNzX2luaXQoQXRrT2JqZWN0
Q2xhc3MqIGtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKGtsYXNzKTsKKworICAgIHBhcmVudF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVr
X3BhcmVudChrbGFzcyk7CisKKyAgICBrbGFzcy0+aW5pdGlhbGl6ZSA9IHdlYmtpdF9hY2Nlc3Np
YmxlX2luaXQ7CisKKyAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9hY2Nlc3Np
YmxlX2ZpbmFsaXplOworCisgICAga2xhc3MtPmdldF9uYW1lID0gd2Via2l0X2FjY2Vzc2libGVf
Z2V0X25hbWU7CisgICAga2xhc3MtPmdldF9kZXNjcmlwdGlvbiA9IHdlYmtpdF9hY2Nlc3NpYmxl
X2dldF9kZXNjcmlwdGlvbjsKKyAgICBrbGFzcy0+Z2V0X3BhcmVudCA9IHdlYmtpdF9hY2Nlc3Np
YmxlX2dldF9wYXJlbnQ7CisgICAga2xhc3MtPmdldF9uX2NoaWxkcmVuID0gd2Via2l0X2FjY2Vz
c2libGVfZ2V0X25fY2hpbGRyZW47CisgICAga2xhc3MtPnJlZl9jaGlsZCA9IHdlYmtpdF9hY2Nl
c3NpYmxlX3JlZl9jaGlsZDsKKyAgICAvL2tsYXNzLT5nZXRfaW5kZXhfaW5fcGFyZW50ID0gd2Vi
a2l0X2FjY2Vzc2libGVfZ2V0X2luZGV4X2luX3BhcmVudDsKKyAgICBrbGFzcy0+Z2V0X3JvbGUg
PSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcm9sZTsKKyAgICAvL2tsYXNzLT5nZXRfYXR0cmlidXRl
cyA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9hdHRyaWJ1dGVzOworICAgIC8va2xhc3MtPnJlZl9z
dGF0ZV9zZXQgPSB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfc3RhdGVfc2V0OworICAgIC8va2xhc3Mt
PnJlZl9yZWxhdGlvbl9zZXQgPSB3ZWJraXRfYWNjZXNzaWJsZV9yZWZfcmVsYXRpb25fc2V0Owor
fQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2FjY2Vzc2libGVfYWN0aW9uX2RvX2FjdGlvbihB
dGtBY3Rpb24qIGFjdGlvbiwgZ2ludCBpKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGkg
PT0gMCwgRkFMU0UpOworICAgIHJldHVybiBjb3JlKGFjdGlvbiktPnBlcmZvcm1EZWZhdWx0QWN0
aW9uKCk7Cit9CisKK3N0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX2FjdGlvbl9nZXRfbl9h
Y3Rpb25zKEF0a0FjdGlvbiogYWN0aW9uKQoreworICAgIHJldHVybiAxOworfQorCitzdGF0aWMg
Y29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX2FjdGlvbl9nZXRfZGVzY3JpcHRpb24oQXRr
QWN0aW9uKiBhY3Rpb24sIGdpbnQgaSkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChpID09
IDAsIE5VTEwpOworICAgIC8vIFRPRE86IE5lZWQgYSB3YXkgdG8gcHJvdmlkZS9sb2NhbGl6ZSBh
Y3Rpb24gZGVzY3JpcHRpb25zLgorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuICIi
OworfQorCitzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX2FjdGlvbl9nZXRf
a2V5YmluZGluZyhBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCBpKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGkgPT0gMCwgTlVMTCk7CisgICAgLy8gRklYTUU6IENvbnN0cnVjdCBhIHByb3Bl
ciBrZXliaW5kaW5nIHN0cmluZy4KKyAgICByZXR1cm4gcmV0dXJuU3RyaW5nKGNvcmUoYWN0aW9u
KS0+YWNjZXNzS2V5KCkuc3RyaW5nKCkpOworfQorCitzdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtp
dF9hY2Nlc3NpYmxlX2FjdGlvbl9nZXRfbmFtZShBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCBpKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGkgPT0gMCwgTlVMTCk7CisgICAgcmV0dXJuIHJl
dHVyblN0cmluZyhjb3JlKGFjdGlvbiktPmFjdGlvblZlcmIoKSk7Cit9CisKK3N0YXRpYyB2b2lk
IGF0a19hY3Rpb25faW50ZXJmYWNlX2luaXQoQXRrQWN0aW9uSWZhY2UqIGlmYWNlKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoaWZhY2UpOworCisgICAgaWZhY2UtPmRvX2FjdGlvbiA9IHdlYmtp
dF9hY2Nlc3NpYmxlX2FjdGlvbl9kb19hY3Rpb247CisgICAgaWZhY2UtPmdldF9uX2FjdGlvbnMg
PSB3ZWJraXRfYWNjZXNzaWJsZV9hY3Rpb25fZ2V0X25fYWN0aW9uczsKKyAgICBpZmFjZS0+Z2V0
X2Rlc2NyaXB0aW9uID0gd2Via2l0X2FjY2Vzc2libGVfYWN0aW9uX2dldF9kZXNjcmlwdGlvbjsK
KyAgICBpZmFjZS0+Z2V0X2tleWJpbmRpbmcgPSB3ZWJraXRfYWNjZXNzaWJsZV9hY3Rpb25fZ2V0
X2tleWJpbmRpbmc7CisgICAgaWZhY2UtPmdldF9uYW1lID0gd2Via2l0X2FjY2Vzc2libGVfYWN0
aW9uX2dldF9uYW1lOworfQorCisvLyBUZXh0CisKK3N0YXRpYyBnY2hhciogd2Via2l0X2FjY2Vz
c2libGVfdGV4dF9nZXRfdGV4dChBdGtUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0X29mZnNldCwgZ2lu
dCBlbmRfb2Zmc2V0KQoreworICAgIFN0cmluZyByZXQgPSBjb3JlKHRleHQpLT5kb0FYU3RyaW5n
Rm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2Uoc3RhcnRfb2Zmc2V0LCBlbmRfb2Zmc2V0IC0gc3RhcnRf
b2Zmc2V0KSk7CisgICAgLy8gVE9ETzogSW50ZW50aW9uYWxseSBjb3BpZWQ/CisgICAgcmV0dXJu
IGdfc3RyZHVwKHJldC51dGY4KCkuZGF0YSgpKTsKK30KKworc3RhdGljIGdjaGFyKiB3ZWJraXRf
YWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0X2FmdGVyX29mZnNldChBdGtUZXh0KiB0ZXh0LCBnaW50
IG9mZnNldCwgQXRrVGV4dEJvdW5kYXJ5IGJvdW5kYXJ5X3R5cGUsIGdpbnQqIHN0YXJ0X29mZnNl
dCwgZ2ludCogZW5kX29mZnNldCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBOVUxMOworfQorCitzdGF0aWMgZ2NoYXIqIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3Rl
eHRfYXRfb2Zmc2V0KEF0a1RleHQqIHRleHQsIGdpbnQgb2Zmc2V0LCBBdGtUZXh0Qm91bmRhcnkg
Ym91bmRhcnlfdHlwZSwgZ2ludCogc3RhcnRfb2Zmc2V0LCBnaW50KiBlbmRfb2Zmc2V0KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBndW5p
Y2hhciB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9jaGFyYWN0ZXJfYXRfb2Zmc2V0KEF0a1Rl
eHQqIHRleHQsIGdpbnQgb2Zmc2V0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyBnY2hhciogd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4
dF9iZWZvcmVfb2Zmc2V0KEF0a1RleHQqIHRleHQsIGdpbnQgb2Zmc2V0LCBBdGtUZXh0Qm91bmRh
cnkgYm91bmRhcnlfdHlwZSwgZ2ludCogc3RhcnRfb2Zmc2V0LCBnaW50KiBlbmRfb2Zmc2V0KQog
ewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBXRUJLSVRfQUNDRVNTSUJM
RShvYmplY3QpLT5tX29iamVjdDsKLSAgICByZXR1cm4gYXRrUm9sZShjb3JlT2JqZWN0LT5yb2xl
VmFsdWUoKSk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwor
c3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEF0a1Rl
eHQqIHRleHQpCit7CisgICAgLy8gVE9ETzogVmVyaWZ5IHRoaXMsIGVzcGVjaWFsbHkgZm9yIFJU
TCB0ZXh0LgorICAgIHJldHVybiBjb3JlKHRleHQpLT5zZWxlY3Rpb25TdGFydCgpOwogfQogCi1z
dGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJsZV9jbGFzc19pbml0KEF0a09iamVjdENsYXNzICpr
bGFzcykKK3N0YXRpYyBBdGtBdHRyaWJ1dGVTZXQqIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0
X3J1bl9hdHRyaWJ1dGVzKEF0a1RleHQqIHRleHQsIGdpbnQgb2Zmc2V0LCBnaW50KiBzdGFydF9v
ZmZzZXQsIGdpbnQqIGVuZF9vZmZzZXQpCiB7Ci0gIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFz
cyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBOVUxMOworfQorCitzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRfYWNjZXNzaWJs
ZV90ZXh0X2dldF9kZWZhdWx0X2F0dHJpYnV0ZXMoQXRrVGV4dCogdGV4dCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRf
YWNjZXNzaWJsZV90ZXh0X2dldF9jaGFyYWN0ZXJfZXh0ZW50cyhBdGtUZXh0KiB0ZXh0LCBnaW50
IG9mZnNldCwgZ2ludCogeCwgZ2ludCogeSwgZ2ludCogd2lkdGgsIGdpbnQqIGhlaWdodCwgQXRr
Q29vcmRUeXBlIGNvb3JkcykKK3sKKyAgICBJbnRSZWN0IGV4dGVudHMgPSBjb3JlKHRleHQpLT5k
b0FYQm91bmRzRm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2Uob2Zmc2V0LCAxKSk7CisgICAgLy8gRklY
TUU6IFVzZSB0aGUgQXRrQ29vcmRUeXBlCisgICAgLy8gUmVxdWlyZXMgV2ViQ29yZTo6U2Nyb2xs
Vmlldzo6Y29udGVudHNUb1NjcmVlbigpIHRvIGJlIGltcGxlbWVudGVkCisKKyNpZiAwCisgICAg
c3dpdGNoKGNvb3JkcykgeworICAgIGNhc2UgQVRLX1hZX1NDUkVFTjoKKyAgICAgICAgZXh0ZW50
cyA9IGNvcmUodGV4dCktPmRvY3VtZW50KCktPnZpZXcoKS0+Y29udGVudHNUb1NjcmVlbihleHRl
bnRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBVEtfWFlfV0lORE9XOgorICAgICAgICAv
LyBOby1vcAorICAgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYKIAotICBwYXJlbnRfY2xhc3Mg
PSBnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQoa2xhc3MpOworICAgICp4ID0gZXh0ZW50cy54KCk7
CisgICAgKnkgPSBleHRlbnRzLnkoKTsKKyAgICAqd2lkdGggPSBleHRlbnRzLndpZHRoKCk7Cisg
ICAgKmhlaWdodCA9IGV4dGVudHMuaGVpZ2h0KCk7Cit9CiAKLSAga2xhc3MtPmluaXRpYWxpemUg
PSB3ZWJraXRfYWNjZXNzaWJsZV9pbml0Oworc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVf
dGV4dF9nZXRfY2hhcmFjdGVyX2NvdW50KEF0a1RleHQqIHRleHQpCit7CisgICAgcmV0dXJuIGNv
cmUodGV4dCktPnRleHRMZW5ndGgoKTsKK30KIAotICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdF9hY2Nlc3NpYmxlX2ZpbmFsaXplOworc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2li
bGVfdGV4dF9nZXRfb2Zmc2V0X2F0X3BvaW50KEF0a1RleHQqIHRleHQsIGdpbnQgeCwgZ2ludCB5
LCBBdGtDb29yZFR5cGUgY29vcmRzKQoreworICAgIC8vIEZJWE1FOiBVc2UgdGhlIEF0a0Nvb3Jk
VHlwZQorICAgIC8vIFRPRE86IElzIGl0IGNvcnJlY3QgdG8gaWdub3JlIHJhbmdlLmxlbmd0aD8K
KyAgICBJbnRQb2ludCBwb3MoeCwgeSk7CisgICAgUGxhaW5UZXh0UmFuZ2UgcmFuZ2UgPSBjb3Jl
KHRleHQpLT5kb0FYUmFuZ2VGb3JQb3NpdGlvbihwb3MpOworICAgIHJldHVybiByYW5nZS5zdGFy
dDsKK30KIAotICBrbGFzcy0+Z2V0X25hbWUgPSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbmFtZTsK
LSAga2xhc3MtPmdldF9kZXNjcmlwdGlvbiA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9kZXNjcmlw
dGlvbjsKLSAga2xhc3MtPmdldF9wYXJlbnQgPSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcGFyZW50
OwotICBrbGFzcy0+Z2V0X25fY2hpbGRyZW4gPSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfbl9jaGls
ZHJlbjsKLSAga2xhc3MtPnJlZl9jaGlsZCA9IHdlYmtpdF9hY2Nlc3NpYmxlX3JlZl9jaGlsZDsK
LSAgLy9rbGFzcy0+Z2V0X2luZGV4X2luX3BhcmVudCA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9p
bmRleF9pbl9wYXJlbnQ7Ci0gIGtsYXNzLT5nZXRfcm9sZSA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dl
dF9yb2xlOwotICAvL2tsYXNzLT5nZXRfYXR0cmlidXRlcyA9IHdlYmtpdF9hY2Nlc3NpYmxlX2dl
dF9hdHRyaWJ1dGVzOwotICAvL2tsYXNzLT5yZWZfc3RhdGVfc2V0ID0gd2Via2l0X2FjY2Vzc2li
bGVfcmVmX3N0YXRlX3NldDsKLSAgLy9rbGFzcy0+cmVmX3JlbGF0aW9uX3NldCA9IHdlYmtpdF9h
Y2Nlc3NpYmxlX3JlZl9yZWxhdGlvbl9zZXQ7CitzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJs
ZV90ZXh0X2dldF9uX3NlbGVjdGlvbnMoQXRrVGV4dCogdGV4dCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgZ2NoYXIqIHdlYmtpdF9hY2Nlc3Np
YmxlX3RleHRfZ2V0X3NlbGVjdGlvbihBdGtUZXh0KiB0ZXh0LCBnaW50IHNlbGVjdGlvbl9udW0s
IGdpbnQqIHN0YXJ0X29mZnNldCwgZ2ludCogZW5kX29mZnNldCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2Fj
Y2Vzc2libGVfdGV4dF9hZGRfc2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdpbnQgc3RhcnRfb2Zm
c2V0LCBnaW50IGVuZF9vZmZzZXQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X3Jl
bW92ZV9zZWxlY3Rpb24oQXRrVGV4dCogdGV4dCwgZ2ludCBzZWxlY3Rpb25fbnVtKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0X2FjY2Vzc2libGVfdGV4dF9zZXRfc2VsZWN0aW9uKEF0a1RleHQqIHRleHQsIGdp
bnQgc2VsZWN0aW9uX251bSwgZ2ludCBzdGFydF9vZmZzZXQsIGdpbnQgZW5kX29mZnNldCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdi
b29sZWFuIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfc2V0X2NhcmV0X29mZnNldChBdGtUZXh0KiB0
ZXh0LCBnaW50IG9mZnNldCkKK3sKKyAgICAvLyBUT0RPOiBWZXJpZnkKKyAgICAvL2NvcmUodGV4
dCktPnNldFNlbGVjdGVkVGV4dFJhbmdlKFBsYWluVGV4dFJhbmdlKG9mZnNldCwgMCkpOworICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKHRleHQpOworICAgIGNvcmVP
YmplY3QtPmRvU2V0QVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZShjb3JlT2JqZWN0LT50ZXh0TWFy
a2VyUmFuZ2VGb3JSYW5nZShQbGFpblRleHRSYW5nZShvZmZzZXQsIDApKSk7CisgICAgcmV0dXJu
IFRSVUU7Cit9CisKKyNpZiAwCisvLyBTaWduYWwgaGFuZGxlcnMKK3N0YXRpYyB2b2lkIHdlYmtp
dF9hY2Nlc3NpYmxlX3RleHRfdGV4dF9jaGFuZ2VkKEF0a1RleHQqIHRleHQsIGdpbnQgcG9zaXRp
b24sIGdpbnQgbGVuZ3RoKQoreworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfYWNjZXNzaWJsZV90
ZXh0X3RleHRfY2FyZXRfbW92ZWQoQXRrVGV4dCogdGV4dCwgZ2ludCBsb2NhdGlvbikKK3sKK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X2FjY2Vzc2libGVfdGV4dF90ZXh0X3NlbGVjdGlvbl9jaGFu
Z2VkKEF0a1RleHQqIHRleHQpCit7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxl
X3RleHRfdGV4dF9hdHRyaWJ1dGVzX2NoYW5nZWQoQXRrVGV4dCogdGV4dCkKK3sKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfcmFuZ2VfZXh0ZW50cyhBdGtUZXh0
KiB0ZXh0LCBnaW50IHN0YXJ0X29mZnNldCwgZ2ludCBlbmRfb2Zmc2V0LCBBdGtDb29yZFR5cGUg
Y29vcmRfdHlwZSwgQXRrVGV4dFJlY3RhbmdsZSogcmVjdCkKK3sKK30KKworc3RhdGljIEF0a1Rl
eHRSYW5nZSoqIHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2JvdW5kZWRfcmFuZ2VzKEF0a1Rl
eHQqIHRleHQsIEF0a1RleHRSZWN0YW5nbGUqIHJlY3QsIEF0a0Nvb3JkVHlwZSBjb29yZF90eXBl
LCBBdGtUZXh0Q2xpcFR5cGUgeF9jbGlwX3R5cGUsIEF0a1RleHRDbGlwVHlwZSB5X2NsaXBfdHlw
ZSkKK3sKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBhdGtfdGV4dF9pbnRlcmZhY2VfaW5pdChB
dGtUZXh0SWZhY2UqIGlmYWNlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaWZhY2UpOworCisg
ICAgaWZhY2UtPmdldF90ZXh0ID0gd2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfdGV4dDsKKyAg
ICBpZmFjZS0+Z2V0X3RleHRfYWZ0ZXJfb2Zmc2V0ID0gd2Via2l0X2FjY2Vzc2libGVfdGV4dF9n
ZXRfdGV4dF9hZnRlcl9vZmZzZXQ7CisgICAgaWZhY2UtPmdldF90ZXh0X2F0X29mZnNldCA9IHdl
YmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3RleHRfYXRfb2Zmc2V0OworICAgIGlmYWNlLT5nZXRf
Y2hhcmFjdGVyX2F0X29mZnNldCA9IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NoYXJhY3Rl
cl9hdF9vZmZzZXQ7CisgICAgaWZhY2UtPmdldF90ZXh0X2JlZm9yZV9vZmZzZXQgPSB3ZWJraXRf
YWNjZXNzaWJsZV90ZXh0X2dldF90ZXh0X2JlZm9yZV9vZmZzZXQ7CisgICAgaWZhY2UtPmdldF9j
YXJldF9vZmZzZXQgPSB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9jYXJldF9vZmZzZXQ7Cisg
ICAgaWZhY2UtPmdldF9ydW5fYXR0cmlidXRlcyA9IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0
X3J1bl9hdHRyaWJ1dGVzOworICAgIGlmYWNlLT5nZXRfZGVmYXVsdF9hdHRyaWJ1dGVzID0gd2Vi
a2l0X2FjY2Vzc2libGVfdGV4dF9nZXRfZGVmYXVsdF9hdHRyaWJ1dGVzOworICAgIGlmYWNlLT5n
ZXRfY2hhcmFjdGVyX2V4dGVudHMgPSB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9jaGFyYWN0
ZXJfZXh0ZW50czsKKyAgICAvL2lmYWNlLT5nZXRfcmFuZ2VfZXh0ZW50cyA9IDsKKyAgICBpZmFj
ZS0+Z2V0X2NoYXJhY3Rlcl9jb3VudCA9IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NoYXJh
Y3Rlcl9jb3VudDsKKyAgICBpZmFjZS0+Z2V0X29mZnNldF9hdF9wb2ludCA9IHdlYmtpdF9hY2Nl
c3NpYmxlX3RleHRfZ2V0X29mZnNldF9hdF9wb2ludDsKKyAgICBpZmFjZS0+Z2V0X25fc2VsZWN0
aW9ucyA9IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X25fc2VsZWN0aW9uczsKKyAgICBpZmFj
ZS0+Z2V0X3NlbGVjdGlvbiA9IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X3NlbGVjdGlvbjsK
KworICAgIC8vIHNldCBtZXRob2RzCisgICAgaWZhY2UtPmFkZF9zZWxlY3Rpb24gPSB3ZWJraXRf
YWNjZXNzaWJsZV90ZXh0X2FkZF9zZWxlY3Rpb247CisgICAgaWZhY2UtPnJlbW92ZV9zZWxlY3Rp
b24gPSB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X3JlbW92ZV9zZWxlY3Rpb247CisgICAgaWZhY2Ut
PnNldF9zZWxlY3Rpb24gPSB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X3NldF9zZWxlY3Rpb247Cisg
ICAgaWZhY2UtPnNldF9jYXJldF9vZmZzZXQgPSB3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X3NldF9j
YXJldF9vZmZzZXQ7Cit9CisKKy8vIEVkaXRhYmxlVGV4dAorCitzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X2FjY2Vzc2libGVfZWRpdGFibGVfdGV4dF9zZXRfcnVuX2F0dHJpYnV0ZXMoQXRrRWRpdGFi
bGVUZXh0KiB0ZXh0LCBBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYl9zZXQsIGdpbnQgc3RhcnRfb2Zm
c2V0LCBnaW50IGVuZF9vZmZzZXQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2VkaXRhYmxlX3Rl
eHRfc2V0X3RleHRfY29udGVudHMoQXRrRWRpdGFibGVUZXh0KiB0ZXh0LCBjb25zdCBnY2hhciog
c3RyaW5nKQoreworICAgIC8vIEZJWE1FOiBzdHJpbmcgbnVsbGNoZWNrPworICAgIGNvcmUodGV4
dCktPnNldFZhbHVlKFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSk7Cit9CisKK3N0YXRpYyB2b2lk
IHdlYmtpdF9hY2Nlc3NpYmxlX2VkaXRhYmxlX3RleHRfaW5zZXJ0X3RleHQoQXRrRWRpdGFibGVU
ZXh0KiB0ZXh0LCBjb25zdCBnY2hhciogc3RyaW5nLCBnaW50IGxlbmd0aCwgZ2ludCogcG9zaXRp
b24pCit7CisgICAgLy8gRklYTUU6IHN0cmluZyBudWxsY2hlY2s/CisKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZSh0ZXh0KTsKKyAgICAvLyBGSVhNRTogTm90IGlt
cGxlbWVudGVkIGluIFdlYkNvcmUKKyAgICAvL2NvcmVPYmplY3QtPnNldFNlbGVjdGVkVGV4dFJh
bmdlKFBsYWluVGV4dFJhbmdlKCpwb3NpdGlvbiwgMCkpOworICAgIC8vY29yZU9iamVjdC0+c2V0
U2VsZWN0ZWRUZXh0KFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSk7CisKKyAgICBpZiAoIWNvcmVP
YmplY3QtPmRvY3VtZW50KCkgfHwgIWNvcmVPYmplY3QtPmRvY3VtZW50KCktPmZyYW1lKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBjb3JlT2JqZWN0LT5kb1NldEFYU2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UoY29yZU9iamVjdC0+dGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoUGxhaW5UZXh0UmFuZ2Uo
KnBvc2l0aW9uLCAwKSkpOworICAgIGNvcmVPYmplY3QtPnNldEZvY3VzZWQodHJ1ZSk7CisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBzZXQgcG9zaXRpb24gdG8gdGhlIGFjdHVhbCBpbnNlcnRlZCB0
ZXh0IGxlbmd0aCwgd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB0aGF0IHJlcXVlc3RlZC4KKyAgICBp
ZiAoY29yZU9iamVjdC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPmluc2VydFRleHRX
aXRob3V0U2VuZGluZ1RleHRFdmVudChTdHJpbmc6OmZyb21VVEY4KHN0cmluZyksIGZhbHNlLCAw
KSkKKyAgICAgICAgKnBvc2l0aW9uICs9IGxlbmd0aDsKK30KKworc3RhdGljIHZvaWQgd2Via2l0
X2FjY2Vzc2libGVfZWRpdGFibGVfdGV4dF9jb3B5X3RleHQoQXRrRWRpdGFibGVUZXh0KiB0ZXh0
LCBnaW50IHN0YXJ0X3BvcywgZ2ludCBlbmRfcG9zKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2VkaXRhYmxlX3RleHRfY3V0X3Rl
eHQoQXRrRWRpdGFibGVUZXh0KiB0ZXh0LCBnaW50IHN0YXJ0X3BvcywgZ2ludCBlbmRfcG9zKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3Np
YmxlX2VkaXRhYmxlX3RleHRfZGVsZXRlX3RleHQoQXRrRWRpdGFibGVUZXh0KiB0ZXh0LCBnaW50
IHN0YXJ0X3BvcywgZ2ludCBlbmRfcG9zKQoreworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmVPYmplY3QgPSBjb3JlKHRleHQpOworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQgaW4g
V2ViQ29yZQorICAgIC8vY29yZU9iamVjdC0+c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoUGxhaW5UZXh0
UmFuZ2Uoc3RhcnRfcG9zLCBlbmRfcG9zIC0gc3RhcnRfcG9zKSk7CisgICAgLy9jb3JlT2JqZWN0
LT5zZXRTZWxlY3RlZFRleHQoU3RyaW5nKCkpOworCisgICAgaWYgKCFjb3JlT2JqZWN0LT5kb2N1
bWVudCgpIHx8ICFjb3JlT2JqZWN0LT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICByZXR1
cm47CisgICAgY29yZU9iamVjdC0+ZG9TZXRBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKGNvcmVP
YmplY3QtPnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKFBsYWluVGV4dFJhbmdlKHN0YXJ0X3Bvcywg
ZW5kX3BvcyAtIHN0YXJ0X3BvcykpKTsKKyAgICBjb3JlT2JqZWN0LT5zZXRGb2N1c2VkKHRydWUp
OworICAgIGNvcmVPYmplY3QtPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT5wZXJmb3Jt
RGVsZXRlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9hY2Nlc3NpYmxlX2VkaXRhYmxlX3Rl
eHRfcGFzdGVfdGV4dChBdGtFZGl0YWJsZVRleHQqIHRleHQsIGdpbnQgcG9zaXRpb24pCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworc3RhdGljIHZvaWQgYXRrX2VkaXRhYmxlX3RleHRf
aW50ZXJmYWNlX2luaXQoQXRrRWRpdGFibGVUZXh0SWZhY2UqIGlmYWNlKQoreworICAgIGdfcmV0
dXJuX2lmX2ZhaWwoaWZhY2UpOworCisgICAgaWZhY2UtPnNldF9ydW5fYXR0cmlidXRlcyA9IHdl
YmtpdF9hY2Nlc3NpYmxlX2VkaXRhYmxlX3RleHRfc2V0X3J1bl9hdHRyaWJ1dGVzOworICAgIGlm
YWNlLT5zZXRfdGV4dF9jb250ZW50cyA9IHdlYmtpdF9hY2Nlc3NpYmxlX2VkaXRhYmxlX3RleHRf
c2V0X3RleHRfY29udGVudHM7CisgICAgaWZhY2UtPmluc2VydF90ZXh0ID0gd2Via2l0X2FjY2Vz
c2libGVfZWRpdGFibGVfdGV4dF9pbnNlcnRfdGV4dDsKKyAgICBpZmFjZS0+Y29weV90ZXh0ID0g
d2Via2l0X2FjY2Vzc2libGVfZWRpdGFibGVfdGV4dF9jb3B5X3RleHQ7CisgICAgaWZhY2UtPmN1
dF90ZXh0ID0gd2Via2l0X2FjY2Vzc2libGVfZWRpdGFibGVfdGV4dF9jdXRfdGV4dDsKKyAgICBp
ZmFjZS0+ZGVsZXRlX3RleHQgPSB3ZWJraXRfYWNjZXNzaWJsZV9lZGl0YWJsZV90ZXh0X2RlbGV0
ZV90ZXh0OworICAgIGlmYWNlLT5wYXN0ZV90ZXh0ID0gd2Via2l0X2FjY2Vzc2libGVfZWRpdGFi
bGVfdGV4dF9wYXN0ZV90ZXh0OworfQorCisvLyBTdHJlYW1hYmxlQ29udGVudAorCitzdGF0aWMg
Z2ludCB3ZWJraXRfYWNjZXNzaWJsZV9zdHJlYW1hYmxlX2NvbnRlbnRfZ2V0X25fbWltZV90eXBl
cyhBdGtTdHJlYW1hYmxlQ29udGVudCogc3RyZWFtYWJsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdl
YmtpdF9hY2Nlc3NpYmxlX3N0cmVhbWFibGVfY29udGVudF9nZXRfbWltZV90eXBlKEF0a1N0cmVh
bWFibGVDb250ZW50KiBzdHJlYW1hYmxlLCBnaW50IGkpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gIiI7Cit9CisKK3N0YXRpYyBHSU9DaGFubmVsKiB3ZWJraXRfYWNjZXNz
aWJsZV9zdHJlYW1hYmxlX2NvbnRlbnRfZ2V0X3N0cmVhbShBdGtTdHJlYW1hYmxlQ29udGVudCog
c3RyZWFtYWJsZSwgY29uc3QgZ2NoYXIqIG1pbWVfdHlwZSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgR19DT05TVF9SRVRVUk4gZ2NoYXIq
IHdlYmtpdF9hY2Nlc3NpYmxlX3N0cmVhbWFibGVfY29udGVudF9nZXRfdXJpKEF0a1N0cmVhbWFi
bGVDb250ZW50KiBzdHJlYW1hYmxlLCBjb25zdCBnY2hhciogbWltZV90eXBlKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGF0a19z
dHJlYW1hYmxlX2NvbnRlbnRfaW50ZXJmYWNlX2luaXQoQXRrU3RyZWFtYWJsZUNvbnRlbnRJZmFj
ZSogaWZhY2UpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChpZmFjZSk7CisKKyAgICBpZmFjZS0+
Z2V0X25fbWltZV90eXBlcyA9IHdlYmtpdF9hY2Nlc3NpYmxlX3N0cmVhbWFibGVfY29udGVudF9n
ZXRfbl9taW1lX3R5cGVzOworICAgIGlmYWNlLT5nZXRfbWltZV90eXBlID0gd2Via2l0X2FjY2Vz
c2libGVfc3RyZWFtYWJsZV9jb250ZW50X2dldF9taW1lX3R5cGU7CisgICAgaWZhY2UtPmdldF9z
dHJlYW0gPSB3ZWJraXRfYWNjZXNzaWJsZV9zdHJlYW1hYmxlX2NvbnRlbnRfZ2V0X3N0cmVhbTsK
KyAgICBpZmFjZS0+Z2V0X3VyaSA9IHdlYmtpdF9hY2Nlc3NpYmxlX3N0cmVhbWFibGVfY29udGVu
dF9nZXRfdXJpOwogfQogCiBHVHlwZSB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfdHlwZSgpCkBAIC0y
MDQsNiArNTg2LDM5IEBAIEdUeXBlIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF90eXBlKCkKICAgICAg
ICAgfTsKIAogICAgICAgICB0eXBlID0gZ190eXBlX3JlZ2lzdGVyX3N0YXRpYyhBVEtfVFlQRV9P
QkpFQ1QsICJXZWJLaXRBY2Nlc3NpYmxlIiwgJnRpbmZvLCBzdGF0aWNfY2FzdDxHVHlwZUZsYWdz
PigwKSk7CisKKyAgICAgICAgLy8gVE9ETzogT25seSBpbXBsZW1lbnQgaW50ZXJmYWNlcyB3aGVu
IG5lY2Vzc2FyeSwgbm90IGZvciBhbGwgb2JqZWN0cy4KKyAgICAgICAgc3RhdGljIGNvbnN0IEdJ
bnRlcmZhY2VJbmZvIGF0a19hY3Rpb25faW5mbyA9CisgICAgICAgIHsKKyAgICAgICAgICAgIChH
SW50ZXJmYWNlSW5pdEZ1bmMpIGF0a19hY3Rpb25faW50ZXJmYWNlX2luaXQsCisgICAgICAgICAg
ICAoR0ludGVyZmFjZUZpbmFsaXplRnVuYykgTlVMTCwKKyAgICAgICAgICAgIE5VTEwKKyAgICAg
ICAgfTsKKyAgICAgICAgZ190eXBlX2FkZF9pbnRlcmZhY2Vfc3RhdGljKHR5cGUsIEFUS19UWVBF
X0FDVElPTiwgJmF0a19hY3Rpb25faW5mbyk7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEdJbnRl
cmZhY2VJbmZvIGF0a190ZXh0X2luZm8gPQorICAgICAgICB7CisgICAgICAgICAgICAoR0ludGVy
ZmFjZUluaXRGdW5jKSBhdGtfdGV4dF9pbnRlcmZhY2VfaW5pdCwKKyAgICAgICAgICAgIChHSW50
ZXJmYWNlRmluYWxpemVGdW5jKSBOVUxMLAorICAgICAgICAgICAgTlVMTAorICAgICAgICB9Owor
ICAgICAgICBnX3R5cGVfYWRkX2ludGVyZmFjZV9zdGF0aWModHlwZSwgQVRLX1RZUEVfVEVYVCwg
JmF0a190ZXh0X2luZm8pOworCisgICAgICAgIHN0YXRpYyBjb25zdCBHSW50ZXJmYWNlSW5mbyBh
dGtfZWRpdGFibGVfdGV4dF9pbmZvID0KKyAgICAgICAgeworICAgICAgICAgICAgKEdJbnRlcmZh
Y2VJbml0RnVuYykgYXRrX2VkaXRhYmxlX3RleHRfaW50ZXJmYWNlX2luaXQsCisgICAgICAgICAg
ICAoR0ludGVyZmFjZUZpbmFsaXplRnVuYykgTlVMTCwKKyAgICAgICAgICAgIE5VTEwKKyAgICAg
ICAgfTsKKyAgICAgICAgZ190eXBlX2FkZF9pbnRlcmZhY2Vfc3RhdGljKHR5cGUsIEFUS19UWVBF
X0VESVRBQkxFX1RFWFQsICZhdGtfZWRpdGFibGVfdGV4dF9pbmZvKTsKKworICAgICAgICBzdGF0
aWMgY29uc3QgR0ludGVyZmFjZUluZm8gYXRrX3N0cmVhbWFibGVfY29udGVudF9pbmZvID0KKyAg
ICAgICAgeworICAgICAgICAgICAgKEdJbnRlcmZhY2VJbml0RnVuYykgYXRrX3N0cmVhbWFibGVf
Y29udGVudF9pbnRlcmZhY2VfaW5pdCwKKyAgICAgICAgICAgIChHSW50ZXJmYWNlRmluYWxpemVG
dW5jKSBOVUxMLAorICAgICAgICAgICAgTlVMTAorICAgICAgICB9OworICAgICAgICBnX3R5cGVf
YWRkX2ludGVyZmFjZV9zdGF0aWModHlwZSwgQVRLX1RZUEVfU1RSRUFNQUJMRV9DT05URU5ULCAm
YXRrX3N0cmVhbWFibGVfY29udGVudF9pbmZvKTsKICAgICB9CiAgICAgcmV0dXJuIHR5cGU7CiB9
CkBAIC0yMjEsOSArNjM2LDE5IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIHdlYmtpdF9hY2Nlc3Np
YmxlX2cKICAgICByZXR1cm4gYWNjZXNzaWJsZS0+bV9vYmplY3Q7CiB9CiAKKy8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBzdGF0aWMgaW5pdGlhbGl6YXRpb24uCitzdGF0aWMgQVhPYmplY3RDYWNoZSog
ZmFsbGJhY2tDYWNoZSA9IG5ldyBBWE9iamVjdENhY2hlKCk7CisKIHZvaWQgd2Via2l0X2FjY2Vz
c2libGVfZGV0YWNoKFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7Ci0gICAgYWNjZXNz
aWJsZS0+bV9vYmplY3QgPSAwOworICAgIEFTU0VSVChhY2Nlc3NpYmxlLT5tX29iamVjdCk7CisK
KyAgICAvLyBXZSByZXBsYWNlIHRoZSBXZWJDb3JlIEFjY2Vzc2liaWxpdHlPYmplY3Qgd2l0aCBh
IGZhbGxiYWNrIG9iamVjdCB0aGF0CisgICAgLy8gcHJvdmlkZXMgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbnMgdG8gYXZvaWQgcmVwZXRpdGl2ZSBudWxsLWNoZWNraW5nIGFmdGVyCisgICAgLy8gZGV0
YWNobWVudC4KKworICAgIC8vIEZJWE1FOiBVc2luZyBmYWxsYmFja0NhY2hlLT5nZXQoTGlzdEJv
eE9wdGlvblJvbGUpIGlzIGEgaGFjay4KKyAgICBhY2Nlc3NpYmxlLT5tX29iamVjdCA9IGZhbGxi
YWNrQ2FjaGUtPmdldChMaXN0Qm94T3B0aW9uUm9sZSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCShyZXZpc2lvbiAzNDEyNCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0xvY2FsaXplZFN0cmluZ3NHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1t
ZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA4IENocmlzdGlhbiBEeXdhbiA8
Y2hyaXN0aWFuQGltZW5kaW8uY29tPgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJMb2Nh
bGl6ZWRTdHJpbmdzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgpAQCAtMjg3LDMyICsyODgs
MzIgQEAgU3RyaW5nIHNlYXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dAogCiBTdHJpbmcg
QVhCdXR0b25BY3Rpb25WZXJiKCkKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoXygicHJlc3MiKSk7CiB9CiAKIFN0cmluZyBBWFJhZGlvQnV0dG9u
QWN0aW9uVmVyYigpCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KF8oInNlbGVjdCIpKTsKIH0KIAogU3RyaW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVy
YigpCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KF8oImFjdGl2YXRlIikpOwogfQogCiBTdHJpbmcgQVhDaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJi
KCkKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
XygidW5jaGVjayIpKTsKIH0KIAogU3RyaW5nIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJi
KCkKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgo
XygiY2hlY2siKSk7CiB9CiAKIFN0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkKIHsKLSAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoXygianVtcCIpKTsKIH0K
IAogU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQpAQCAtMzIyLDYgKzMyMyw3IEBAIFN0cmlu
ZyB1bmtub3duRmlsZVNpemVUZXh0KCkKIAogU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAo=
</data>
<flag name="review"
          id="9318"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>