<?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>74383</bug_id>
          
          <creation_ts>2011-12-13 00:03:22 -0800</creation_ts>
          <short_desc>Upstream PlatformMouseEvent and LocalizedStrings into WebCore/platform/blackberry</short_desc>
          <delta_ts>2011-12-20 23:36:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>73144</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mary Wu">mawu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519899</commentid>
    <comment_count>0</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-13 00:03:22 -0800</bug_when>
    <thetext>Upstream PlatformMouseEvent and LocalizedString into WebCore/platform/blackberry: 
LocalizedStringsBlackBerry.cpp, PlatformMouseEventBlackBerry.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519921</commentid>
    <comment_count>1</comment_count>
      <attachid>118968</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-13 00:31:03 -0800</bug_when>
    <thetext>Created attachment 118968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520038</commentid>
    <comment_count>2</comment_count>
      <attachid>118968</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-13 05:20:58 -0800</bug_when>
    <thetext>Comment on attachment 118968
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=118968&amp;action=review

&gt; Source/WebCore/ChangeLog:10
&gt; +        Rob Buis  &lt;rbuis@rim.com&gt;

I think there were more contributors, for instance I dont think I touched PlatformMouseEvent.

&gt; Source/WebCore/platform/blackberry/LocalizedStringsBlackBerry.cpp:72
&gt; +    // however, WebCore wants a &apos;-&apos; (e.g. en_us should read en-us)

Comment should be a sentence.

&gt; Source/WebCore/platform/blackberry/PlatformMouseEventBlackBerry.cpp:36
&gt; +    , m_timestamp(WTF::currentTime())

Is the WTF prefix needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520039</commentid>
    <comment_count>3</comment_count>
      <attachid>118968</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-13 05:21:58 -0800</bug_when>
    <thetext>Comment on attachment 118968
Patch

Clearing r? flag for now, see my comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520548</commentid>
    <comment_count>4</comment_count>
      <attachid>119125</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-13 18:02:43 -0800</bug_when>
    <thetext>Created attachment 119125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520576</commentid>
    <comment_count>5</comment_count>
      <attachid>119125</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-12-13 18:30:51 -0800</bug_when>
    <thetext>Comment on attachment 119125
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=119125&amp;action=review

&gt; Source/WebCore/platform/blackberry/LocalizedStringsBlackBerry.cpp:24
&gt; +

Nit: I suggest that we remove this empty line as I don&apos;t feel it improves the readability of this file.

&gt; Source/WebCore/platform/blackberry/LocalizedStringsBlackBerry.cpp:68
&gt; +String platformDefaultLanguage()

Would it make sense to re-write this function using WTF::String functions instead of using the std::string routines? That is, can we just convert BlackBerry::Platform::Client::get()-&gt;getLocale() to a WTF::String then manipulate it as as such? I suggest taking this approach since the WTF::String functions tend to be a bit more concise and at the end of the day we want to return a WTF::String.

&gt; Source/WebCore/platform/blackberry/LocalizedStringsBlackBerry.cpp:71
&gt; +    // getLocale() returns a POSIX lcoale which uses &apos;_&apos; to separate language and country

lcoale =&gt; locale.

country =&gt; country.

&gt; Source/WebCore/platform/blackberry/LocalizedStringsBlackBerry.cpp:72
&gt; +    // however, we use &apos;-&apos; instead of &apos;_&apos; in WebCore (e.g. en_us should read en-us)

however =&gt; However

Missing period at the end of this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520743</commentid>
    <comment_count>6</comment_count>
      <attachid>119170</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-14 00:20:55 -0800</bug_when>
    <thetext>Created attachment 119170
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521677</commentid>
    <comment_count>7</comment_count>
      <attachid>119381</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-14 22:44:16 -0800</bug_when>
    <thetext>Created attachment 119381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522450</commentid>
    <comment_count>8</comment_count>
      <attachid>119381</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-12-15 19:18:20 -0800</bug_when>
    <thetext>Comment on attachment 119381
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=119381&amp;action=review

Thanks Mary for updating the patch. Notice that most of these these methods build a WTF::String object from a C-string. We should probably leak the WTF::String objects if these methods are called frequently instead of building a WTF::String object on each method call.

&gt; Source/WebCore/platform/blackberry/LocalizedStringsBlackBerry.cpp:587
&gt; +}

Do we need to use String::fromUTF8 here? It seems like it would be sufficient to write this as:

return String(&quot;, ...&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522451</commentid>
    <comment_count>9</comment_count>
      <attachid>119381</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-12-15 19:20:13 -0800</bug_when>
    <thetext>Comment on attachment 119381
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=119381&amp;action=review

&gt; Source/WebCore/platform/blackberry/LocalizedStringsBlackBerry.cpp:586
&gt; +    return String::fromUTF8(&quot;, ...&quot;);

I meant to add the &quot;return String(&quot;, ...&quot;);&quot; remark to this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522584</commentid>
    <comment_count>10</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-15 23:51:34 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 119381 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119381&amp;action=review
&gt; 
&gt; Thanks Mary for updating the patch. Notice that most of these these methods build a WTF::String object from a C-string. We should probably leak the WTF::String objects if these methods are called frequently instead of building a WTF::String object on each method call.
&gt; 


yes, thanks for the comments...those are used in file buttons and context menu which we seldom used, and looks other portings didn&apos;t leak WTF::String objects either. So I think maybe we could keep it is here for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525051</commentid>
    <comment_count>11</comment_count>
      <attachid>120135</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-20 19:15:40 -0800</bug_when>
    <thetext>Created attachment 120135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525073</commentid>
    <comment_count>12</comment_count>
      <attachid>120135</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-12-20 20:42:57 -0800</bug_when>
    <thetext>Comment on attachment 120135
Patch

Thanks for the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525129</commentid>
    <comment_count>13</comment_count>
      <attachid>120135</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-20 23:36:44 -0800</bug_when>
    <thetext>Comment on attachment 120135
Patch

Clearing flags on attachment: 120135

Committed r103391: &lt;http://trac.webkit.org/changeset/103391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525130</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-20 23:36:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118968</attachid>
            <date>2011-12-13 00:31:03 -0800</date>
            <delta_ts>2011-12-13 18:02:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74383-20111213163100.patch</filename>
            <type>text/plain</type>
            <size>17201</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyNTNiNDkwYWUyZWQ3
Njg5MWU5NmRjNjJmN2IxZDNhZGY4NDFlZS4uN2RlZDFhMDMwZDYwNzlmYzhiNTUwNDg3ODc3NGJh
N2JhYWViYTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTEzICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gYmxh
Y2tiZXJyeSBwb3J0aW5nIG9mIFBsYXRmb3JtTW91c2VFdmVudCBhbmQgTG9jYWxpemVkU3RyaW5n
cyAKKyAgICAgICAgaW50byB0aGUgZGlyZWN0b3J5IG9mIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NDM4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
aW4gQ29udHJpYnV0b3I6CisgICAgICAgIFJvYiBCdWlzICA8cmJ1aXNAcmltLmNvbT4KKworICAg
ICAgICBJbml0aWFsIHVwc3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9y
bUJsYWNrQmVycnkuY21ha2U6IE1vZGlmaWVkIGZvciByZW5hbWluZyBMb2NhbGl6YXRpb25zLmNw
cCB0byBMb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAKKyAgICAgICAgKiBwbGF0Zm9ybS9i
bGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybU1vdXNlRXZlbnRCbGFja0JlcnJ5LmNwcDog
QWRkZWQuCisKIDIwMTEtMTItMTIgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbVjhdIENvZGVHZW5lcmF0b3JWOC5wbSBkb2VzIG5vdCBjb3JyZWN0bHkgd29y
ayB3aXRoIGluaGVyaXRlZCBIYXNJbmRleEdldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFj
a0JlcnJ5LmNtYWtlCmluZGV4IGEwZmE2NDNlOTU0YjZiMzhlMDkzOTVjMDExNzE1MzJiZWQ4ZGJk
NDkuLjBkMTU3ZWY0MDE4NWM5MmM5NTk5YzdhZGIzZjEzN2Y0OGI5ZDVhMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKQEAgLTE0Miw3ICsxNDIsNyBAQCBMSVNUKEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0RyYWdJbWFnZUJs
YWNrQmVycnkuY3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9FdmVudExvb3BCbGFja0JlcnJ5
LmNwcAogICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvS1VSTEJsYWNrQmVycnkuY3BwCi0gICAgcGxh
dGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6YXRpb25zLmNwcAorICAgIHBsYXRmb3JtL2JsYWNrYmVy
cnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJy
eS9Mb2dnaW5nQmxhY2tCZXJyeS5jcHAKICAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L01JTUVUeXBl
UmVnaXN0cnlCbGFja0JlcnJ5LmNwcAogICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvUGFzdGVib2Fy
ZEJsYWNrQmVycnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ2Mzc0NzMxZTE4NmY1YzEyYWJiNTAwMzBlNDM2MDhjODA0YzcxOTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmlu
Z3NCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDU5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSwgMjAxMCBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TG9jYWxpemVkU3RyaW5ncy5oIgorCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCisKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1DbGllbnQuaD4K
KyNpbmNsdWRlIDxMb2NhbGl6ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
REVGSU5FX1NUQVRJQ19MT0NBTChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9jYWxpemVSZXNvdXJj
ZSwgc19yZXNvdXJjZSwgKCkpOworCitTdHJpbmcgZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgp
Cit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkZJTEVfQ0hPT1NFX0JVVFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0
cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcg
ZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCgpCit7CisgICAgY29uc3QgY2hhciog
c3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZJTEVf
Q0hPT1NFX01VTFRJUExFX0JVVFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmlu
Zzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgZmlsZUJ1dHRvbk5v
RmlsZVNlbGVjdGVkTGFiZWwoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3Vy
Y2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpGSUxFX0JVVFRPTl9OT19GSUxFX1NF
TEVDVEVEX0xBQkVMKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJp
bmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCit7
CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OlJFU0VUX0JVVFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0
cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgc3VibWl0QnV0
dG9uRGVmYXVsdExhYmVsKCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNl
LmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U1VCTUlUX0JVVFRPTl9MQUJFTCk7Cisg
ICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOwor
fQorCitTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5n
dWFnZSgpCit7CisgICAgc3RkOjpzdHJpbmcgbGFuZyA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpLT5nZXRMb2NhbGUoKTsKKyAgICAvLyBnZXRMb2NhbGUoKSByZXR1cm5zIGEg
UE9TSVggbGNvYWxlIHdoaWNoIHVzZXMgJ18nIHRvIHNlcGFyYXRlIGxhbmd1YWdlIGFuZCBjb3Vu
dHJ5CisgICAgLy8gaG93ZXZlciwgV2ViQ29yZSB3YW50cyBhICctJyAoZS5nLiBlbl91cyBzaG91
bGQgcmVhZCBlbi11cykKKyAgICBpbnQgdW5kZXJzY29yZVBvc2l0aW9uID0gbGFuZy5maW5kKCdf
Jyk7CisgICAgc3RkOjpzdHJpbmcgcmVwbGFjZVdpdGggPSAiLSI7CisgICAgaWYgKHVuZGVyc2Nv
cmVQb3NpdGlvbiAhPSAtMSkKKyAgICAgICAgcmV0dXJuIGxhbmcucmVwbGFjZSh1bmRlcnNjb3Jl
UG9zaXRpb24sIHJlcGxhY2VXaXRoLnNpemUoKSwgcmVwbGFjZVdpdGgpLmNfc3RyKCk7CisgICAg
cmV0dXJuIGxhbmcuY19zdHIoKTsKK30KKworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0JvbGQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tH
cmFtbWFyV2l0aFNwZWxsaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmco
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRGVmYXVsdERp
cmVjdGlvbigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdGb250TWVudSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVHcmFtbWFyKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0luc3BlY3RFbGVtZW50KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlZnRU
b1JpZ2h0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z09wZW5JbWFnZUluTmV3V2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5O
ZXdXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmsoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnT3V0bGluZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnUmlnaHRUb0xlZnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2VhcmNo
V2ViKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVsKGJvb2wpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdTcGVsbGluZ01lbnUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvbk1lbnUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVW5kZXJsaW5lKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NvcHlWaWRlb0xpbmtUb0NsaXBib2FyZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVu
VmlkZW9Jbk5ld1dpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUNvbnRy
b2xzKCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9NRURJQV9UT0dHTEVfQ09OVFJPTFMpOworICAg
IHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhTG9vcCgpCit7CisgICAgY29u
c3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkNPTlRFWFRfTUVESUFfVE9HR0xFX0xPT1ApOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJp
bmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0VudGVyVmlkZW9GdWxsc2NyZWVuKCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcg
PSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9WSURF
T19GVUxMU0NSRUVOKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJp
bmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBsYXko
KQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDT05URVhUX01FRElBX1BMQVkpOworICAgIHJldHVybiBzdHJpbmcg
PyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ01lZGlhUGF1c2UoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNf
cmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDT05URVhUX01FRElBX1BB
VVNFKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYU11dGUoKQoreworICAg
IGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpDT05URVhUX01FRElBX01VVEUpOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6
OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NvcHlBdWRpb0xpbmtUb0NsaXBib2FyZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVu
QXVkaW9Jbk5ld1dpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0JhY2soKQoreworICAg
IGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpDT05URVhUX0dPQkFDSyk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJv
bVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
R29Gb3J3YXJkKCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0
cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9HT0ZPUldBUkQpOworICAgIHJldHVy
biBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9
IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDT05URVhUX1NUT1Ap
OworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmco
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHkoKQoreworICAgIGNvbnN0IGNo
YXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
T05URVhUX0NPUFkpOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmlu
ZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0N1dCgpCit7Cisg
ICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNPTlRFWFRfQ1VUKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9t
VVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdQ
YXN0ZSgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmco
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfUEFTVEUpOworICAgIHJldHVybiBzdHJpbmcg
PyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworI2VuZGlmCisKK1N0
cmluZyBzZWFyY2hhYmxlSW5kZXhJbnRyb2R1Y3Rpb24oKQoreworICAgIGNvbnN0IGNoYXIqIHN0
cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTRUFSQ0hB
QkxFX0lOREVYX0lOVFJPRFVDVElPTik7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJv
bVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgc2VhcmNoTWVudU5vUmVjZW50
U2VhcmNoZXNUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIHNlYXJjaE1lbnVSZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgc2Vh
cmNoTWVudUNsZWFyUmVjZW50U2VhcmNoZXNUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGltYWdlVGl0bGUoU3RyaW5nIGNv
bnN0JiwgSW50U2l6ZSBjb25zdCYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWEJ1dHRvbkFjdGlvblZlcmIoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhDaGVj
a2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uVGV4
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBBWERlZmluaXRpb25MaXN0VGVybVRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhMaW5rQWN0aW9uVmVyYigp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBBWFJhZGlvQnV0dG9uQWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWFRleHRGaWVsZEFjdGlvblZlcmIo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgQVhVbmNoZWNrZWRDaGVja0JveEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhNZW51TGlzdFBvcHVw
QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBBWE1lbnVMaXN0QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB1bmtub3duRmlsZVNp
emVUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpCit7Cisg
ICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OlZBTElEQVRJT05fUEFUVEVSTl9NSVNNQVRDSCk7CisgICAgcmV0dXJuIHN0cmlu
ZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgdmFs
aWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChpbnQsIGludCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdl
UmFuZ2VVbmRlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJh
bmdlT3ZlcmZsb3dUZXh0KGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBN
aXNtYXRjaFRleHQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBjb25zdCBj
aGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
VkFMSURBVElPTl9TVEVQX01JU01BVENIKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpm
cm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVR5cGVNaXNtYXRjaFRleHQoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3Vy
Y2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpWQUxJREFUSU9OX1RZUEVfTUlTTUFU
Q0gpOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yRW1haWxU
ZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7
Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvck11bHRpcGxlRW1h
aWxUZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0
KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvclVSTFRleHQo
KQoreworICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKK30K
KworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpCit7CisgICAgY29u
c3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OlZBTElEQVRJT05fVkFMVUVfTUlTU0lORyk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmlu
Zzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2VWYWx1ZU1pc3NpbmdGb3JDaGVja2JveFRleHQoKQoreworICAgIHJldHVybiB2YWxpZGF0
aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlVmFsdWVNaXNzaW5nRm9yRmlsZVRleHQoKQoreworICAgIHJldHVybiB2YWxpZGF0aW9uTWVz
c2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFs
dWVNaXNzaW5nRm9yTXVsdGlwbGVGaWxlVGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VW
YWx1ZU1pc3NpbmdGb3JSYWRpb1RleHQoKQoreworICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2Fn
ZVZhbHVlTWlzc2luZ1RleHQoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVN
aXNzaW5nRm9yU2VsZWN0VGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFs
dWVNaXNzaW5nVGV4dCgpOworfQorCitTdHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVu
dFN0cmluZyhjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgbG9jYWxpemVkTWVkaWFDb250cm9sRWxlbWVudEhl
bHBUZXh0KGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihj
b25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24oZmxvYXQpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBtZWRpYUVsZW1lbnRMb2FkaW5nU3RhdGVUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIG1lZGlhRWxlbWVudExpdmVCcm9h
ZGNhc3RTdGF0ZVRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgbWlzc2luZ1BsdWdpblRleHQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY3Jhc2hlZFBsdWdp
blRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitTdHJpbmcgbXVsdGlwbGVGaWxlVXBsb2FkVGV4dCh1bnNpZ25lZCkKK3sKKyAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOCgiLCAuLi4iKTsKK30KKworU3RyaW5nIGRlZmF1bHREZXRhaWxz
U3VtbWFyeVRleHQoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0
U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpERVRBSUxTX1NVTU1BUlkpOworICAgIHJldHVy
biBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9QbGF0Zm9ybU1vdXNlRXZlbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Nb3VzZUV2ZW50QmxhY2tCZXJyeS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjg3MDIzZGQxNGNmZWYxOGEwYzg4NmQ0ZDRmODNmYThmNzU3YjE2NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZv
cm1Nb3VzZUV2ZW50QmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24s
IE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBsYXRmb3JtTW91
c2VFdmVudChjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3MsIGNvbnN0IE1vdXNlRXZlbnRUeXBlIHR5cGUsIGludCBjbGlja0NvdW50LCBNb3VzZUJ1dHRv
biBidXR0b24sIE1vdXNlSW5wdXRNZXRob2QgbWV0aG9kKQorICAgIDogbV9wb3NpdGlvbihldmVu
dFBvcykKKyAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zKQorICAgICwgbV9idXR0b24o
YnV0dG9uKQorICAgICwgbV9ldmVudFR5cGUodHlwZSkKKyAgICAsIG1fY2xpY2tDb3VudChjbGlj
a0NvdW50KQorICAgICwgbV9zaGlmdEtleShmYWxzZSkKKyAgICAsIG1fY3RybEtleShmYWxzZSkK
KyAgICAsIG1fYWx0S2V5KGZhbHNlKQorICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICwgbV90
aW1lc3RhbXAoV1RGOjpjdXJyZW50VGltZSgpKQorICAgICwgbV9pbnB1dE1ldGhvZChtZXRob2Qp
Cit7CisgICAgQVNTRVJUKHR5cGUgIT0gTW91c2VFdmVudFNjcm9sbCk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1Nb3VzZUV2ZW50OjpzZXRDbGlja0NvdW50KGludCBjb3VudCkKK3sKKyAgICBtX2NsaWNr
Q291bnQgPSBjb3VudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119125</attachid>
            <date>2011-12-13 18:02:43 -0800</date>
            <delta_ts>2011-12-14 00:20:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74383-20111214100238.patch</filename>
            <type>text/plain</type>
            <size>17260</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyNTNiNDkwYWUyZWQ3
Njg5MWU5NmRjNjJmN2IxZDNhZGY4NDFlZS4uZTY4YWU2M2FkOTUzMDExYzg3ZTk0YmY1MjgwZTA1
ZDQ2MTZkODJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTEyLTEzICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gYmxh
Y2tiZXJyeSBwb3J0aW5nIG9mIFBsYXRmb3JtTW91c2VFdmVudCBhbmQgTG9jYWxpemVkU3RyaW5n
cyAKKyAgICAgICAgaW50byB0aGUgZGlyZWN0b3J5IG9mIFdlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NDM4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1h
aW4gQ29udHJpYnV0b3I6CisgICAgICAgIFJvYiBCdWlzICA8cmJ1aXNAcmltLmNvbT4KKyAgICAg
ICAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgorCisgICAgICAgIEluaXRpYWwgdXBz
dHJlYW0sIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFr
ZTogTW9kaWZpZWQgZm9yIHJlbmFtaW5nIExvY2FsaXphdGlvbnMuY3BwIHRvIExvY2FsaXplZFN0
cmluZ3NCbGFja0JlcnJ5LmNwcAorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxp
emVkU3RyaW5nc0JsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFj
a2JlcnJ5L1BsYXRmb3JtTW91c2VFdmVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKwogMjAxMS0x
Mi0xMiAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0g
Q29kZUdlbmVyYXRvclY4LnBtIGRvZXMgbm90IGNvcnJlY3RseSB3b3JrIHdpdGggaW5oZXJpdGVk
IEhhc0luZGV4R2V0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNr
QmVycnkuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5k
ZXggYTBmYTY0M2U5NTRiNmIzOGUwOTM5NWMwMTE3MTUzMmJlZDhkYmQ0OS4uMGQxNTdlZjQwMTg1
YzkyYzk1OTljN2FkYjNmMTM3ZjQ4YjlkNWEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxh
Y2tCZXJyeS5jbWFrZQpAQCAtMTQyLDcgKzE0Miw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvRHJhZ0ltYWdlQmxhY2tCZXJyeS5jcHAKICAg
ICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0V2ZW50TG9vcEJsYWNrQmVycnkuY3BwCiAgICAgcGxhdGZv
cm0vYmxhY2tiZXJyeS9LVVJMQmxhY2tCZXJyeS5jcHAKLSAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5
L0xvY2FsaXphdGlvbnMuY3BwCisgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJp
bmdzQmxhY2tCZXJyeS5jcHAKICAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xvZ2dpbmdCbGFja0Jl
cnJ5LmNwcAogICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvTUlNRVR5cGVSZWdpc3RyeUJsYWNrQmVy
cnkuY3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVk
U3RyaW5nc0JsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJy
eS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI4ZmQ0ZmQ1MDQx
MTM4ZTA0MGVkZmFkYTg1ZjlhNTI1YmE3ZmQ2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3Bw
CkBAIC0wLDAgKzEsNTk2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCisKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KworI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUNsaWVudC5oPgorI2luY2x1ZGUgPExvY2Fs
aXplUmVzb3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitERUZJTkVfU1RBVElDX0xP
Q0FMKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2NhbGl6ZVJlc291cmNlLCBzX3Jlc291cmNlLCAo
KSk7CisKK1N0cmluZyBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKK3sKKyAgICBjb25zdCBj
aGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
RklMRV9DSE9PU0VfQlVUVE9OX0xBQkVMKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpm
cm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBmaWxlQnV0dG9uQ2hvb3Nl
TXVsdGlwbGVGaWxlc0xhYmVsKCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291
cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RklMRV9DSE9PU0VfTVVMVElQTEVf
QlVUVE9OX0xBQkVMKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJp
bmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBmaWxlQnV0dG9uTm9GaWxlU2VsZWN0ZWRMYWJl
bCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkZJTEVfQlVUVE9OX05PX0ZJTEVfU0VMRUNURURfTEFCRUwpOwor
ICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsK
K30KKworU3RyaW5nIHJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCkKK3sKKyAgICBjb25zdCBjaGFy
KiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6UkVT
RVRfQlVUVE9OX0xBQkVMKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChz
dHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBzdWJtaXRCdXR0b25EZWZhdWx0TGFiZWwo
KQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpTVUJNSVRfQlVUVE9OX0xBQkVMKTsKKyAgICByZXR1cm4gc3RyaW5n
ID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBpbnB1
dEVsZW1lbnRBbHRUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKK3sKKyAgICBz
dGQ6OnN0cmluZyBsYW5nID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCktPmdl
dExvY2FsZSgpOworICAgIC8vIGdldExvY2FsZSgpIHJldHVybnMgYSBQT1NJWCBsY29hbGUgd2hp
Y2ggdXNlcyAnXycgdG8gc2VwYXJhdGUgbGFuZ3VhZ2UgYW5kIGNvdW50cnkKKyAgICAvLyBob3dl
dmVyLCB3ZSB1c2UgJy0nIGluc3RlYWQgb2YgJ18nIGluIFdlYkNvcmUgKGUuZy4gZW5fdXMgc2hv
dWxkIHJlYWQgZW4tdXMpCisgICAgaW50IHVuZGVyc2NvcmVQb3NpdGlvbiA9IGxhbmcuZmluZCgn
XycpOworICAgIHN0ZDo6c3RyaW5nIHJlcGxhY2VXaXRoID0gIi0iOworICAgIGlmICh1bmRlcnNj
b3JlUG9zaXRpb24gIT0gLTEpCisgICAgICAgIHJldHVybiBsYW5nLnJlcGxhY2UodW5kZXJzY29y
ZVBvc2l0aW9uLCByZXBsYWNlV2l0aC5zaXplKCksIHJlcGxhY2VXaXRoKS5jX3N0cigpOworICAg
IHJldHVybiBsYW5nLmNfc3RyKCk7Cit9CisKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKK1N0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNr
R3JhbW1hcldpdGhTcGVsbGluZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZygpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0RlZmF1bHRE
aXJlY3Rpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaygpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnRm9udE1lbnUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1hcigpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdJbnNwZWN0RWxlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMZWZ0
VG9SaWdodCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGlua0lu
TmV3V2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ091dGxpbmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmVsb2FkKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NlYXJj
aFdlYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Rl
eHREaXJlY3Rpb25NZW51KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Bl
blZpZGVvSW5OZXdXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFDb250
cm9scygpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmco
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfTUVESUFfVE9HR0xFX0NPTlRST0xTKTsKKyAg
ICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3AoKQoreworICAgIGNv
bnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpDT05URVhUX01FRElBX1RPR0dMRV9MT09QKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3Ry
aW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbigpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5n
ID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfVklE
RU9fRlVMTFNDUkVFTik7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3Ry
aW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQbGF5
KCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9NRURJQV9QTEFZKTsKKyAgICByZXR1cm4gc3RyaW5n
ID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBz
X3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9NRURJQV9Q
QVVTRSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0
cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFNdXRlKCkKK3sKKyAg
ICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Q09OVEVYVF9NRURJQV9NVVRFKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5n
Ojpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDb3B5QXVkaW9MaW5rVG9DbGlwYm9hcmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Bl
bkF1ZGlvSW5OZXdXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCkKK3sKKyAg
ICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Q09OVEVYVF9HT0JBQ0spOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZy
b21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0dvRm9yd2FyZCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRT
dHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfR09GT1JXQVJEKTsKKyAgICByZXR1
cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcg
PSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9TVE9Q
KTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5KCkKK3sKKyAgICBjb25zdCBj
aGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
Q09OVEVYVF9DT1BZKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJp
bmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKQorewor
ICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpDT05URVhUX0NVVCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJv
bVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
UGFzdGUoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5n
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDT05URVhUX1BBU1RFKTsKKyAgICByZXR1cm4gc3RyaW5n
ID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKKyNlbmRpZgorCitT
dHJpbmcgc2VhcmNoYWJsZUluZGV4SW50cm9kdWN0aW9uKCkKK3sKKyAgICBjb25zdCBjaGFyKiBz
dHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U0VBUkNI
QUJMRV9JTkRFWF9JTlRST0RVQ1RJT04pOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZy
b21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2Vu
dFNlYXJjaGVzVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHNl
YXJjaE1lbnVDbGVhclJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBpbWFnZVRpdGxlKFN0cmluZyBj
b25zdCYsIEludFNpemUgY29uc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhCdXR0b25BY3Rpb25WZXJiKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYQ2hl
Y2tlZENoZWNrQm94QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRl
eHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitTdHJpbmcgQVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYTGlua0FjdGlvblZlcmIo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgQVhSYWRpb0J1dHRvbkFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJi
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIEFYVW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYTWVudUxpc3RQb3B1
cEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgQVhNZW51TGlzdEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdW5rbm93bkZpbGVT
aXplVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKQorewor
ICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpWQUxJREFUSU9OX1BBVFRFUk5fTUlTTUFUQ0gpOworICAgIHJldHVybiBzdHJp
bmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVJhbmdlVW5kZXJmbG93VGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VS
YW5nZU92ZXJmbG93VGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVw
TWlzbWF0Y2hUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgY29uc3Qg
Y2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06
OlZBTElEQVRJT05fU1RFUF9NSVNNQVRDSCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6
ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3Nh
Z2VUeXBlTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291
cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VkFMSURBVElPTl9UWVBFX01JU01B
VENIKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvckVtYWls
VGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgp
OworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JNdWx0aXBsZUVt
YWlsVGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4
dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JVUkxUZXh0
KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7Cit9
CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKQoreworICAgIGNv
bnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpWQUxJREFUSU9OX1ZBTFVFX01JU1NJTkcpOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJp
bmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25N
ZXNzYWdlVmFsdWVNaXNzaW5nRm9yQ2hlY2tib3hUZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRh
dGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVz
c2FnZVZhbHVlTWlzc2luZ0ZvckZpbGVUZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1l
c3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZh
bHVlTWlzc2luZ0Zvck11bHRpcGxlRmlsZVRleHQoKQoreworICAgIHJldHVybiB2YWxpZGF0aW9u
TWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdl
VmFsdWVNaXNzaW5nRm9yUmFkaW9UZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VWYWx1ZU1pc3NpbmdUZXh0KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVl
TWlzc2luZ0ZvclNlbGVjdFRleHQoKQoreworICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVZh
bHVlTWlzc2luZ1RleHQoKTsKK30KKworU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1l
bnRTdHJpbmcoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1lbnRI
ZWxwVGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRpb24o
Y29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0KQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgbWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBtZWRpYUVsZW1lbnRMaXZlQnJv
YWRjYXN0U3RhdGVUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNyYXNoZWRQbHVn
aW5UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKworU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQpCit7CisgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoIiwgLi4uIik7Cit9CisKK1N0cmluZyBkZWZhdWx0RGV0YWls
c1N1bW1hcnlUZXh0KCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdl
dFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6REVUQUlMU19TVU1NQVJZKTsKKyAgICByZXR1
cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUGxhdGZvcm1Nb3VzZUV2ZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtTW91c2VFdmVudEJsYWNrQmVycnkuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU5NThiNTE0OGMxM2QwNzRiZTNjOWRhYTE5ZDJmMDJjYzQ4NTJmZTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRm
b3JtTW91c2VFdmVudEJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg
Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgorCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1Nb3VzZUV2ZW50OjpQbGF0
Zm9ybU1vdXNlRXZlbnQoY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zLCBjb25zdCBNb3VzZUV2ZW50VHlwZSB0eXBlLCBpbnQgY2xpY2tDb3VudCwgTW91
c2VCdXR0b24gYnV0dG9uLCBNb3VzZUlucHV0TWV0aG9kIG1ldGhvZCkKKyAgICA6IG1fcG9zaXRp
b24oZXZlbnRQb3MpCisgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvcykKKyAgICAsIG1f
YnV0dG9uKGJ1dHRvbikKKyAgICAsIG1fZXZlbnRUeXBlKHR5cGUpCisgICAgLCBtX2NsaWNrQ291
bnQoY2xpY2tDb3VudCkKKyAgICAsIG1fc2hpZnRLZXkoZmFsc2UpCisgICAgLCBtX2N0cmxLZXko
ZmFsc2UpCisgICAgLCBtX2FsdEtleShmYWxzZSkKKyAgICAsIG1fbWV0YUtleShmYWxzZSkKKyAg
ICAsIG1fdGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCisgICAgLCBtX2lucHV0TWV0aG9kKG1ldGhv
ZCkKK3sKKyAgICBBU1NFUlQodHlwZSAhPSBNb3VzZUV2ZW50U2Nyb2xsKTsKK30KKwordm9pZCBQ
bGF0Zm9ybU1vdXNlRXZlbnQ6OnNldENsaWNrQ291bnQoaW50IGNvdW50KQoreworICAgIG1fY2xp
Y2tDb3VudCA9IGNvdW50OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119170</attachid>
            <date>2011-12-14 00:20:55 -0800</date>
            <delta_ts>2011-12-14 22:44:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74383-20111214162050.patch</filename>
            <type>text/plain</type>
            <size>17255</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyNTNiNDkwYWUyZWQ3
Njg5MWU5NmRjNjJmN2IxZDNhZGY4NDFlZS4uMTcyMTAwYzdjYzQxMGFiNjBhODU5Zjk3Njg1ZGVk
ZWZmZTAyMTUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTEyLTE0ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gYmxh
Y2tiZXJyeSBwb3J0aW5nIG9mIFBsYXRmb3JtTW91c2VFdmVudCBhbmQgTG9jYWxpemVkU3RyaW5n
cworICAgICAgICBpbnRvIHRoZSBkaXJlY3Rvcnkgb2YgV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2Jl
cnJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM4
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1haW4g
Q29udHJpYnV0b3JzOgorICAgICAgICBSb2IgQnVpcyA8cmJ1aXNAcmltLmNvbT4KKyAgICAgICAg
TWlrZSBGZW50b24gPG1pZmVudG9uQHJpbS5jb20+CisKKyAgICAgICAgSW5pdGlhbCB1cHN0cmVh
bSwgbm8gbmV3IHRlc3RzLiAKKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZTog
TW9kaWZpZWQgZm9yIHJlbmFtaW5nIExvY2FsaXphdGlvbnMuY3BwIHRvIExvY2FsaXplZFN0cmlu
Z3NCbGFja0JlcnJ5LmNwcAorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVk
U3RyaW5nc0JsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2Jl
cnJ5L1BsYXRmb3JtTW91c2VFdmVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKwogMjAxMS0xMi0x
MiAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gQ29k
ZUdlbmVyYXRvclY4LnBtIGRvZXMgbm90IGNvcnJlY3RseSB3b3JrIHdpdGggaW5oZXJpdGVkIEhh
c0luZGV4R2V0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXgg
YTBmYTY0M2U5NTRiNmIzOGUwOTM5NWMwMTE3MTUzMmJlZDhkYmQ0OS4uMGQxNTdlZjQwMTg1Yzky
Yzk1OTljN2FkYjNmMTM3ZjQ4YjlkNWEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1CbGFja0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tC
ZXJyeS5jbWFrZQpAQCAtMTQyLDcgKzE0Miw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UwogICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvRHJhZ0ltYWdlQmxhY2tCZXJyeS5jcHAKICAgICBw
bGF0Zm9ybS9ibGFja2JlcnJ5L0V2ZW50TG9vcEJsYWNrQmVycnkuY3BwCiAgICAgcGxhdGZvcm0v
YmxhY2tiZXJyeS9LVVJMQmxhY2tCZXJyeS5jcHAKLSAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xv
Y2FsaXphdGlvbnMuY3BwCisgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdz
QmxhY2tCZXJyeS5jcHAKICAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xvZ2dpbmdCbGFja0JlcnJ5
LmNwcAogICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvTUlNRVR5cGVSZWdpc3RyeUJsYWNrQmVycnku
Y3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3Ry
aW5nc0JsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9M
b2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI0MzlmNDMwYzM2MTdh
ZDRlYzlhMWUzYzFhOTFmMjZiNDUwNDc5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCkBA
IC0wLDAgKzEsNTk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCisKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1DbGllbnQuaD4KKyNpbmNsdWRlIDxMb2Nh
bGl6ZVJlc291cmNlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworREVGSU5FX1NUQVRJQ19M
T0NBTChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9jYWxpemVSZXNvdXJjZSwgc19yZXNvdXJjZSwg
KCkpOworCitTdHJpbmcgZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpCit7CisgICAgY29uc3Qg
Y2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkZJTEVfQ0hPT1NFX0JVVFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6
ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgZmlsZUJ1dHRvbkNob29z
ZU11bHRpcGxlRmlsZXNMYWJlbCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNv
dXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZJTEVfQ0hPT1NFX01VTFRJUExF
X0JVVFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3Ry
aW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFi
ZWwoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpGSUxFX0JVVFRPTl9OT19GSUxFX1NFTEVDVEVEX0xBQkVMKTsK
KyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7
Cit9CisKK1N0cmluZyByZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCit7CisgICAgY29uc3QgY2hh
ciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlJF
U0VUX0JVVFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgo
c3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgc3VibWl0QnV0dG9uRGVmYXVsdExhYmVs
KCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6U1VCTUlUX0JVVFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0cmlu
ZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgaW5w
dXRFbGVtZW50QWx0VGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCit7CisgICAg
U3RyaW5nIGxhbmcgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0TG9j
YWxlKCkuY19zdHIoKTsKKyAgICAvLyBnZXRMb2NhbGUoKSByZXR1cm5zIGEgUE9TSVggbG9jYWxl
IHdoaWNoIHVzZXMgJ18nIHRvIHNlcGFyYXRlIGxhbmd1YWdlIGFuZCBjb3VudHJ5LgorICAgIC8v
IEhvd2V2ZXIsIHdlIHVzZSAnLScgaW5zdGVhZCBvZiAnXycgaW4gV2ViQ29yZSAoZS5nLiBlbl91
cyBzaG91bGQgcmVhZCBlbi11cykKKyAgICBzaXplX3QgdW5kZXJzY29yZVBvc2l0aW9uID0gbGFu
Zy5maW5kKCdfJyk7CisgICAgU3RyaW5nIHJlcGxhY2VXaXRoID0gIi0iOworICAgIGlmICh1bmRl
cnNjb3JlUG9zaXRpb24gIT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBsYW5nLnJlcGxhY2Uo
dW5kZXJzY29yZVBvc2l0aW9uLCByZXBsYWNlV2l0aC5sZW5ndGgoKSwgcmVwbGFjZVdpdGgpOwor
ICAgIHJldHVybiBsYW5nOworfQorCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQm9sZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1t
YXJXaXRoU3BlbGxpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnQ29weUltYWdlVG9DbGlwYm9hcmQoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q29weUxpbmtUb0NsaXBib2FyZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0
aW9uKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0ZvbnRNZW51KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5z
cGVjdEVsZW1lbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmln
aHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnT3BlbkZyYW1lSW5OZXdXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3Bl
bkltYWdlSW5OZXdXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dp
bmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdPdXRsaW5lKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoYm9vbCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1NwZWxsaW5nTWVudSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGly
ZWN0aW9uTWVudSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnV3JpdGluZ0RpcmVjdGlvbk1lbnUoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q29weVZpZGVvTGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRl
b0luTmV3V2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMo
KQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDT05URVhUX01FRElBX1RPR0dMRV9DT05UUk9MUyk7CisgICAgcmV0
dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wKCkKK3sKKyAgICBjb25zdCBj
aGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
Q09OVEVYVF9NRURJQV9UT0dHTEVfTE9PUCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6
ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnRW50ZXJWaWRlb0Z1bGxzY3JlZW4oKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNf
cmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDT05URVhUX1ZJREVPX0ZV
TExTQ1JFRU4pOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykg
OiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheSgpCit7
CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkNPTlRFWFRfTUVESUFfUExBWSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0
cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnTWVkaWFQYXVzZSgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNv
dXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfTUVESUFfUEFVU0Up
OworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmco
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpCit7CisgICAgY29u
c3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkNPTlRFWFRfTUVESUFfTVVURSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJv
bVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q29weUF1ZGlvTGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRp
b0luTmV3V2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpCit7CisgICAgY29u
c3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkNPTlRFWFRfR09CQUNLKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRG
OChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0Zv
cndhcmQoKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5n
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDT05URVhUX0dPRk9SV0FSRCk7CisgICAgcmV0dXJuIHN0
cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnU3RvcCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19y
ZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfU1RPUCk7Cisg
ICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOwor
fQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weSgpCit7CisgICAgY29uc3QgY2hhciog
c3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRF
WFRfQ09QWSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKK3sKKyAgICBj
b25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6Q09OVEVYVF9DVVQpOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4
KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3Rl
KCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9QQVNURSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0
cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCisjZW5kaWYKKworU3RyaW5n
IHNlYXJjaGFibGVJbmRleEludHJvZHVjdGlvbigpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5n
ID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNFQVJDSEFCTEVf
SU5ERVhfSU5UUk9EVUNUSU9OKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRG
OChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBzZWFyY2hNZW51Tm9SZWNlbnRTZWFy
Y2hlc1RleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCitTdHJpbmcgc2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBzZWFyY2hN
ZW51Q2xlYXJSZWNlbnRTZWFyY2hlc1RleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgaW1hZ2VUaXRsZShTdHJpbmcgY29uc3Qm
LCBJbnRTaXplIGNvbnN0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWENoZWNrZWRD
aGVja0JveEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgQVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0KCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIEFYRGVmaW5pdGlvbkxpc3RUZXJtVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IEFYUmFkaW9CdXR0b25BY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBBWFVuY2hlY2tlZENoZWNrQm94QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rp
b25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKworU3RyaW5nIEFYTWVudUxpc3RBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHVua25vd25GaWxlU2l6ZVRl
eHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBj
b25zdCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6VkFMSURBVElPTl9QQVRURVJOX01JU01BVENIKTsKKyAgICByZXR1cm4gc3RyaW5nID8g
U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0
aW9uTWVzc2FnZVRvb0xvbmdUZXh0KGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5n
ZVVuZGVyZmxvd1RleHQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VP
dmVyZmxvd1RleHQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21h
dGNoVGV4dChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIGNvbnN0IGNoYXIq
IHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpWQUxJ
REFUSU9OX1NURVBfTUlTTUFUQ0gpOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21V
VEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlw
ZU1pc21hdGNoVGV4dCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5n
ZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlZBTElEQVRJT05fVFlQRV9NSVNNQVRDSCk7
CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygp
OworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JFbWFpbFRleHQo
KQoreworICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKK30K
KworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yTXVsdGlwbGVFbWFpbFRl
eHQoKQoreworICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsK
K30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yVVJMVGV4dCgpCit7
CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpOworfQorCitT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKK3sKKyAgICBjb25zdCBj
aGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
VkFMSURBVElPTl9WQUxVRV9NSVNTSU5HKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpm
cm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVZhbHVlTWlzc2luZ0ZvckNoZWNrYm94VGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VW
YWx1ZU1pc3NpbmdGb3JGaWxlVGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdl
VmFsdWVNaXNzaW5nVGV4dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1p
c3NpbmdGb3JNdWx0aXBsZUZpbGVUZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VWYWx1ZU1pc3NpbmdUZXh0KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVl
TWlzc2luZ0ZvclJhZGlvVGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFs
dWVNaXNzaW5nVGV4dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3Np
bmdGb3JTZWxlY3RUZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1p
c3NpbmdUZXh0KCk7Cit9CisKK1N0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3Ry
aW5nKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRl
eHQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGNvbnN0
IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBsb2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9hdCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIG1l
ZGlhRWxlbWVudExvYWRpbmdTdGF0ZVRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgbWVkaWFFbGVtZW50TGl2ZUJyb2FkY2Fz
dFN0YXRlVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBtaXNzaW5nUGx1Z2luVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjcmFzaGVkUGx1Z2luVGV4
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBtdWx0aXBsZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkKQoreworICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KCIsIC4uLiIpOworfQorCitTdHJpbmcgZGVmYXVsdERldGFpbHNTdW1t
YXJ5VGV4dCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJp
bmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkRFVEFJTFNfU1VNTUFSWSk7CisgICAgcmV0dXJuIHN0
cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFj
a2JlcnJ5L1BsYXRmb3JtTW91c2VFdmVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybU1vdXNlRXZlbnRCbGFja0JlcnJ5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OTU4YjUxNDhjMTNkMDc0YmUzYzlkYWExOWQyZjAyY2M0ODUyZmU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybU1v
dXNlRXZlbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAq
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1N
b3VzZUV2ZW50KGNvbnN0IEludFBvaW50JiBldmVudFBvcywgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvcywgY29uc3QgTW91c2VFdmVudFR5cGUgdHlwZSwgaW50IGNsaWNrQ291bnQsIE1vdXNlQnV0
dG9uIGJ1dHRvbiwgTW91c2VJbnB1dE1ldGhvZCBtZXRob2QpCisgICAgOiBtX3Bvc2l0aW9uKGV2
ZW50UG9zKQorICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3MpCisgICAgLCBtX2J1dHRv
bihidXR0b24pCisgICAgLCBtX2V2ZW50VHlwZSh0eXBlKQorICAgICwgbV9jbGlja0NvdW50KGNs
aWNrQ291bnQpCisgICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQorICAgICwgbV9jdHJsS2V5KGZhbHNl
KQorICAgICwgbV9hbHRLZXkoZmFsc2UpCisgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgLCBt
X3RpbWVzdGFtcChjdXJyZW50VGltZSgpKQorICAgICwgbV9pbnB1dE1ldGhvZChtZXRob2QpCit7
CisgICAgQVNTRVJUKHR5cGUgIT0gTW91c2VFdmVudFNjcm9sbCk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1Nb3VzZUV2ZW50OjpzZXRDbGlja0NvdW50KGludCBjb3VudCkKK3sKKyAgICBtX2NsaWNrQ291
bnQgPSBjb3VudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119381</attachid>
            <date>2011-12-14 22:44:16 -0800</date>
            <delta_ts>2011-12-20 19:15:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74383-20111215144410.patch</filename>
            <type>text/plain</type>
            <size>17240</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjEyNTNiNDkwYWUyZWQ3
Njg5MWU5NmRjNjJmN2IxZDNhZGY4NDFlZS4uZTVjZDQzYTBjYzdkNTQ2OTQ4YzEzOGIwNWVkYjdk
ODMxYjIzNzVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTEyLTE0ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gUGxh
dGZvcm1Nb3VzZUV2ZW50IGFuZCBMb2NhbGl6ZWRTdHJpbmdzIGludG8gV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDM4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1haW4gQ29udHJpYnV0b3JzOgorICAgICAgICBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0By
aW0uY29tPgorICAgICAgICBSb2IgQnVpcyA8cmJ1aXNAcmltLmNvbT4KKyAgICAgICAgTWlrZSBG
ZW50b24gPG1pZmVudG9uQHJpbS5jb20+IAorCisgICAgICAgIEluaXRpYWwgdXBzdHJlYW0sIG5v
IG5ldyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZTogTW9kaWZp
ZWQgdG8gcmVuYW1lIExvY2FsaXphdGlvbnMuY3BwIHRvIExvY2FsaXplZFN0cmluZ3NCbGFja0Jl
cnJ5LmNwcAorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0Js
YWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRm
b3JtTW91c2VFdmVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKwogMjAxMS0xMi0xMiAgRXJpayBB
cnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gQ29kZUdlbmVyYXRv
clY4LnBtIGRvZXMgbm90IGNvcnJlY3RseSB3b3JrIHdpdGggaW5oZXJpdGVkIEhhc0luZGV4R2V0
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKaW5kZXggYTBmYTY0M2U5
NTRiNmIzOGUwOTM5NWMwMTE3MTUzMmJlZDhkYmQ0OS4uMGQxNTdlZjQwMTg1YzkyYzk1OTljN2Fk
YjNmMTM3ZjQ4YjlkNWEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFj
a0JlcnJ5LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFr
ZQpAQCAtMTQyLDcgKzE0Miw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBs
YXRmb3JtL2JsYWNrYmVycnkvRHJhZ0ltYWdlQmxhY2tCZXJyeS5jcHAKICAgICBwbGF0Zm9ybS9i
bGFja2JlcnJ5L0V2ZW50TG9vcEJsYWNrQmVycnkuY3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJy
eS9LVVJMQmxhY2tCZXJyeS5jcHAKLSAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXphdGlv
bnMuY3BwCisgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJy
eS5jcHAKICAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xvZ2dpbmdCbGFja0JlcnJ5LmNwcAogICAg
IHBsYXRmb3JtL2JsYWNrYmVycnkvTUlNRVR5cGVSZWdpc3RyeUJsYWNrQmVycnkuY3BwCiAgICAg
cGxhdGZvcm0vYmxhY2tiZXJyeS9QYXN0ZWJvYXJkQmxhY2tCZXJyeS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNr
QmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRT
dHJpbmdzQmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTExN2I2ZTlhY2Q1MDBlNjBmNmQ1MjMx
NmUxNjQ1MzI5MzM3ODExOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEs
NTk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisKKyNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxC
bGFja0JlcnJ5UGxhdGZvcm1DbGllbnQuaD4KKyNpbmNsdWRlIDxMb2NhbGl6ZVJlc291cmNlLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworREVGSU5FX1NUQVRJQ19MT0NBTChCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6TG9jYWxpemVSZXNvdXJjZSwgc19yZXNvdXJjZSwgKCkpOworCitTdHJpbmcg
ZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0g
c19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZJTEVfQ0hPT1NFX0JV
VFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5n
KSA6IFN0cmluZygpOworfQorCitTdHJpbmcgZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNM
YWJlbCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmco
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkZJTEVfQ0hPT1NFX01VTFRJUExFX0JVVFRPTl9MQUJFTCk7
CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygp
OworfQorCitTdHJpbmcgZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFiZWwoKQoreworICAgIGNv
bnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpGSUxFX0JVVFRPTl9OT19GSUxFX1NFTEVDVEVEX0xBQkVMKTsKKyAgICByZXR1cm4gc3Ry
aW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyBy
ZXNldEJ1dHRvbkRlZmF1bHRMYWJlbCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19y
ZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlJFU0VUX0JVVFRPTl9MQUJF
TCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmlu
ZygpOworfQorCitTdHJpbmcgc3VibWl0QnV0dG9uRGVmYXVsdExhYmVsKCkKK3sKKyAgICBjb25z
dCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6U1VCTUlUX0JVVFRPTl9MQUJFTCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJv
bVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgaW5wdXRFbGVtZW50QWx0VGV4
dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBwbGF0Zm9ybURlZmF1bHRMYW5ndWFnZSgpCit7CisgICAgU3RyaW5nIGxhbmcgPSBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKS0+Z2V0TG9jYWxlKCkuY19zdHIoKTsK
KyAgICAvLyBnZXRMb2NhbGUoKSByZXR1cm5zIGEgUE9TSVggbG9jYWxlIHdoaWNoIHVzZXMgJ18n
IHRvIHNlcGFyYXRlIGxhbmd1YWdlIGFuZCBjb3VudHJ5LgorICAgIC8vIEhvd2V2ZXIsIHdlIHVz
ZSAnLScgaW5zdGVhZCBvZiAnXycgaW4gV2ViQ29yZSAoZS5nLiBlbl91cyBzaG91bGQgcmVhZCBl
bi11cykKKyAgICBzaXplX3QgdW5kZXJzY29yZVBvc2l0aW9uID0gbGFuZy5maW5kKCdfJyk7Cisg
ICAgU3RyaW5nIHJlcGxhY2VXaXRoID0gIi0iOworICAgIGlmICh1bmRlcnNjb3JlUG9zaXRpb24g
IT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBsYW5nLnJlcGxhY2UodW5kZXJzY29yZVBvc2l0
aW9uLCByZXBsYWNlV2l0aC5sZW5ndGgoKSwgcmVwbGFjZVdpdGgpOworICAgIHJldHVybiBsYW5n
OworfQorCisjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCitTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnQm9sZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmco
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29w
eUltYWdlVG9DbGlwYm9hcmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBi
b2FyZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2soKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRMaW5rVG9EaXNrKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0ZvbnRNZW51KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdyYW1tYXIoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
SWdub3JlU3BlbGxpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSW5zcGVjdEVsZW1lbnQoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnSXRhbGljKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xlYXJu
U3BlbGxpbmcoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkZy
YW1lSW5OZXdXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5k
b3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdygpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdPcGVuTGluaygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdSaWdo
dFRvTGVmdCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTZWFyY2hXZWIoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFuZWwoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Nw
ZWxsaW5nTWVudSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnV3Jp
dGluZ0RpcmVjdGlvbk1lbnUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weVZpZGVvTGlua1Rv
Q2xpcGJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5WaWRlb0luTmV3V2luZG93KCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1RvZ2dsZU1lZGlhQ29udHJvbHMoKQoreworICAgIGNvbnN0
IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpDT05URVhUX01FRElBX1RPR0dMRV9DT05UUk9MUyk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0
cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnVG9nZ2xlTWVkaWFMb29wKCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBz
X3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9NRURJQV9U
T0dHTEVfTE9PUCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5n
KSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRW50ZXJWaWRlb0Z1
bGxzY3JlZW4oKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3Ry
aW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDT05URVhUX1ZJREVPX0ZVTExTQ1JFRU4pOworICAg
IHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30K
KworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ01lZGlhUGxheSgpCit7CisgICAgY29uc3QgY2hh
ciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNP
TlRFWFRfTUVESUFfUExBWSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgo
c3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTWVkaWFQ
YXVzZSgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmco
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfTUVESUFfUEFVU0UpOworICAgIHJldHVybiBz
dHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ01lZGlhTXV0ZSgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5n
ID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfTUVE
SUFfTVVURSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weUF1ZGlvTGlua1Rv
Q2xpcGJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5BdWRpb0luTmV3V2luZG93KCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvQmFjaygpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5n
ID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfR09C
QUNLKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdHb0ZvcndhcmQoKQoreworICAg
IGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpDT05URVhUX0dPRk9SV0FSRCk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6
ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnU3RvcCgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJp
bmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfU1RPUCk7CisgICAgcmV0dXJuIHN0cmlu
ZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnQ29weSgpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNv
dXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfQ09QWSk7CisgICAg
cmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQor
CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ3V0KCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJp
bmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9D
VVQpOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkKK3sKKyAgICBjb25z
dCBjaGFyKiBzdHJpbmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6Q09OVEVYVF9QQVNURSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6ZnJvbVVURjgo
c3RyaW5nKSA6IFN0cmluZygpOworfQorCisjZW5kaWYKKworU3RyaW5nIHNlYXJjaGFibGVJbmRl
eEludHJvZHVjdGlvbigpCit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5n
ZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNFQVJDSEFCTEVfSU5ERVhfSU5UUk9EVUNU
SU9OKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpIDogU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBzZWFyY2hNZW51Tm9SZWNlbnRTZWFyY2hlc1RleHQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcg
c2VhcmNoTWVudVJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBzZWFyY2hNZW51Q2xlYXJSZWNlbnRT
ZWFyY2hlc1RleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgaW1hZ2VUaXRsZShTdHJpbmcgY29uc3QmLCBJbnRTaXplIGNvbnN0
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIEFYQnV0dG9uQWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWENoZWNrZWRDaGVja0JveEFjdGlvblZl
cmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitTdHJpbmcgQVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYRGVmaW5pdGlv
bkxpc3RUZXJtVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBBWExpbmtBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYUmFkaW9CdXR0b25B
Y3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIEFYVGV4dEZpZWxkQWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWFVuY2hlY2tlZENo
ZWNrQm94QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBBWE1lbnVMaXN0UG9wdXBBY3Rpb25WZXJiKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFY
TWVudUxpc3RBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworU3RyaW5nIHVua25vd25GaWxlU2l6ZVRleHQoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJp
bmcgPSBzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VkFMSURBVElP
Tl9QQVRURVJOX01JU01BVENIKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRG
OChzdHJpbmcpIDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVRvb0xv
bmdUZXh0KGludCwgaW50KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQo
Y29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoY29u
c3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IHNfcmVz
b3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpWQUxJREFUSU9OX1NURVBfTUlT
TUFUQ0gpOworICAgIHJldHVybiBzdHJpbmcgPyBTdHJpbmc6OmZyb21VVEY4KHN0cmluZykgOiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgp
Cit7CisgICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OlZBTElEQVRJT05fVFlQRV9NSVNNQVRDSCk7CisgICAgcmV0dXJuIHN0
cmluZyA/IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCitTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JFbWFpbFRleHQoKQoreworICAgIHJldHVy
biB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKK30KKworU3RyaW5nIHZhbGlk
YXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yTXVsdGlwbGVFbWFpbFRleHQoKQoreworICAgIHJl
dHVybiB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKK30KKworU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yVVJMVGV4dCgpCit7CisgICAgcmV0dXJuIHZh
bGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCkKK3sKKyAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBz
X3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VkFMSURBVElPTl9WQUxV
RV9NSVNTSU5HKTsKKyAgICByZXR1cm4gc3RyaW5nID8gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcp
IDogU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0Zv
ckNoZWNrYm94VGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNz
aW5nVGV4dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JG
aWxlVGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4
dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JNdWx0aXBs
ZUZpbGVUZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdU
ZXh0KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclJhZGlv
VGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgp
OworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0
KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7Cit9
CisKK1N0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50U3RyaW5nKGNvbnN0IFN0cmlu
ZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBsb2NhbGl6ZWRNZWRpYUNvbnRyb2xFbGVtZW50SGVscFRleHQoY29uc3QgU3RyaW5n
JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBs
b2NhbGl6ZWRNZWRpYVRpbWVEZXNjcmlwdGlvbihmbG9hdCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIG1lZGlhRWxlbWVudExvYWRp
bmdTdGF0ZVRleHQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgbWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmlu
ZyBtaXNzaW5nUGx1Z2luVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjcmFzaGVkUGx1Z2luVGV4dCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBtdWx0aXBs
ZUZpbGVVcGxvYWRUZXh0KHVuc2lnbmVkKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KCIsIC4uLiIpOworfQorCitTdHJpbmcgZGVmYXVsdERldGFpbHNTdW1tYXJ5VGV4dCgpCit7Cisg
ICAgY29uc3QgY2hhciogc3RyaW5nID0gc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkRFVEFJTFNfU1VNTUFSWSk7CisgICAgcmV0dXJuIHN0cmluZyA/IFN0cmluZzo6
ZnJvbVVURjgoc3RyaW5nKSA6IFN0cmluZygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3Jt
TW91c2VFdmVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9QbGF0Zm9ybU1vdXNlRXZlbnRCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTU4YjUx
NDhjMTNkMDc0YmUzYzlkYWExOWQyZjAyY2M0ODUyZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybU1vdXNlRXZlbnRCbGFja0Jl
cnJ5LmNwcApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEx
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1BsYXRmb3JtTW91c2VFdmVudDo6UGxhdGZvcm1Nb3VzZUV2ZW50KGNvbnN0
IEludFBvaW50JiBldmVudFBvcywgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvcywgY29uc3QgTW91
c2VFdmVudFR5cGUgdHlwZSwgaW50IGNsaWNrQ291bnQsIE1vdXNlQnV0dG9uIGJ1dHRvbiwgTW91
c2VJbnB1dE1ldGhvZCBtZXRob2QpCisgICAgOiBtX3Bvc2l0aW9uKGV2ZW50UG9zKQorICAgICwg
bV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3MpCisgICAgLCBtX2J1dHRvbihidXR0b24pCisgICAg
LCBtX2V2ZW50VHlwZSh0eXBlKQorICAgICwgbV9jbGlja0NvdW50KGNsaWNrQ291bnQpCisgICAg
LCBtX3NoaWZ0S2V5KGZhbHNlKQorICAgICwgbV9jdHJsS2V5KGZhbHNlKQorICAgICwgbV9hbHRL
ZXkoZmFsc2UpCisgICAgLCBtX21ldGFLZXkoZmFsc2UpCisgICAgLCBtX3RpbWVzdGFtcChjdXJy
ZW50VGltZSgpKQorICAgICwgbV9pbnB1dE1ldGhvZChtZXRob2QpCit7CisgICAgQVNTRVJUKHR5
cGUgIT0gTW91c2VFdmVudFNjcm9sbCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1Nb3VzZUV2ZW50Ojpz
ZXRDbGlja0NvdW50KGludCBjb3VudCkKK3sKKyAgICBtX2NsaWNrQ291bnQgPSBjb3VudDsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120135</attachid>
            <date>2011-12-20 19:15:40 -0800</date>
            <delta_ts>2011-12-20 23:36:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74383-20111221111535.patch</filename>
            <type>text/plain</type>
            <size>15951</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDIwMjIzYWMyMDM5Yjc1
MjUxYTU0NmJhNTYwN2Q1ZTYyYTI3YjZiMC4uNDJmNTUwOTNkMTNhZGVhNGIzM2FhYTI1NjM4ODJj
OGQwZDY5MDViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTE0ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gUGxh
dGZvcm1Nb3VzZUV2ZW50IGFuZCBMb2NhbGl6ZWRTdHJpbmdzIGludG8gV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDM4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE90aGVyIE1haW4gQ29udHJpYnV0b3JzOgorICAgICAgICBSb2IgQnVpcyA8cmJ1aXNAcmlt
LmNvbT4KKyAgICAgICAgTWlrZSBGZW50b24gPG1pZmVudG9uQHJpbS5jb20+IAorCisgICAgICAg
IEluaXRpYWwgdXBzdHJlYW0sIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtQmxh
Y2tCZXJyeS5jbWFrZTogTW9kaWZpZWQgdG8gcmVuYW1lIExvY2FsaXphdGlvbnMuY3BwIHRvIExv
Y2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcAorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVy
cnkvTG9jYWxpemVkU3RyaW5nc0JsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtTW91c2VFdmVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4K
KwogMjAxMS0xMi0xNiAgRGFuaWVsIFNpZXZlcnMgIDxzaWV2ZXJzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbQ2hyb21pdW1dIEFkZCB0cmFjZSBldmVudHMgZm9yIGRlY29kaW5nIGFuZCBkcmF3
aW5nIGltYWdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJy
eS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQmxhY2tCZXJyeS5jbWFrZQppbmRleCA0
OTcyNzEwMDQzZTk3OWZjOGVjYjU0ZTI4ZTk0NmNlYWZmYTIwMmM1Li4wZTMyNGRlMTE4NzU1MjRl
YTczNzkxZTViMzM4YjFiOTkwYTExMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1CbGFja0Jl
cnJ5LmNtYWtlCkBAIC0xNDIsNyArMTQyLDcgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9EcmFnSW1hZ2VCbGFja0JlcnJ5LmNwcAogICAgIHBs
YXRmb3JtL2JsYWNrYmVycnkvRXZlbnRMb29wQmxhY2tCZXJyeS5jcHAKICAgICBwbGF0Zm9ybS9i
bGFja2JlcnJ5L0tVUkxCbGFja0JlcnJ5LmNwcAotICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9j
YWxpemF0aW9ucy5jcHAKKyAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsaXplZFN0cmluZ3NC
bGFja0JlcnJ5LmNwcAogICAgIHBsYXRmb3JtL2JsYWNrYmVycnkvTG9nZ2luZ0JsYWNrQmVycnku
Y3BwCiAgICAgcGxhdGZvcm0vYmxhY2tiZXJyeS9NSU1FVHlwZVJlZ2lzdHJ5QmxhY2tCZXJyeS5j
cHAKICAgICBwbGF0Zm9ybS9ibGFja2JlcnJ5L1Bhc3RlYm9hcmRCbGFja0JlcnJ5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJp
bmdzQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xv
Y2FsaXplZFN0cmluZ3NCbGFja0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2YzNjliYTQ4OGYxOWVl
YjljOTkxM2M5OWMzNTQ2OTE3NjY2ODBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbGl6ZWRTdHJpbmdzQmxhY2tCZXJyeS5jcHAKQEAg
LTAsMCArMSw1NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmlu
Z3MuaCIKKworI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUNsaWVudC5oPgorI2luY2x1ZGUgPExvY2Fs
aXplUmVzb3VyY2UuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitERUZJTkVfU1RBVElDX0xP
Q0FMKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2NhbGl6ZVJlc291cmNlLCBzX3Jlc291cmNlLCAo
KSk7CisKK1N0cmluZyBmaWxlQnV0dG9uQ2hvb3NlRmlsZUxhYmVsKCkKK3sKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6RklMRV9DSE9PU0VfQlVUVE9OX0xBQkVMKSk7Cit9CisKK1N0cmluZyBmaWxlQnV0dG9uQ2hv
b3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChz
X3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RklMRV9DSE9PU0VfTVVM
VElQTEVfQlVUVE9OX0xBQkVMKSk7Cit9CisKK1N0cmluZyBmaWxlQnV0dG9uTm9GaWxlU2VsZWN0
ZWRMYWJlbCgpCit7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc19yZXNvdXJjZS5nZXRT
dHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZJTEVfQlVUVE9OX05PX0ZJTEVfU0VMRUNURURf
TEFCRUwpKTsKK30KKworU3RyaW5nIHJlc2V0QnV0dG9uRGVmYXVsdExhYmVsKCkKK3sKKyAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6UkVTRVRfQlVUVE9OX0xBQkVMKSk7Cit9CisKK1N0cmluZyBzdWJtaXRCdXR0b25E
ZWZhdWx0TGFiZWwoKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNfcmVzb3VyY2Uu
Z2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTVUJNSVRfQlVUVE9OX0xBQkVMKSk7Cit9
CisKK1N0cmluZyBpbnB1dEVsZW1lbnRBbHRUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1
YWdlKCkKK3sKKyAgICBTdHJpbmcgbGFuZyA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGllbnQ6
OmdldCgpLT5nZXRMb2NhbGUoKS5jX3N0cigpOworICAgIC8vIGdldExvY2FsZSgpIHJldHVybnMg
YSBQT1NJWCBsb2NhbGUgd2hpY2ggdXNlcyAnXycgdG8gc2VwYXJhdGUgbGFuZ3VhZ2UgYW5kIGNv
dW50cnkuCisgICAgLy8gSG93ZXZlciwgd2UgdXNlICctJyBpbnN0ZWFkIG9mICdfJyBpbiBXZWJD
b3JlIChlLmcuIGVuX3VzIHNob3VsZCByZWFkIGVuLXVzKQorICAgIHNpemVfdCB1bmRlcnNjb3Jl
UG9zaXRpb24gPSBsYW5nLmZpbmQoJ18nKTsKKyAgICBTdHJpbmcgcmVwbGFjZVdpdGggPSAiLSI7
CisgICAgaWYgKHVuZGVyc2NvcmVQb3NpdGlvbiAhPSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IGxhbmcucmVwbGFjZSh1bmRlcnNjb3JlUG9zaXRpb24sIHJlcGxhY2VXaXRoLmxlbmd0aCgpLCBy
ZXBsYWNlV2l0aCk7CisgICAgcmV0dXJuIGxhbmc7Cit9CisKKyNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdCb2xkKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0NoZWNrR3JhbW1hcldpdGhTcGVsbGluZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVj
a1NwZWxsaW5nKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGlu
ZygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5SW1hZ2VUb0NsaXBib2FyZCgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDb3B5TGlua1RvQ2xpcGJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0RlZmF1bHREaXJlY3Rpb24oKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRv
RGlzaygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2soKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29u
dGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3Jh
bW1hcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdJbnNwZWN0RWxlbWVudCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJdGFsaWMo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZygpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0
ZW1UYWdMZWZ0VG9SaWdodCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdP
cGVuTGlua0luTmV3V2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rKCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ091dGxpbmUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUmVsb2Fk
KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwor
U3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0VG9MZWZ0KCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1NlYXJjaFdlYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChi
b29sKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGlu
ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdXcml0aW5nRGlyZWN0aW9uTWVudSgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDb3B5VmlkZW9MaW5rVG9DbGlwYm9hcmQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnT3BlblZpZGVvSW5OZXdXaW5kb3coKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnVG9nZ2xl
TWVkaWFDb250cm9scygpCit7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoc19yZXNvdXJj
ZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNPTlRFWFRfTUVESUFfVE9HR0xFX0NP
TlRST0xTKSk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdUb2dnbGVNZWRpYUxvb3Ao
KQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpDT05URVhUX01FRElBX1RPR0dMRV9MT09QKSk7Cit9CisKK1N0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdFbnRlclZpZGVvRnVsbHNjcmVlbigpCit7CisgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgoc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkNPTlRFWFRfVklERU9fRlVMTFNDUkVFTikpOworfQorCitTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnTWVkaWFQbGF5KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jl
c291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9NRURJQV9QTEFZ
KSk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdNZWRpYVBhdXNlKCkKK3sKKyAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6Q09OVEVYVF9NRURJQV9QQVVTRSkpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnTWVkaWFNdXRlKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jlc291
cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9NRURJQV9NVVRFKSk7
Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDb3B5QXVkaW9MaW5rVG9DbGlwYm9hcmQo
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkF1ZGlvSW5OZXdXaW5kb3coKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnR29CYWNrKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jl
c291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9HT0JBQ0spKTsK
K30KKworU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCgpCit7CisgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgoc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkNPTlRFWFRfR09GT1JXQVJEKSk7Cit9CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdT
dG9wKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jlc291cmNlLmdldFN0cmlu
ZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9TVE9QKSk7Cit9CisKK1N0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdDb3B5KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jl
c291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q09OVEVYVF9DT1BZKSk7Cit9
CisKK1N0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDdXQoKQoreworICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDT05U
RVhUX0NVVCkpOworfQorCitTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKQoreworICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpDT05URVhUX1BBU1RFKSk7Cit9CisKKyNlbmRpZgorCitTdHJpbmcgc2VhcmNo
YWJsZUluZGV4SW50cm9kdWN0aW9uKCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChz
X3Jlc291cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U0VBUkNIQUJMRV9JTkRF
WF9JTlRST0RVQ1RJT04pKTsKK30KKworU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNlYXJjaGVz
VGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK1N0cmluZyBzZWFyY2hNZW51UmVjZW50U2VhcmNoZXNUZXh0KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIHNlYXJjaE1lbnVD
bGVhclJlY2VudFNlYXJjaGVzVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBpbWFnZVRpdGxlKFN0cmluZyBjb25zdCYsIElu
dFNpemUgY29uc3QmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitTdHJpbmcgQVhCdXR0b25BY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYQ2hlY2tlZENoZWNr
Qm94QWN0aW9uVmVyYigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKK1N0cmluZyBBWERlZmluaXRpb25MaXN0RGVmaW5pdGlvblRleHQoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcg
QVhEZWZpbml0aW9uTGlzdFRlcm1UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYTGlua0FjdGlvblZlcmIoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhS
YWRpb0J1dHRvbkFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgQVhUZXh0RmllbGRBY3Rpb25WZXJiKCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFY
VW5jaGVja2VkQ2hlY2tCb3hBY3Rpb25WZXJiKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIEFYTWVudUxpc3RQb3B1cEFjdGlvblZl
cmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQor
CitTdHJpbmcgQVhNZW51TGlzdEFjdGlvblZlcmIoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdW5rbm93bkZpbGVTaXplVGV4dCgp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKQoreworICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpWQUxJREFUSU9OX1BBVFRFUk5fTUlTTUFUQ0gpKTsKK30KKworU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlVG9vTG9uZ1RleHQoaW50LCBpbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVJhbmdl
VW5kZXJmbG93VGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92
ZXJmbG93VGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0
Y2hUZXh0KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgoc19yZXNvdXJjZS5nZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlZB
TElEQVRJT05fU1RFUF9NSVNNQVRDSCkpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VU
eXBlTWlzbWF0Y2hUZXh0KCkKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChzX3Jlc291
cmNlLmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6VkFMSURBVElPTl9UWVBFX01JU01B
VENIKSk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvckVtYWls
VGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgp
OworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JNdWx0aXBsZUVt
YWlsVGV4dCgpCit7CisgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4
dCgpOworfQorCitTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hGb3JVUkxUZXh0
KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7Cit9
CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKQoreworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHNfcmVzb3VyY2UuZ2V0U3RyaW5nKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpWQUxJREFUSU9OX1ZBTFVFX01JU1NJTkcpKTsKK30KKworU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yQ2hlY2tib3hUZXh0KCkKK3sKKyAgICByZXR1cm4gdmFs
aWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZVZhbHVlTWlzc2luZ0ZvckZpbGVUZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlv
bk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2Fn
ZVZhbHVlTWlzc2luZ0Zvck11bHRpcGxlRmlsZVRleHQoKQoreworICAgIHJldHVybiB2YWxpZGF0
aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKK30KKworU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlVmFsdWVNaXNzaW5nRm9yUmFkaW9UZXh0KCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGlvbk1l
c3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7Cit9CisKK1N0cmluZyB2YWxpZGF0aW9uTWVzc2FnZVZh
bHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKQoreworICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2Fn
ZVZhbHVlTWlzc2luZ1RleHQoKTsKK30KKworU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVs
ZW1lbnRTdHJpbmcoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGxvY2FsaXplZE1lZGlhQ29udHJvbEVsZW1l
bnRIZWxwVGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIFN0cmluZygpOworfQorCitTdHJpbmcgbG9jYWxpemVkTWVkaWFUaW1lRGVzY3JpcHRp
b24oY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBT
dHJpbmcoKTsKK30KKworU3RyaW5nIGxvY2FsaXplZE1lZGlhVGltZURlc2NyaXB0aW9uKGZsb2F0
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitT
dHJpbmcgbWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBtZWRpYUVsZW1lbnRMaXZl
QnJvYWRjYXN0U3RhdGVUZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworU3RyaW5nIG1pc3NpbmdQbHVnaW5UZXh0KCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIGNyYXNoZWRQ
bHVnaW5UZXh0KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTdHJpbmco
KTsKK30KKworU3RyaW5nIG11bHRpcGxlRmlsZVVwbG9hZFRleHQodW5zaWduZWQpCit7CisgICAg
cmV0dXJuIFN0cmluZygiLCAuLi4iKTsKK30KKworU3RyaW5nIGRlZmF1bHREZXRhaWxzU3VtbWFy
eVRleHQoKQoreworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHNfcmVzb3VyY2UuZ2V0U3Ry
aW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpERVRBSUxTX1NVTU1BUlkpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxh
Y2tiZXJyeS9QbGF0Zm9ybU1vdXNlRXZlbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1Nb3VzZUV2ZW50QmxhY2tCZXJyeS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjU2NDU5MjBlZjljMWFkZTA2ZDYzODVjNGNlN2JiYzQxNDk4MjdjYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1N
b3VzZUV2ZW50QmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvQ3VycmVu
dFRpbWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybU1vdXNlRXZlbnQ6OlBs
YXRmb3JtTW91c2VFdmVudChjb25zdCBJbnRQb2ludCYgZXZlbnRQb3MsIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3MsIGNvbnN0IE1vdXNlRXZlbnRUeXBlIHR5cGUsIGludCBjbGlja0NvdW50LCBN
b3VzZUJ1dHRvbiBidXR0b24sIE1vdXNlSW5wdXRNZXRob2QgbWV0aG9kKQorICAgIDogbV9wb3Np
dGlvbihldmVudFBvcykKKyAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zKQorICAgICwg
bV9idXR0b24oYnV0dG9uKQorICAgICwgbV9ldmVudFR5cGUodHlwZSkKKyAgICAsIG1fY2xpY2tD
b3VudChjbGlja0NvdW50KQorICAgICwgbV9zaGlmdEtleShmYWxzZSkKKyAgICAsIG1fY3RybEtl
eShmYWxzZSkKKyAgICAsIG1fYWx0S2V5KGZhbHNlKQorICAgICwgbV9tZXRhS2V5KGZhbHNlKQor
ICAgICwgbV90aW1lc3RhbXAoY3VycmVudFRpbWUoKSkKKyAgICAsIG1faW5wdXRNZXRob2QobWV0
aG9kKQoreworICAgIEFTU0VSVCh0eXBlICE9IE1vdXNlRXZlbnRTY3JvbGwpOworfQorCit2b2lk
IFBsYXRmb3JtTW91c2VFdmVudDo6c2V0Q2xpY2tDb3VudChpbnQgY291bnQpCit7CisgICAgbV9j
bGlja0NvdW50ID0gY291bnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>