<?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>137155</bug_id>
          
          <creation_ts>2014-09-26 13:18:36 -0700</creation_ts>
          <short_desc>Native inlining should resolve internal references</short_desc>
          <delta_ts>2014-10-13 16:57:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Mirman">mmirman</reporter>
          <assigned_to name="Matthew Mirman">mmirman</assigned_to>
          <cc>atrick</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>juergen</cc>
    
    <cc>mmirman</cc>
    
    <cc>nrotem</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037537</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-09-26 13:18:36 -0700</bug_when>
    <thetext>When native inlining in the FTL imports LLVM IR to inline, it doesn&apos;t change references to internal variables and functions which can no longer be resolved during compilation.  Currently there actually isn&apos;t a way to do this without modifying LLVM and clang, so here&apos;s a modification to LLVM and clang that makes this, among other things possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037539</commentid>
    <comment_count>1</comment_count>
      <attachid>238729</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-09-26 13:22:45 -0700</bug_when>
    <thetext>Created attachment 238729
The patch for LLVM for adding the pass

Not yet for review, for archival purposes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037540</commentid>
    <comment_count>2</comment_count>
      <attachid>238730</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-09-26 13:23:29 -0700</bug_when>
    <thetext>Created attachment 238730
The patch for Clang to add the attribute

Not yet for review.  For archival purposes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037545</commentid>
    <comment_count>3</comment_count>
      <attachid>238732</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-09-26 13:39:14 -0700</bug_when>
    <thetext>Created attachment 238732
The patch for LLVM for adding the pass

Still not yet for review.  I forgot a file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039799</commentid>
    <comment_count>4</comment_count>
      <attachid>238732</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-06 13:11:59 -0700</bug_when>
    <thetext>Comment on attachment 238732
The patch for LLVM for adding the pass

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

&gt; lib/Transforms/Scalar/LiftInternalCalls.cpp:63
&gt; +            const GlobalValue *Pt = dyn_cast&lt;GlobalValue&gt;(Op);
&gt; +            if (Pt &amp;&amp; GlobalValue::isLocalLinkage(Pt-&gt;getLinkage()))
&gt; +              Refs.insert(Pt-&gt;getName());

I think this misses constexpr&apos;s that transitively reference GlobalValues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039800</commentid>
    <comment_count>5</comment_count>
      <attachid>238732</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-06 13:13:07 -0700</bug_when>
    <thetext>Comment on attachment 238732
The patch for LLVM for adding the pass

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

&gt; lib/Transforms/Scalar/LiftInternalCalls.cpp:55
&gt; +  StringSet&lt;&gt; Refs;

Why can&apos;t this just say StringSet instead of StringSet&lt;&gt;?

Also, wouldn&apos;t it be better to use a SmallPtrSet of GlobalValues?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039822</commentid>
    <comment_count>6</comment_count>
      <attachid>238732</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-06 14:24:05 -0700</bug_when>
    <thetext>Comment on attachment 238732
The patch for LLVM for adding the pass

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

&gt; lib/Transforms/Scalar/LiftInternalCalls.cpp:83
&gt; +  Constant **TableVals = new Constant*[Refs.size()];

Seems like you should use some built-in vector type here, like std::vector or SmallVector.

&gt; lib/Transforms/Scalar/LiftInternalCalls.cpp:106
&gt; +    MDNode *MetaTableRefValue = 
&gt; +      MDNode::get(M.getContext(), ArrayRef&lt;Value *&gt;(Loc));

I don&apos;t think we want these to be MDNodes.  MDNodes aren&apos;t required to survive compilation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041398</commentid>
    <comment_count>7</comment_count>
      <attachid>239756</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-10-13 16:19:33 -0700</bug_when>
    <thetext>Created attachment 239756
The patch for LLVM for adding the pass with the file. 

Changed the name of the assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041399</commentid>
    <comment_count>8</comment_count>
      <attachid>239756</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-13 16:20:57 -0700</bug_when>
    <thetext>Comment on attachment 239756
The patch for LLVM for adding the pass with the file. 

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

&gt; lib/Transforms/Scalar/PrepareForJITInlining.cpp:124
&gt; +    // now simply add a metadata entry which points to this value! 
&gt; +    // metadata will be removed when linking so it won&apos;t polute the namespace.
&gt; +    
&gt; +    std::string MetaTableRefName = RefName + NewGlobSuffix;
&gt; +    NamedMDNode *MetaTableRef = 
&gt; +      M.getOrInsertNamedMetadata(MetaTableRefName);

So, this creates a symbol table that disappears before the JIT gets to run?  I don&apos;t think that&apos;s what you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041400</commentid>
    <comment_count>9</comment_count>
      <attachid>239757</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-10-13 16:21:20 -0700</bug_when>
    <thetext>Created attachment 239757
The patch for Clang to add the attribute

Renames the clang assertion to something reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041401</commentid>
    <comment_count>10</comment_count>
      <attachid>239757</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-13 16:22:03 -0700</bug_when>
    <thetext>Comment on attachment 239757
The patch for Clang to add the attribute

This part LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041403</commentid>
    <comment_count>11</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-10-13 16:37:07 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 239756 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239756&amp;action=review
&gt; 
&gt; &gt; lib/Transforms/Scalar/PrepareForJITInlining.cpp:124
&gt; &gt; +    // now simply add a metadata entry which points to this value! 
&gt; &gt; +    // metadata will be removed when linking so it won&apos;t polute the namespace.
&gt; &gt; +    
&gt; &gt; +    std::string MetaTableRefName = RefName + NewGlobSuffix;
&gt; &gt; +    NamedMDNode *MetaTableRef = 
&gt; &gt; +      M.getOrInsertNamedMetadata(MetaTableRefName);
&gt; 
&gt; So, this creates a symbol table that disappears before the JIT gets to run?  I don&apos;t think that&apos;s what you want.

This is in face what I want.  The array of referenced internal symbol locations doesn&apos;t disappear at runtime, only the metadata which maps the names of these functions to their locations in that array.   The metadata doesn&apos;t get erased from the llvm ir which gets stored in &quot;.llvmir.MODULENAME&quot; which is loaded at by the JIT.  The JIT then gets the locations in the array from the llvm ir rather than the runtime values.  This way, the names are easier to encode, the hashtable&apos;s mechanics are already implemented via llvm&apos;s find metadata by name mechanism, and the namespace still isn&apos;t polluted anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041404</commentid>
    <comment_count>12</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-13 16:38:04 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 239756 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239756&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; lib/Transforms/Scalar/PrepareForJITInlining.cpp:124
&gt; &gt; &gt; +    // now simply add a metadata entry which points to this value! 
&gt; &gt; &gt; +    // metadata will be removed when linking so it won&apos;t polute the namespace.
&gt; &gt; &gt; +    
&gt; &gt; &gt; +    std::string MetaTableRefName = RefName + NewGlobSuffix;
&gt; &gt; &gt; +    NamedMDNode *MetaTableRef = 
&gt; &gt; &gt; +      M.getOrInsertNamedMetadata(MetaTableRefName);
&gt; &gt; 
&gt; &gt; So, this creates a symbol table that disappears before the JIT gets to run?  I don&apos;t think that&apos;s what you want.
&gt; 
&gt; This is in face what I want.  The array of referenced internal symbol locations doesn&apos;t disappear at runtime, only the metadata which maps the names of these functions to their locations in that array.   The metadata doesn&apos;t get erased from the llvm ir which gets stored in &quot;.llvmir.MODULENAME&quot; which is loaded at by the JIT.  The JIT then gets the locations in the array from the llvm ir rather than the runtime values.  This way, the names are easier to encode, the hashtable&apos;s mechanics are already implemented via llvm&apos;s find metadata by name mechanism, and the namespace still isn&apos;t polluted anymore.

How are you going to use this to get the pointer to the value using the name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041414</commentid>
    <comment_count>13</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-10-13 16:50:08 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (From update of attachment 239756 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239756&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; lib/Transforms/Scalar/PrepareForJITInlining.cpp:124
&gt; &gt; &gt; &gt; +    // now simply add a metadata entry which points to this value! 
&gt; &gt; &gt; &gt; +    // metadata will be removed when linking so it won&apos;t polute the namespace.
&gt; &gt; &gt; &gt; +    
&gt; &gt; &gt; &gt; +    std::string MetaTableRefName = RefName + NewGlobSuffix;
&gt; &gt; &gt; &gt; +    NamedMDNode *MetaTableRef = 
&gt; &gt; &gt; &gt; +      M.getOrInsertNamedMetadata(MetaTableRefName);
&gt; &gt; &gt; 
&gt; &gt; &gt; So, this creates a symbol table that disappears before the JIT gets to run?  I don&apos;t think that&apos;s what you want.
&gt; &gt; 
&gt; &gt; This is in face what I want.  The array of referenced internal symbol locations doesn&apos;t disappear at runtime, only the metadata which maps the names of these functions to their locations in that array.   The metadata doesn&apos;t get erased from the llvm ir which gets stored in &quot;.llvmir.MODULENAME&quot; which is loaded at by the JIT.  The JIT then gets the locations in the array from the llvm ir rather than the runtime values.  This way, the names are easier to encode, the hashtable&apos;s mechanics are already implemented via llvm&apos;s find metadata by name mechanism, and the namespace still isn&apos;t polluted anymore.
&gt; 
&gt; How are you going to use this to get the pointer to the value using the name?

in the jit:

check if the function (L) is inlineable by searching for &quot;nameoffunction.jitinlineable&quot;.  
If so, link the module&apos;s llvm ir pointed to by &quot;nameoffunction.jitinlineable&quot; into the current module (if its not already loaded).
For the function L, for each variable access, check if there is a metadata entry in the current module named &quot;REFNAME.MODULENAME&quot;.   If not move on.  If so, change it to &quot;.internalRefsTable.MODULENAME[REFNAME.MODULENAME metadata&apos;s data]&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041418</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-13 16:57:15 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; &gt; (From update of attachment 239756 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239756&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; lib/Transforms/Scalar/PrepareForJITInlining.cpp:124
&gt; &gt; &gt; &gt; &gt; +    // now simply add a metadata entry which points to this value! 
&gt; &gt; &gt; &gt; &gt; +    // metadata will be removed when linking so it won&apos;t polute the namespace.
&gt; &gt; &gt; &gt; &gt; +    
&gt; &gt; &gt; &gt; &gt; +    std::string MetaTableRefName = RefName + NewGlobSuffix;
&gt; &gt; &gt; &gt; &gt; +    NamedMDNode *MetaTableRef = 
&gt; &gt; &gt; &gt; &gt; +      M.getOrInsertNamedMetadata(MetaTableRefName);
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; So, this creates a symbol table that disappears before the JIT gets to run?  I don&apos;t think that&apos;s what you want.
&gt; &gt; &gt; 
&gt; &gt; &gt; This is in face what I want.  The array of referenced internal symbol locations doesn&apos;t disappear at runtime, only the metadata which maps the names of these functions to their locations in that array.   The metadata doesn&apos;t get erased from the llvm ir which gets stored in &quot;.llvmir.MODULENAME&quot; which is loaded at by the JIT.  The JIT then gets the locations in the array from the llvm ir rather than the runtime values.  This way, the names are easier to encode, the hashtable&apos;s mechanics are already implemented via llvm&apos;s find metadata by name mechanism, and the namespace still isn&apos;t polluted anymore.
&gt; &gt; 
&gt; &gt; How are you going to use this to get the pointer to the value using the name?
&gt; 
&gt; in the jit:
&gt; 
&gt; check if the function (L) is inlineable by searching for &quot;nameoffunction.jitinlineable&quot;.  
&gt; If so, link the module&apos;s llvm ir pointed to by &quot;nameoffunction.jitinlineable&quot; into the current module (if its not already loaded).
&gt; For the function L, for each variable access, check if there is a metadata entry in the current module named &quot;REFNAME.MODULENAME&quot;.   If not move on.  If so, change it to &quot;.internalRefsTable.MODULENAME[REFNAME.MODULENAME metadata&apos;s data]&quot;

Oh, I see now!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>238729</attachid>
            <date>2014-09-26 13:22:45 -0700</date>
            <delta_ts>2014-09-26 13:39:14 -0700</delta_ts>
            <desc>The patch for LLVM for adding the pass</desc>
            <filename>llvm_lift_internal_calls_pass.patch</filename>
            <type>application/octet-stream</type>
            <size>6508</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">SW5kZXg6IGluY2x1ZGUvbGx2bS9CaXRjb2RlL0xMVk1CaXRDb2Rlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGluY2x1ZGUvbGx2bS9CaXRjb2RlL0xMVk1CaXRDb2Rlcy5oCShyZXZpc2lvbiAyMTc3MjEpCisr
KyBpbmNsdWRlL2xsdm0vQml0Y29kZS9MTFZNQml0Q29kZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
Mzc2LDcgKzM3Niw4IEBACiAgICAgQVRUUl9LSU5EX0lOX0FMTE9DQSA9IDM4LAogICAgIEFUVFJf
S0lORF9OT05fTlVMTCA9IDM5LAogICAgIEFUVFJfS0lORF9KVU1QX1RBQkxFID0gNDAsCi0gICAg
QVRUUl9LSU5EX0RFUkVGRVJFTkNFQUJMRSA9IDQxCisgICAgQVRUUl9LSU5EX0RFUkVGRVJFTkNF
QUJMRSA9IDQxLAorICAgIEFUVFJfS0lORF9MSUZUX0lOVEVSTkFMX0NBTExTID0gNDIsCiAgIH07
CiAKICAgZW51bSBDb21kYXRTZWxlY3Rpb25LaW5kQ29kZXMgewpJbmRleDogaW5jbHVkZS9sbHZt
L0lSL0F0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRlL2xsdm0vSVIvQXR0cmlidXRl
cy5oCShyZXZpc2lvbiAyMTc3MjEpCisrKyBpbmNsdWRlL2xsdm0vSVIvQXR0cmlidXRlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBACiAgICAgSW5saW5lSGludCwgICAgICAgICAg
ICAvLy88IFNvdXJjZSBzYWlkIGlubGluaW5nIHdhcyBkZXNpcmFibGUKICAgICBJblJlZywgICAg
ICAgICAgICAgICAgIC8vLzwgRm9yY2UgYXJndW1lbnQgdG8gYmUgcGFzc2VkIGluIHJlZ2lzdGVy
CiAgICAgSnVtcFRhYmxlLCAgICAgICAgICAgICAvLy88IEJ1aWxkIGp1bXAtaW5zdHJ1Y3Rpb24g
dGFibGVzIGFuZCByZXBsYWNlIHJlZnMuCisgICAgTGlmdEludGVybmFsQ2FsbHMsICAgICAvLy88
IEJ1aWxkIGFuIGludGVybmFsIGNhbGwgdGFibGUgYW5kIHJlcGxhY2UgcmVmcy4gCiAgICAgTWlu
U2l6ZSwgICAgICAgICAgICAgICAvLy88IEZ1bmN0aW9uIG11c3QgYmUgb3B0aW1pemVkIGZvciBz
aXplIGZpcnN0CiAgICAgTmFrZWQsICAgICAgICAgICAgICAgICAvLy88IE5ha2VkIGZ1bmN0aW9u
CiAgICAgTmVzdCwgICAgICAgICAgICAgICAgICAvLy88IE5lc3RlZCBmdW5jdGlvbiBzdGF0aWMg
Y2hhaW4KSW5kZXg6IGluY2x1ZGUvbGx2bS9Jbml0aWFsaXplUGFzc2VzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gaW5jbHVkZS9sbHZtL0luaXRpYWxpemVQYXNzZXMuaAkocmV2aXNpb24gMjE3NzIxKQorKysg
aW5jbHVkZS9sbHZtL0luaXRpYWxpemVQYXNzZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYg
KzE1NSw3IEBACiB2b2lkIGluaXRpYWxpemVMSUNNUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQg
aW5pdGlhbGl6ZUxhenlWYWx1ZUluZm9QYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFs
aXplTGliQ2FsbEFsaWFzQW5hbHlzaXNQYXNzKFBhc3NSZWdpc3RyeSYpOwordm9pZCBpbml0aWFs
aXplTGlmdEludGVybmFsQ2FsbHNQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXpl
TGludFBhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVMaXZlRGVidWdWYXJpYWJs
ZXNQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplTGl2ZUludGVydmFsc1Bhc3Mo
UGFzc1JlZ2lzdHJ5Jik7CkluZGV4OiBpbmNsdWRlL2xsdm0vTGlua0FsbFBhc3Nlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGluY2x1ZGUvbGx2bS9MaW5rQWxsUGFzc2VzLmgJKHJldmlzaW9uIDIxNzcyMSkK
KysrIGluY2x1ZGUvbGx2bS9MaW5rQWxsUGFzc2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAKICAgICAgIGlmIChzdGQ6OmdldGVudigiYmFyIikgIT0gKGNoYXIqKSAtMSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgICAodm9pZCkgbGx2bTo6Y3JlYXRlTGlmdEludGVybmFsQ2Fs
bHNQYXNzKCk7CiAgICAgICAodm9pZCkgbGx2bTo6Y3JlYXRlQUFFdmFsUGFzcygpOwogICAgICAg
KHZvaWQpIGxsdm06OmNyZWF0ZUFnZ3Jlc3NpdmVEQ0VQYXNzKCk7CiAgICAgICAodm9pZCkgbGx2
bTo6Y3JlYXRlQWxpYXNBbmFseXNpc0NvdW50ZXJQYXNzKCk7CkluZGV4OiBpbmNsdWRlL2xsdm0v
VHJhbnNmb3Jtcy9TY2FsYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRlL2xsdm0vVHJhbnNmb3Jt
cy9TY2FsYXIuaAkocmV2aXNpb24gMjE3NzIxKQorKysgaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMv
U2NhbGFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIAogY2xhc3MgQmFzaWNC
bG9ja1Bhc3M7CiBjbGFzcyBGdW5jdGlvblBhc3M7CitjbGFzcyBNb2R1bGVQYXNzOwogY2xhc3Mg
UGFzczsKIGNsYXNzIEdldEVsZW1lbnRQdHJJbnN0OwogY2xhc3MgUGFzc0luZm87CkBAIC0xMjUs
NiArMTI2LDEzIEBACiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLworLy8vIGNyZWF0ZUxv
b3BFeHRyYWN0b3JQYXNzIC0gVGhpcyBwYXNzIGV4dHJhY3RzIGFsbCBpbnRlcm5hbCBjYWxscyBp
biAKKy8vLyB3aXRoIHRoZSBMaWZ0SW50ZXJuYWxDYWxscyBhdHRyaWJ1dGUuCisvLy8KK01vZHVs
ZVBhc3MgKmNyZWF0ZUxpZnRJbnRlcm5hbENhbGxzUGFzcygpOworCisvLz09PS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS09PT0vLworLy8KIC8vIExvb3BTdHJlbmd0aFJlZHVjZSAtIFRoaXMgcGFzcyBpcyBzdHJlbmd0
aCByZWR1Y2VzIEdFUCBpbnN0cnVjdGlvbnMgdGhhdCB1c2UKIC8vIGEgbG9vcCdzIGNhbm9uaWNh
bCBpbmR1Y3Rpb24gdmFyaWFibGUgYXMgb25lIG9mIHRoZWlyIGluZGljZXMuCiAvLwpJbmRleDog
bGliL0JpdGNvZGUvUmVhZGVyL0JpdGNvZGVSZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9C
aXRjb2RlL1JlYWRlci9CaXRjb2RlUmVhZGVyLmNwcAkocmV2aXNpb24gMjE3NzIxKQorKysgbGli
L0JpdGNvZGUvUmVhZGVyL0JpdGNvZGVSZWFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTMs
NiArNTkzLDggQEAKICAgICByZXR1cm4gQXR0cmlidXRlOjpJblJlZzsKICAgY2FzZSBiaXRjOjpB
VFRSX0tJTkRfSlVNUF9UQUJMRToKICAgICByZXR1cm4gQXR0cmlidXRlOjpKdW1wVGFibGU7Cisg
IGNhc2UgYml0Yzo6QVRUUl9LSU5EX0xJRlRfSU5URVJOQUxfQ0FMTFM6CisgICAgcmV0dXJuIEF0
dHJpYnV0ZTo6TGlmdEludGVybmFsQ2FsbHM7CiAgIGNhc2UgYml0Yzo6QVRUUl9LSU5EX01JTl9T
SVpFOgogICAgIHJldHVybiBBdHRyaWJ1dGU6Ok1pblNpemU7CiAgIGNhc2UgYml0Yzo6QVRUUl9L
SU5EX05BS0VEOgpJbmRleDogbGliL0JpdGNvZGUvV3JpdGVyL0JpdGNvZGVXcml0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGxpYi9CaXRjb2RlL1dyaXRlci9CaXRjb2RlV3JpdGVyLmNwcAkocmV2aXNp
b24gMjE3NzIxKQorKysgbGliL0JpdGNvZGUvV3JpdGVyL0JpdGNvZGVXcml0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDggQEAKICAgICByZXR1cm4gYml0Yzo6QVRUUl9LSU5E
X0lOX1JFRzsKICAgY2FzZSBBdHRyaWJ1dGU6Okp1bXBUYWJsZToKICAgICByZXR1cm4gYml0Yzo6
QVRUUl9LSU5EX0pVTVBfVEFCTEU7CisgIGNhc2UgQXR0cmlidXRlOjpMaWZ0SW50ZXJuYWxDYWxs
czoKKyAgICByZXR1cm4gYml0Yzo6QVRUUl9LSU5EX0xJRlRfSU5URVJOQUxfQ0FMTFM7CiAgIGNh
c2UgQXR0cmlidXRlOjpNaW5TaXplOgogICAgIHJldHVybiBiaXRjOjpBVFRSX0tJTkRfTUlOX1NJ
WkU7CiAgIGNhc2UgQXR0cmlidXRlOjpOYWtlZDoKSW5kZXg6IGxpYi9JUi9BdHRyaWJ1dGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBsaWIvSVIvQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDIxNzcyMSkK
KysrIGxpYi9JUi9BdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4Nyw4
IEBACiAgICAgcmV0dXJuICJpbmxpbmVoaW50IjsKICAgaWYgKGhhc0F0dHJpYnV0ZShBdHRyaWJ1
dGU6OkluUmVnKSkKICAgICByZXR1cm4gImlucmVnIjsKKyAgaWYgKGhhc0F0dHJpYnV0ZShBdHRy
aWJ1dGU6OkxpZnRJbnRlcm5hbENhbGxzKSkKKyAgICByZXR1cm4gImxpZnRfaW50ZXJuYWxfY2Fs
bHMiOwogICBpZiAoaGFzQXR0cmlidXRlKEF0dHJpYnV0ZTo6SnVtcFRhYmxlKSkKICAgICByZXR1
cm4gImp1bXB0YWJsZSI7CiAgIGlmIChoYXNBdHRyaWJ1dGUoQXR0cmlidXRlOjpNaW5TaXplKSkK
QEAgLTQyNiw2ICs0MjgsNyBAQAogICBjYXNlIEF0dHJpYnV0ZTo6SW5BbGxvY2E6ICAgICAgICBy
ZXR1cm4gMVVMTCA8PCA0MzsKICAgY2FzZSBBdHRyaWJ1dGU6Ok5vbk51bGw6ICAgICAgICAgcmV0
dXJuIDFVTEwgPDwgNDQ7CiAgIGNhc2UgQXR0cmlidXRlOjpKdW1wVGFibGU6ICAgICAgIHJldHVy
biAxVUxMIDw8IDQ1OworICBjYXNlIEF0dHJpYnV0ZTo6TGlmdEludGVybmFsQ2FsbHM6IHJldHVy
biAxVUxMIDw8IDQ2OwogICBjYXNlIEF0dHJpYnV0ZTo6RGVyZWZlcmVuY2VhYmxlOgogICAgIGxs
dm1fdW5yZWFjaGFibGUoImRlcmVmZXJlbmNlYWJsZSBhdHRyaWJ1dGUgbm90IHN1cHBvcnRlZCBp
biByYXcgZm9ybWF0Iik7CiAgIH0KSW5kZXg6IGxpYi9JUi9WZXJpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gbGliL0lSL1ZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjE3NzIxKQorKysgbGliL0lSL1Zl
cmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc0LDYgKzc3NCw3IEBACiAgICAgICAgIEkt
PmdldEtpbmRBc0VudW0oKSA9PSBBdHRyaWJ1dGU6Ok5vQnVpbHRpbiB8fAogICAgICAgICBJLT5n
ZXRLaW5kQXNFbnVtKCkgPT0gQXR0cmlidXRlOjpDb2xkIHx8CiAgICAgICAgIEktPmdldEtpbmRB
c0VudW0oKSA9PSBBdHRyaWJ1dGU6Ok9wdGltaXplTm9uZSB8fAorICAgICAgICBJLT5nZXRLaW5k
QXNFbnVtKCkgPT0gQXR0cmlidXRlOjpMaWZ0SW50ZXJuYWxDYWxscyB8fAogICAgICAgICBJLT5n
ZXRLaW5kQXNFbnVtKCkgPT0gQXR0cmlidXRlOjpKdW1wVGFibGUpIHsKICAgICAgIGlmICghaXNG
dW5jdGlvbikgewogICAgICAgICBDaGVja0ZhaWxlZCgiQXR0cmlidXRlICciICsgSS0+Z2V0QXNT
dHJpbmcoKSArCkluZGV4OiBsaWIvVHJhbnNmb3Jtcy9TY2FsYXIvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gbGliL1RyYW5zZm9ybXMvU2NhbGFyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyMTc3MjEpCisrKyBsaWIvVHJhbnNmb3Jtcy9TY2FsYXIvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAKICAgSW5kVmFyU2ltcGxpZnkuY3BwCiAgIEp1bXBU
aHJlYWRpbmcuY3BwCiAgIExJQ00uY3BwCisgIExpZnRJbnRlcm5hbENhbGxzLmNwcAogICBMb2Fk
Q29tYmluZS5jcHAKICAgTG9vcERlbGV0aW9uLmNwcAogICBMb29wSWRpb21SZWNvZ25pemUuY3Bw
CkluZGV4OiBsaWIvVHJhbnNmb3Jtcy9TY2FsYXIvU2NhbGFyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs
aWIvVHJhbnNmb3Jtcy9TY2FsYXIvU2NhbGFyLmNwcAkocmV2aXNpb24gMjE3NzIxKQorKysgbGli
L1RyYW5zZm9ybXMvU2NhbGFyL1NjYWxhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAKICAgaW5pdGlhbGl6ZUluZFZhclNpbXBsaWZ5UGFzcyhSZWdpc3RyeSk7CiAgIGluaXRp
YWxpemVKdW1wVGhyZWFkaW5nUGFzcyhSZWdpc3RyeSk7CiAgIGluaXRpYWxpemVMSUNNUGFzcyhS
ZWdpc3RyeSk7CisgIGluaXRpYWxpemVMaWZ0SW50ZXJuYWxDYWxsc1Bhc3MoUmVnaXN0cnkpOwog
ICBpbml0aWFsaXplTG9vcERlbGV0aW9uUGFzcyhSZWdpc3RyeSk7CiAgIGluaXRpYWxpemVMb29w
SW5zdFNpbXBsaWZ5UGFzcyhSZWdpc3RyeSk7CiAgIGluaXRpYWxpemVMb29wUm90YXRlUGFzcyhS
ZWdpc3RyeSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238730</attachid>
            <date>2014-09-26 13:23:29 -0700</date>
            <delta_ts>2014-10-13 16:21:20 -0700</delta_ts>
            <desc>The patch for Clang to add the attribute</desc>
            <filename>clang_lift_internal_calls_pass.patch</filename>
            <type>text/plain</type>
            <size>3458</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">SW5kZXg6IGluY2x1ZGUvY2xhbmcvQmFzaWMvQXR0ci50ZAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRl
L2NsYW5nL0Jhc2ljL0F0dHIudGQJKHJldmlzaW9uIDIxNzcxMCkKKysrIGluY2x1ZGUvY2xhbmcv
QmFzaWMvQXR0ci50ZAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDYgKzM2MSwxMyBAQAogICBsZXQg
RG9jdW1lbnRhdGlvbiA9IFtVbmRvY3VtZW50ZWRdOwogfQogCitkZWYgTGlmdEludGVybmFsQ2Fs
bHMgOiBJbmhlcml0YWJsZUF0dHIgeworICBsZXQgU3BlbGxpbmdzID0gW0dDQzwibGlmdF9pbnRl
cm5hbF9jYWxscyI+XTsKKyAgbGV0IEFyZ3MgPSBbU3RyaW5nQXJndW1lbnQ8IkludGVybmFsQ2Fs
bFRhYmxlTmFtZSI+XTsKKyAgbGV0IFN1YmplY3RzID0gU3ViamVjdExpc3Q8W0Z1bmN0aW9uXT47
CisgIGxldCBEb2N1bWVudGF0aW9uID0gW1VuZG9jdW1lbnRlZF07Cit9CisKIGRlZiBBbHdheXNJ
bmxpbmUgOiBJbmhlcml0YWJsZUF0dHIgewogICBsZXQgU3BlbGxpbmdzID0gW0dDQzwiYWx3YXlz
X2lubGluZSI+LCBLZXl3b3JkPCJfX2ZvcmNlaW5saW5lIj5dOwogICBsZXQgU3ViamVjdHMgPSBT
dWJqZWN0TGlzdDxbRnVuY3Rpb25dPjsKSW5kZXg6IGxpYi9Db2RlR2VuL0JhY2tlbmRVdGlsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBsaWIvQ29kZUdlbi9CYWNrZW5kVXRpbC5jcHAJKHJldmlzaW9uIDIx
NzcxMCkKKysrIGxpYi9Db2RlR2VuL0JhY2tlbmRVdGlsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc0LDYgKzE3NCwxMiBAQAogICBQTS5hZGQoY3JlYXRlQWRkRGlzY3JpbWluYXRvcnNQYXNzKCkp
OwogfQogCisKK3N0YXRpYyB2b2lkIGFkZExpZnRJbnRlcm5hbENhbGxzUGFzcyhjb25zdCBQYXNz
TWFuYWdlckJ1aWxkZXIgJkJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFzc01hbmFnZXJCYXNlICZQTSkgeworICAgIFBNLmFkZChjcmVhdGVMaWZ0SW50ZXJu
YWxDYWxsc1Bhc3MoKSk7Cit9CisKIHN0YXRpYyB2b2lkIGFkZEJvdW5kc0NoZWNraW5nUGFzcyhj
b25zdCBQYXNzTWFuYWdlckJ1aWxkZXIgJkJ1aWxkZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQYXNzTWFuYWdlckJhc2UgJlBNKSB7CiAgIFBNLmFkZChjcmVhdGVCb3Vu
ZHNDaGVja2luZ1Bhc3MoKSk7CkBAIC0yNTIsNiArMjU4LDkgQEAKICAgUE1CdWlsZGVyLmFkZEV4
dGVuc2lvbihQYXNzTWFuYWdlckJ1aWxkZXI6OkVQX0Vhcmx5QXNQb3NzaWJsZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBhZGRBZGREaXNjcmltaW5hdG9yc1Bhc3MpOwogCisgIFBNQnVpbGRl
ci5hZGRFeHRlbnNpb24oUGFzc01hbmFnZXJCdWlsZGVyOjpFUF9FbmFibGVkT25PcHRMZXZlbDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGlmdEludGVybmFsQ2FsbHNQYXNzKTsKKwog
ICBpZiAoIUNvZGVHZW5PcHRzLlNhbXBsZVByb2ZpbGVGaWxlLmVtcHR5KCkpCiAgICAgUE1CdWls
ZGVyLmFkZEV4dGVuc2lvbihQYXNzTWFuYWdlckJ1aWxkZXI6OkVQX0Vhcmx5QXNQb3NzaWJsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFNhbXBsZVByb2ZpbGVMb2FkZXJQYXNzKTsK
SW5kZXg6IGxpYi9Db2RlR2VuL0NvZGVHZW5Nb2R1bGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9D
b2RlR2VuL0NvZGVHZW5Nb2R1bGUuY3BwCShyZXZpc2lvbiAyMTc3MTApCisrKyBsaWIvQ29kZUdl
bi9Db2RlR2VuTW9kdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE3LDYgKzcxNywxMCBAQAog
ICAgIEIuYWRkQXR0cmlidXRlKGxsdm06OkF0dHJpYnV0ZTo6QWx3YXlzSW5saW5lKTsKICAgfQog
CisgIGlmIChELT5oYXNBdHRyPExpZnRJbnRlcm5hbENhbGxzQXR0cj4oKSkgeworICAgIEIuYWRk
QXR0cmlidXRlKGxsdm06OkF0dHJpYnV0ZTo6TGlmdEludGVybmFsQ2FsbHMpOworICB9CisKICAg
aWYgKEQtPmhhc0F0dHI8Q29sZEF0dHI+KCkpIHsKICAgICBCLmFkZEF0dHJpYnV0ZShsbHZtOjpB
dHRyaWJ1dGU6Ok9wdGltaXplRm9yU2l6ZSk7CiAgICAgQi5hZGRBdHRyaWJ1dGUobGx2bTo6QXR0
cmlidXRlOjpDb2xkKTsKSW5kZXg6IGxpYi9TZW1hL1NlbWFEZWNsQXR0ci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gbGliL1NlbWEvU2VtYURlY2xBdHRyLmNwcAkocmV2aXNpb24gMjE3NzEwKQorKysgbGli
L1NlbWEvU2VtYURlY2xBdHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxOSw2ICszMDE5LDE3
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0ci5nZXRBdHRyaWJ1dGVTcGVsbGluZ0xp
c3RJbmRleCgpKSk7CiB9CiAKK3N0YXRpYyB2b2lkIGhhbmRsZUxpZnRJbnRlcm5hbENhbGxzQXR0
cihTZW1hICZTLCBEZWNsICpELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBBdHRyaWJ1dGVMaXN0ICZBdHRyKSB7CisgIFN0cmluZ1JlZiBUYWJsZU5hbWU7CisgIGlm
ICghUy5jaGVja1N0cmluZ0xpdGVyYWxBcmd1bWVudEF0dHIoQXR0ciwgMCwgVGFibGVOYW1lKSkK
KyAgICByZXR1cm47CisgIEQtPmFkZEF0dHIoOjpuZXcgKFMuQ29udGV4dCkKKyAgICAgICAgICAg
ICBMaWZ0SW50ZXJuYWxDYWxsc0F0dHIoQXR0ci5nZXRSYW5nZSgpLCBTLkNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlTmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQXR0ci5nZXRBdHRyaWJ1dGVTcGVsbGluZ0xpc3RJbmRleCgp
KSk7Cit9CisKIHN0YXRpYyB2b2lkIGhhbmRsZUFsd2F5c0lubGluZUF0dHIoU2VtYSAmUywgRGVj
bCAqRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRl
TGlzdCAmQXR0cikgewogICBpZiAoY2hlY2tBdHRyTXV0dWFsRXhjbHVzaW9uPE9wdGltaXplTm9u
ZUF0dHI+KFMsIEQsIEF0dHIpKQpAQCAtNDExNiw2ICs0MTI3LDkgQEAKICAgY2FzZSBBdHRyaWJ1
dGVMaXN0OjpBVF9BbGlnbmVkOgogICAgIGhhbmRsZUFsaWduZWRBdHRyKFMsIEQsIEF0dHIpOwog
ICAgIGJyZWFrOworICBjYXNlIEF0dHJpYnV0ZUxpc3Q6OkFUX0xpZnRJbnRlcm5hbENhbGxzOgor
ICAgICAgaGFuZGxlTGlmdEludGVybmFsQ2FsbHNBdHRyKFMsIEQsIEF0dHIpOworICAgIGJyZWFr
OwogICBjYXNlIEF0dHJpYnV0ZUxpc3Q6OkFUX0Fsd2F5c0lubGluZToKICAgICBoYW5kbGVBbHdh
eXNJbmxpbmVBdHRyKFMsIEQsIEF0dHIpOwogICAgIGJyZWFrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238732</attachid>
            <date>2014-09-26 13:39:14 -0700</date>
            <delta_ts>2014-10-13 16:19:33 -0700</delta_ts>
            <desc>The patch for LLVM for adding the pass</desc>
            <filename>llvm_lift_internal_calls_pass.patch</filename>
            <type>text/plain</type>
            <size>10668</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">SW5kZXg6IGluY2x1ZGUvbGx2bS9CaXRjb2RlL0xMVk1CaXRDb2Rlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGluY2x1ZGUvbGx2bS9CaXRjb2RlL0xMVk1CaXRDb2Rlcy5oCShyZXZpc2lvbiAyMTc3MjEpCisr
KyBpbmNsdWRlL2xsdm0vQml0Y29kZS9MTFZNQml0Q29kZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
Mzc2LDcgKzM3Niw4IEBACiAgICAgQVRUUl9LSU5EX0lOX0FMTE9DQSA9IDM4LAogICAgIEFUVFJf
S0lORF9OT05fTlVMTCA9IDM5LAogICAgIEFUVFJfS0lORF9KVU1QX1RBQkxFID0gNDAsCi0gICAg
QVRUUl9LSU5EX0RFUkVGRVJFTkNFQUJMRSA9IDQxCisgICAgQVRUUl9LSU5EX0RFUkVGRVJFTkNF
QUJMRSA9IDQxLAorICAgIEFUVFJfS0lORF9MSUZUX0lOVEVSTkFMX0NBTExTID0gNDIsCiAgIH07
CiAKICAgZW51bSBDb21kYXRTZWxlY3Rpb25LaW5kQ29kZXMgewpJbmRleDogaW5jbHVkZS9sbHZt
L0lSL0F0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRlL2xsdm0vSVIvQXR0cmlidXRl
cy5oCShyZXZpc2lvbiAyMTc3MjEpCisrKyBpbmNsdWRlL2xsdm0vSVIvQXR0cmlidXRlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBACiAgICAgSW5saW5lSGludCwgICAgICAgICAg
ICAvLy88IFNvdXJjZSBzYWlkIGlubGluaW5nIHdhcyBkZXNpcmFibGUKICAgICBJblJlZywgICAg
ICAgICAgICAgICAgIC8vLzwgRm9yY2UgYXJndW1lbnQgdG8gYmUgcGFzc2VkIGluIHJlZ2lzdGVy
CiAgICAgSnVtcFRhYmxlLCAgICAgICAgICAgICAvLy88IEJ1aWxkIGp1bXAtaW5zdHJ1Y3Rpb24g
dGFibGVzIGFuZCByZXBsYWNlIHJlZnMuCisgICAgTGlmdEludGVybmFsQ2FsbHMsICAgICAvLy88
IEJ1aWxkIGFuIGludGVybmFsIGNhbGwgdGFibGUgYW5kIHJlcGxhY2UgcmVmcy4gCiAgICAgTWlu
U2l6ZSwgICAgICAgICAgICAgICAvLy88IEZ1bmN0aW9uIG11c3QgYmUgb3B0aW1pemVkIGZvciBz
aXplIGZpcnN0CiAgICAgTmFrZWQsICAgICAgICAgICAgICAgICAvLy88IE5ha2VkIGZ1bmN0aW9u
CiAgICAgTmVzdCwgICAgICAgICAgICAgICAgICAvLy88IE5lc3RlZCBmdW5jdGlvbiBzdGF0aWMg
Y2hhaW4KSW5kZXg6IGluY2x1ZGUvbGx2bS9Jbml0aWFsaXplUGFzc2VzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gaW5jbHVkZS9sbHZtL0luaXRpYWxpemVQYXNzZXMuaAkocmV2aXNpb24gMjE3NzIxKQorKysg
aW5jbHVkZS9sbHZtL0luaXRpYWxpemVQYXNzZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYg
KzE1NSw3IEBACiB2b2lkIGluaXRpYWxpemVMSUNNUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQg
aW5pdGlhbGl6ZUxhenlWYWx1ZUluZm9QYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFs
aXplTGliQ2FsbEFsaWFzQW5hbHlzaXNQYXNzKFBhc3NSZWdpc3RyeSYpOwordm9pZCBpbml0aWFs
aXplTGlmdEludGVybmFsQ2FsbHNQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXpl
TGludFBhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVMaXZlRGVidWdWYXJpYWJs
ZXNQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplTGl2ZUludGVydmFsc1Bhc3Mo
UGFzc1JlZ2lzdHJ5Jik7CkluZGV4OiBpbmNsdWRlL2xsdm0vTGlua0FsbFBhc3Nlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGluY2x1ZGUvbGx2bS9MaW5rQWxsUGFzc2VzLmgJKHJldmlzaW9uIDIxNzcyMSkK
KysrIGluY2x1ZGUvbGx2bS9MaW5rQWxsUGFzc2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAKICAgICAgIGlmIChzdGQ6OmdldGVudigiYmFyIikgIT0gKGNoYXIqKSAtMSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgICAodm9pZCkgbGx2bTo6Y3JlYXRlTGlmdEludGVybmFsQ2Fs
bHNQYXNzKCk7CiAgICAgICAodm9pZCkgbGx2bTo6Y3JlYXRlQUFFdmFsUGFzcygpOwogICAgICAg
KHZvaWQpIGxsdm06OmNyZWF0ZUFnZ3Jlc3NpdmVEQ0VQYXNzKCk7CiAgICAgICAodm9pZCkgbGx2
bTo6Y3JlYXRlQWxpYXNBbmFseXNpc0NvdW50ZXJQYXNzKCk7CkluZGV4OiBpbmNsdWRlL2xsdm0v
VHJhbnNmb3Jtcy9TY2FsYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRlL2xsdm0vVHJhbnNmb3Jt
cy9TY2FsYXIuaAkocmV2aXNpb24gMjE3NzIxKQorKysgaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMv
U2NhbGFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIAogY2xhc3MgQmFzaWNC
bG9ja1Bhc3M7CiBjbGFzcyBGdW5jdGlvblBhc3M7CitjbGFzcyBNb2R1bGVQYXNzOwogY2xhc3Mg
UGFzczsKIGNsYXNzIEdldEVsZW1lbnRQdHJJbnN0OwogY2xhc3MgUGFzc0luZm87CkBAIC0xMjUs
NiArMTI2LDEzIEBACiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLworLy8vIGNyZWF0ZUxv
b3BFeHRyYWN0b3JQYXNzIC0gVGhpcyBwYXNzIGV4dHJhY3RzIGFsbCBpbnRlcm5hbCBjYWxscyBp
biAKKy8vLyB3aXRoIHRoZSBMaWZ0SW50ZXJuYWxDYWxscyBhdHRyaWJ1dGUuCisvLy8KK01vZHVs
ZVBhc3MgKmNyZWF0ZUxpZnRJbnRlcm5hbENhbGxzUGFzcygpOworCisvLz09PS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS09PT0vLworLy8KIC8vIExvb3BTdHJlbmd0aFJlZHVjZSAtIFRoaXMgcGFzcyBpcyBzdHJlbmd0
aCByZWR1Y2VzIEdFUCBpbnN0cnVjdGlvbnMgdGhhdCB1c2UKIC8vIGEgbG9vcCdzIGNhbm9uaWNh
bCBpbmR1Y3Rpb24gdmFyaWFibGUgYXMgb25lIG9mIHRoZWlyIGluZGljZXMuCiAvLwpJbmRleDog
bGliL0JpdGNvZGUvUmVhZGVyL0JpdGNvZGVSZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpYi9C
aXRjb2RlL1JlYWRlci9CaXRjb2RlUmVhZGVyLmNwcAkocmV2aXNpb24gMjE3NzIxKQorKysgbGli
L0JpdGNvZGUvUmVhZGVyL0JpdGNvZGVSZWFkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTMs
NiArNTkzLDggQEAKICAgICByZXR1cm4gQXR0cmlidXRlOjpJblJlZzsKICAgY2FzZSBiaXRjOjpB
VFRSX0tJTkRfSlVNUF9UQUJMRToKICAgICByZXR1cm4gQXR0cmlidXRlOjpKdW1wVGFibGU7Cisg
IGNhc2UgYml0Yzo6QVRUUl9LSU5EX0xJRlRfSU5URVJOQUxfQ0FMTFM6CisgICAgcmV0dXJuIEF0
dHJpYnV0ZTo6TGlmdEludGVybmFsQ2FsbHM7CiAgIGNhc2UgYml0Yzo6QVRUUl9LSU5EX01JTl9T
SVpFOgogICAgIHJldHVybiBBdHRyaWJ1dGU6Ok1pblNpemU7CiAgIGNhc2UgYml0Yzo6QVRUUl9L
SU5EX05BS0VEOgpJbmRleDogbGliL0JpdGNvZGUvV3JpdGVyL0JpdGNvZGVXcml0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGxpYi9CaXRjb2RlL1dyaXRlci9CaXRjb2RlV3JpdGVyLmNwcAkocmV2aXNp
b24gMjE3NzIxKQorKysgbGliL0JpdGNvZGUvV3JpdGVyL0JpdGNvZGVXcml0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDggQEAKICAgICByZXR1cm4gYml0Yzo6QVRUUl9LSU5E
X0lOX1JFRzsKICAgY2FzZSBBdHRyaWJ1dGU6Okp1bXBUYWJsZToKICAgICByZXR1cm4gYml0Yzo6
QVRUUl9LSU5EX0pVTVBfVEFCTEU7CisgIGNhc2UgQXR0cmlidXRlOjpMaWZ0SW50ZXJuYWxDYWxs
czoKKyAgICByZXR1cm4gYml0Yzo6QVRUUl9LSU5EX0xJRlRfSU5URVJOQUxfQ0FMTFM7CiAgIGNh
c2UgQXR0cmlidXRlOjpNaW5TaXplOgogICAgIHJldHVybiBiaXRjOjpBVFRSX0tJTkRfTUlOX1NJ
WkU7CiAgIGNhc2UgQXR0cmlidXRlOjpOYWtlZDoKSW5kZXg6IGxpYi9JUi9BdHRyaWJ1dGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBsaWIvSVIvQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDIxNzcyMSkK
KysrIGxpYi9JUi9BdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4Nyw4
IEBACiAgICAgcmV0dXJuICJpbmxpbmVoaW50IjsKICAgaWYgKGhhc0F0dHJpYnV0ZShBdHRyaWJ1
dGU6OkluUmVnKSkKICAgICByZXR1cm4gImlucmVnIjsKKyAgaWYgKGhhc0F0dHJpYnV0ZShBdHRy
aWJ1dGU6OkxpZnRJbnRlcm5hbENhbGxzKSkKKyAgICByZXR1cm4gImxpZnRfaW50ZXJuYWxfY2Fs
bHMiOwogICBpZiAoaGFzQXR0cmlidXRlKEF0dHJpYnV0ZTo6SnVtcFRhYmxlKSkKICAgICByZXR1
cm4gImp1bXB0YWJsZSI7CiAgIGlmIChoYXNBdHRyaWJ1dGUoQXR0cmlidXRlOjpNaW5TaXplKSkK
QEAgLTQyNiw2ICs0MjgsNyBAQAogICBjYXNlIEF0dHJpYnV0ZTo6SW5BbGxvY2E6ICAgICAgICBy
ZXR1cm4gMVVMTCA8PCA0MzsKICAgY2FzZSBBdHRyaWJ1dGU6Ok5vbk51bGw6ICAgICAgICAgcmV0
dXJuIDFVTEwgPDwgNDQ7CiAgIGNhc2UgQXR0cmlidXRlOjpKdW1wVGFibGU6ICAgICAgIHJldHVy
biAxVUxMIDw8IDQ1OworICBjYXNlIEF0dHJpYnV0ZTo6TGlmdEludGVybmFsQ2FsbHM6IHJldHVy
biAxVUxMIDw8IDQ2OwogICBjYXNlIEF0dHJpYnV0ZTo6RGVyZWZlcmVuY2VhYmxlOgogICAgIGxs
dm1fdW5yZWFjaGFibGUoImRlcmVmZXJlbmNlYWJsZSBhdHRyaWJ1dGUgbm90IHN1cHBvcnRlZCBp
biByYXcgZm9ybWF0Iik7CiAgIH0KSW5kZXg6IGxpYi9JUi9WZXJpZmllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gbGliL0lSL1ZlcmlmaWVyLmNwcAkocmV2aXNpb24gMjE3NzIxKQorKysgbGliL0lSL1Zl
cmlmaWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc0LDYgKzc3NCw3IEBACiAgICAgICAgIEkt
PmdldEtpbmRBc0VudW0oKSA9PSBBdHRyaWJ1dGU6Ok5vQnVpbHRpbiB8fAogICAgICAgICBJLT5n
ZXRLaW5kQXNFbnVtKCkgPT0gQXR0cmlidXRlOjpDb2xkIHx8CiAgICAgICAgIEktPmdldEtpbmRB
c0VudW0oKSA9PSBBdHRyaWJ1dGU6Ok9wdGltaXplTm9uZSB8fAorICAgICAgICBJLT5nZXRLaW5k
QXNFbnVtKCkgPT0gQXR0cmlidXRlOjpMaWZ0SW50ZXJuYWxDYWxscyB8fAogICAgICAgICBJLT5n
ZXRLaW5kQXNFbnVtKCkgPT0gQXR0cmlidXRlOjpKdW1wVGFibGUpIHsKICAgICAgIGlmICghaXNG
dW5jdGlvbikgewogICAgICAgICBDaGVja0ZhaWxlZCgiQXR0cmlidXRlICciICsgSS0+Z2V0QXNT
dHJpbmcoKSArCkluZGV4OiBsaWIvVHJhbnNmb3Jtcy9TY2FsYXIvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gbGliL1RyYW5zZm9ybXMvU2NhbGFyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyMTc3MjEpCisrKyBsaWIvVHJhbnNmb3Jtcy9TY2FsYXIvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAKICAgSW5kVmFyU2ltcGxpZnkuY3BwCiAgIEp1bXBU
aHJlYWRpbmcuY3BwCiAgIExJQ00uY3BwCisgIExpZnRJbnRlcm5hbENhbGxzLmNwcAogICBMb2Fk
Q29tYmluZS5jcHAKICAgTG9vcERlbGV0aW9uLmNwcAogICBMb29wSWRpb21SZWNvZ25pemUuY3Bw
CkluZGV4OiBsaWIvVHJhbnNmb3Jtcy9TY2FsYXIvTGlmdEludGVybmFsQ2FsbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGxpYi9UcmFuc2Zvcm1zL1NjYWxhci9MaWZ0SW50ZXJuYWxDYWxscy5jcHAJKHJl
dmlzaW9uIDApCisrKyBsaWIvVHJhbnNmb3Jtcy9TY2FsYXIvTGlmdEludGVybmFsQ2FsbHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACisvLz09PS0gTGlmdEludGVybmFsQ2Fs
bHMuY3BwIC0gUGFzcyB0byBjcmVhdGUgbGlmdCBjYWxscyB0byBpbnRlcm5hbHMgLS0tLS09PT0v
LworLy8KKy8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1
Y3R1cmUKKy8vCisvLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNp
dHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKKy8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBm
b3IgZGV0YWlscy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFRoaXMgZmls
ZSBpbXBsZW1lbnRzIGEgcGFzcyB3aGljaCBmb3IgZnVuY3Rpb25zIHdpdGggdGhlIAorLy8gbGlm
dF9pbnRlcm5hbF9jYWxscyBhc3NlcnRpb24sIHRha2VzIGFsbCBjYWxscyBhbmQgcmVmZXJlbmNl
cyAKKy8vIHRvIGludGVybmFscyBhbmQgdHVybnMgdGhlbSBpbnRvIGNhbGxzIGFuZCByZWZlcmVu
Y2VzIHRvIGFuIGV4dGVybmFsaXplZCAKKy8vIHRhYmxlLgorLy8KKy8vPT09LS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LT09PS8vCisKKyNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdTZXQuaCIKKyNpbmNsdWRlICJsbHZt
L0FEVC9TdHJpbmdNYXAuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9BcnJheVJlZi5oIgorI2luY2x1
ZGUgImxsdm0vUGFzcy5oIgorI2luY2x1ZGUgImxsdm0vSVIvSW5zdHJ1Y3Rpb25zLmgiCisjaW5j
bHVkZSAibGx2bS9JUi9GdW5jdGlvbi5oIgorI2luY2x1ZGUgImxsdm0vSVIvTW9kdWxlLmgiCisj
aW5jbHVkZSAibGx2bS9JUi9EZXJpdmVkVHlwZXMuaCIKKyNpbmNsdWRlICJsbHZtL0lSL0NvbnN0
YW50cy5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9yYXdfb3N0cmVhbS5oIgorI2luY2x1ZGUg
Imxsdm0vU3VwcG9ydC9DYXN0aW5nLmgiCisjaW5jbHVkZSAibGx2bS9UcmFuc2Zvcm1zL1NjYWxh
ci5oIgordXNpbmcgbmFtZXNwYWNlIGxsdm07CisKK25hbWVzcGFjZSB7CisgIHN0cnVjdCBMaWZ0
SW50ZXJuYWxDYWxscyA6IHB1YmxpYyBNb2R1bGVQYXNzIHsKKyAgICBzdGF0aWMgY2hhciBJRDsg
Ly8gUGFzcyBpZGVudGlmaWNhdGlvbiwgcmVwbGFjZW1lbnQgZm9yIHR5cGVpZAorCisgICAgZXhw
bGljaXQgTGlmdEludGVybmFsQ2FsbHMoKSAKKyAgICAgIDogTW9kdWxlUGFzcyhJRCkgeworICAg
ICAgICBpbml0aWFsaXplTGlmdEludGVybmFsQ2FsbHNQYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBh
c3NSZWdpc3RyeSgpKTsgICAgICAKKyAgICAgIH0KKworICAgIGJvb2wgcnVuT25Nb2R1bGUoTW9k
dWxlICZNKSBvdmVycmlkZTsKKyAgfTsKK30KKworY2hhciBMaWZ0SW50ZXJuYWxDYWxsczo6SUQg
PSAwOworSU5JVElBTElaRV9QQVNTKExpZnRJbnRlcm5hbENhbGxzLCAibGlmdC1pbnRlcm5hbC1j
YWxscyIsCisgICAgICAgICAgICAgICAgIkxpZnQgSW50ZXJuYWwgQ2FsbHMgUGFzcyIsIGZhbHNl
LCBmYWxzZSkKKworTW9kdWxlUGFzcyAqbGx2bTo6Y3JlYXRlTGlmdEludGVybmFsQ2FsbHNQYXNz
KCkgeyAKKyAgcmV0dXJuIG5ldyBMaWZ0SW50ZXJuYWxDYWxscygpOyAKK30KKworLy8gVGhpcyBw
YXNzIHNob3VsZCBvbmx5IGV2ZXIgYmUgcnVuIG9uY2UhCitib29sIExpZnRJbnRlcm5hbENhbGxz
OjpydW5Pbk1vZHVsZShNb2R1bGUgJk0pIHsKKworICBTdHJpbmdTZXQ8PiBSZWZzOworICBmb3Ig
KEZ1bmN0aW9uICZGIDogTSkgCisgICAgaWYgKEYuaGFzRm5BdHRyaWJ1dGUoQXR0cmlidXRlOjpM
aWZ0SW50ZXJuYWxDYWxscykpIHsKKyAgICAgIGZvciAoQmFzaWNCbG9jayAmQkIgOiBGKSAKKyAg
ICAgICAgZm9yIChJbnN0cnVjdGlvbiAmSW5zdCA6IEJCKQorICAgICAgICAgIGZvciAoY29uc3Qg
VmFsdWUgKk9wIDogSW5zdC5vcGVyYW5kcygpKSB7CisgICAgICAgICAgICBjb25zdCBHbG9iYWxW
YWx1ZSAqUHQgPSBkeW5fY2FzdDxHbG9iYWxWYWx1ZT4oT3ApOworICAgICAgICAgICAgaWYgKFB0
ICYmIEdsb2JhbFZhbHVlOjppc0xvY2FsTGlua2FnZShQdC0+Z2V0TGlua2FnZSgpKSkKKyAgICAg
ICAgICAgICAgUmVmcy5pbnNlcnQoUHQtPmdldE5hbWUoKSk7CisgICAgICAgICAgfQorICAgIH0K
KworICBpZiAoUmVmcy5lbXB0eSgpKQorICAgIHJldHVybiBmYWxzZTsKKworICBUeXBlICpJbnRU
eSA9IEludGVnZXJUeXBlOjpnZXQoTS5nZXRDb250ZXh0KCksIDY0KTsKKyAgVHlwZSAqUHRyVHkg
PSBQb2ludGVyVHlwZTo6Z2V0KEludFR5LCAwKTsKKyAgQXJyYXlUeXBlICpUYWJsZVR5ID0gQXJy
YXlUeXBlOjpnZXQoUHRyVHkgLCBSZWZzLnNpemUoKSk7CisKKyAgU3RyaW5nUmVmIE5ld0dsb2JT
dWZmaXggPSAiXyIgKyBNLmdldE1vZHVsZUlkZW50aWZpZXIoKTsKKworICBTdHJpbmdSZWYgVGFi
bGVOYW1lID0gIl9saWZ0SW50ZXJuYWxDYWxsc1RhYmxlIiArIE5ld0dsb2JTdWZmaXguc3RyKCk7
CisgIAorICBhc3NlcnQoIU0uZ2V0TmFtZWRHbG9iYWwoVGFibGVOYW1lKSk7CisgIE0uZ2V0T3JJ
bnNlcnRHbG9iYWwoVGFibGVOYW1lLCBUYWJsZVR5KTsKKyAgR2xvYmFsVmFyaWFibGUgKkdsb2Jh
bFRhYmxlVmFyID0gTS5nZXROYW1lZEdsb2JhbChUYWJsZU5hbWUpOworICBhc3NlcnQoR2xvYmFs
VGFibGVWYXIpOworCisgIENvbnN0YW50ICoqVGFibGVWYWxzID0gbmV3IENvbnN0YW50KltSZWZz
LnNpemUoKV07CisKKyAgdW5zaWduZWQgQ3VycmVudEluZGV4ID0gMDsKKyAgZm9yIChTdHJpbmdN
YXBFbnRyeTxjaGFyPiAmUmVmRW50cnkgOiBSZWZzKSB7CisgICAgU3RyaW5nUmVmIFJlZk5hbWUg
PSBSZWZFbnRyeS5nZXRLZXkoKTsKKyAgICAKKyAgICBDb25zdGFudCAqR2VuUmVmID0gTS5nZXRH
bG9iYWxWYXJpYWJsZShSZWZOYW1lLCB0cnVlKTsKKyAgICBpZiAoIUdlblJlZikgCisgICAgICBH
ZW5SZWYgPSBNLmdldEZ1bmN0aW9uKFJlZk5hbWUpOworICAgIGFzc2VydChHZW5SZWYpOworICAg
IFRhYmxlVmFsc1tDdXJyZW50SW5kZXhdID0gQ29uc3RhbnRFeHByOjpnZXRQb2ludGVyQ2FzdChH
ZW5SZWYsIFB0clR5KTsgCisKKyAgICAvLyBub3cgc2ltcGx5IGFkZCBhIG1ldGFkYXRhIGVudHJ5
IHdoaWNoIHBvaW50cyB0byB0aGlzIHZhbHVlISAKKyAgICAvLyBtZXRhZGF0YSB3aWxsIGJlIHJl
bW92ZWQgd2hlbiBsaW5raW5nIHNvIGl0IHdvbid0IHBvbHV0ZSB0aGUgbmFtZXNwYWNlLgorICAg
IAorICAgIFN0cmluZ1JlZiBNZXRhVGFibGVSZWZOYW1lID0gUmVmTmFtZS5zdHIoKSArIE5ld0ds
b2JTdWZmaXguc3RyKCk7CisgICAgTmFtZWRNRE5vZGUgKk1ldGFUYWJsZVJlZiA9IAorICAgICAg
TS5nZXRPckluc2VydE5hbWVkTWV0YWRhdGEoTWV0YVRhYmxlUmVmTmFtZSk7CisgICAgCisgICAg
Q29uc3RhbnQgKkNMb2MgPSBDb25zdGFudEludDo6Z2V0KEludFR5LCBDdXJyZW50SW5kZXgpOwor
ICAgIFZhbHVlICpMb2MgPSBkeW5fY2FzdDxWYWx1ZT4oQ0xvYyk7CisKKyAgICBNRE5vZGUgKk1l
dGFUYWJsZVJlZlZhbHVlID0gCisgICAgICBNRE5vZGU6OmdldChNLmdldENvbnRleHQoKSwgQXJy
YXlSZWY8VmFsdWUgKj4oTG9jKSk7CisKKyAgICBNZXRhVGFibGVSZWYtPmFkZE9wZXJhbmQoTWV0
YVRhYmxlUmVmVmFsdWUpOworICAgIEN1cnJlbnRJbmRleCsrOworICB9CisgIAorICBBcnJheVJl
ZjxDb25zdGFudCo+IFRhYmxlVmFsc1JlZihUYWJsZVZhbHMsIFJlZnMuc2l6ZSgpKTsKKyAgR2xv
YmFsVGFibGVWYXItPnNldEluaXRpYWxpemVyKENvbnN0YW50QXJyYXk6OmdldChUYWJsZVR5LCBU
YWJsZVZhbHNSZWYpKTsKKyAgZGVsZXRlIFRhYmxlVmFsczsKKworICByZXR1cm4gdHJ1ZTsKK30K
SW5kZXg6IGxpYi9UcmFuc2Zvcm1zL1NjYWxhci9TY2FsYXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp
Yi9UcmFuc2Zvcm1zL1NjYWxhci9TY2FsYXIuY3BwCShyZXZpc2lvbiAyMTc3MjEpCisrKyBsaWIv
VHJhbnNmb3Jtcy9TY2FsYXIvU2NhbGFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogICBpbml0aWFsaXplSW5kVmFyU2ltcGxpZnlQYXNzKFJlZ2lzdHJ5KTsKICAgaW5pdGlh
bGl6ZUp1bXBUaHJlYWRpbmdQYXNzKFJlZ2lzdHJ5KTsKICAgaW5pdGlhbGl6ZUxJQ01QYXNzKFJl
Z2lzdHJ5KTsKKyAgaW5pdGlhbGl6ZUxpZnRJbnRlcm5hbENhbGxzUGFzcyhSZWdpc3RyeSk7CiAg
IGluaXRpYWxpemVMb29wRGVsZXRpb25QYXNzKFJlZ2lzdHJ5KTsKICAgaW5pdGlhbGl6ZUxvb3BJ
bnN0U2ltcGxpZnlQYXNzKFJlZ2lzdHJ5KTsKICAgaW5pdGlhbGl6ZUxvb3BSb3RhdGVQYXNzKFJl
Z2lzdHJ5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239756</attachid>
            <date>2014-10-13 16:19:33 -0700</date>
            <delta_ts>2014-10-13 16:57:18 -0700</delta_ts>
            <desc>The patch for LLVM for adding the pass with the file. </desc>
            <filename>llvm_prepare_for_jit_inlining.patch</filename>
            <type>text/plain</type>
            <size>12776</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">SW5kZXg6IGluY2x1ZGUvbGx2bS9CaXRjb2RlL0xMVk1CaXRDb2Rlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGluY2x1ZGUvbGx2bS9CaXRjb2RlL0xMVk1CaXRDb2Rlcy5oCShyZXZpc2lvbiAyMTc3MjEpCisr
KyBpbmNsdWRlL2xsdm0vQml0Y29kZS9MTFZNQml0Q29kZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
Mzc2LDcgKzM3Niw4IEBACiAgICAgQVRUUl9LSU5EX0lOX0FMTE9DQSA9IDM4LAogICAgIEFUVFJf
S0lORF9OT05fTlVMTCA9IDM5LAogICAgIEFUVFJfS0lORF9KVU1QX1RBQkxFID0gNDAsCi0gICAg
QVRUUl9LSU5EX0RFUkVGRVJFTkNFQUJMRSA9IDQxCisgICAgQVRUUl9LSU5EX0RFUkVGRVJFTkNF
QUJMRSA9IDQxLAorICAgIEFUVFJfS0lORF9KSVRfSU5MSU5FQUJMRSA9IDQyLAogICB9OwogCiAg
IGVudW0gQ29tZGF0U2VsZWN0aW9uS2luZENvZGVzIHsKSW5kZXg6IGluY2x1ZGUvbGx2bS9JUi9B
dHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gaW5jbHVkZS9sbHZtL0lSL0F0dHJpYnV0ZXMuaAko
cmV2aXNpb24gMjE3NzIxKQorKysgaW5jbHVkZS9sbHZtL0lSL0F0dHJpYnV0ZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQAogICAgIElubGluZUhpbnQsICAgICAgICAgICAgLy8v
PCBTb3VyY2Ugc2FpZCBpbmxpbmluZyB3YXMgZGVzaXJhYmxlCiAgICAgSW5SZWcsICAgICAgICAg
ICAgICAgICAvLy88IEZvcmNlIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCBpbiByZWdpc3RlcgogICAg
IEp1bXBUYWJsZSwgICAgICAgICAgICAgLy8vPCBCdWlsZCBqdW1wLWluc3RydWN0aW9uIHRhYmxl
cyBhbmQgcmVwbGFjZSByZWZzLgorICAgIEpJVElubGluZWFibGUsICAgICAgICAgLy8vPCBCdWls
ZCBhbiBpbnRlcm5hbCBjYWxsIHRhYmxlIGFuZCByZXBsYWNlIHJlZnMuIAogICAgIE1pblNpemUs
ICAgICAgICAgICAgICAgLy8vPCBGdW5jdGlvbiBtdXN0IGJlIG9wdGltaXplZCBmb3Igc2l6ZSBm
aXJzdAogICAgIE5ha2VkLCAgICAgICAgICAgICAgICAgLy8vPCBOYWtlZCBmdW5jdGlvbgogICAg
IE5lc3QsICAgICAgICAgICAgICAgICAgLy8vPCBOZXN0ZWQgZnVuY3Rpb24gc3RhdGljIGNoYWlu
CkluZGV4OiBpbmNsdWRlL2xsdm0vSW5pdGlhbGl6ZVBhc3Nlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGlu
Y2x1ZGUvbGx2bS9Jbml0aWFsaXplUGFzc2VzLmgJKHJldmlzaW9uIDIxNzcyMSkKKysrIGluY2x1
ZGUvbGx2bS9Jbml0aWFsaXplUGFzc2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUs
NyBAQAogdm9pZCBpbml0aWFsaXplTElDTVBhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRp
YWxpemVMYXp5VmFsdWVJbmZvUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxp
YkNhbGxBbGlhc0FuYWx5c2lzUGFzcyhQYXNzUmVnaXN0cnkmKTsKK3ZvaWQgaW5pdGlhbGl6ZVBy
ZXBhcmVGb3JKSVRJbmxpbmluZ1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVM
aW50UGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxpdmVEZWJ1Z1ZhcmlhYmxl
c1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVMaXZlSW50ZXJ2YWxzUGFzcyhQ
YXNzUmVnaXN0cnkmKTsKSW5kZXg6IGluY2x1ZGUvbGx2bS9MaW5rQWxsUGFzc2VzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gaW5jbHVkZS9sbHZtL0xpbmtBbGxQYXNzZXMuaAkocmV2aXNpb24gMjE3NzIxKQor
KysgaW5jbHVkZS9sbHZtL0xpbmtBbGxQYXNzZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiAr
NDcsNyBAQAogICAgICAgaWYgKHN0ZDo6Z2V0ZW52KCJiYXIiKSAhPSAoY2hhciopIC0xKQogICAg
ICAgICByZXR1cm47CiAKKyAgICAgICh2b2lkKSBsbHZtOjpjcmVhdGVQcmVwYXJlRm9ySklUSW5s
aW5pbmdQYXNzKCk7CiAgICAgICAodm9pZCkgbGx2bTo6Y3JlYXRlQUFFdmFsUGFzcygpOwogICAg
ICAgKHZvaWQpIGxsdm06OmNyZWF0ZUFnZ3Jlc3NpdmVEQ0VQYXNzKCk7CiAgICAgICAodm9pZCkg
bGx2bTo6Y3JlYXRlQWxpYXNBbmFseXNpc0NvdW50ZXJQYXNzKCk7CkluZGV4OiBpbmNsdWRlL2xs
dm0vVHJhbnNmb3Jtcy9TY2FsYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRlL2xsdm0vVHJhbnNm
b3Jtcy9TY2FsYXIuaAkocmV2aXNpb24gMjE3NzIxKQorKysgaW5jbHVkZS9sbHZtL1RyYW5zZm9y
bXMvU2NhbGFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIAogY2xhc3MgQmFz
aWNCbG9ja1Bhc3M7CiBjbGFzcyBGdW5jdGlvblBhc3M7CitjbGFzcyBNb2R1bGVQYXNzOwogY2xh
c3MgUGFzczsKIGNsYXNzIEdldEVsZW1lbnRQdHJJbnN0OwogY2xhc3MgUGFzc0luZm87CkBAIC0x
MjUsNiArMTI2LDEzIEBACiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLworLy8vIGNyZWF0
ZUxvb3BFeHRyYWN0b3JQYXNzIC0gVGhpcyBwYXNzIGV4dHJhY3RzIGFsbCBpbnRlcm5hbCBjYWxs
cyBpbiAKKy8vLyB3aXRoIHRoZSBQcmVwYXJlRm9ySklUSW5saW5pbmcgYXR0cmlidXRlLgorLy8v
CitNb2R1bGVQYXNzICpjcmVhdGVQcmVwYXJlRm9ySklUSW5saW5pbmdQYXNzKCk7CisKKy8vPT09
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT09PS8vCisvLwogLy8gTG9vcFN0cmVuZ3RoUmVkdWNlIC0gVGhpcyBwYXNz
IGlzIHN0cmVuZ3RoIHJlZHVjZXMgR0VQIGluc3RydWN0aW9ucyB0aGF0IHVzZQogLy8gYSBsb29w
J3MgY2Fub25pY2FsIGluZHVjdGlvbiB2YXJpYWJsZSBhcyBvbmUgb2YgdGhlaXIgaW5kaWNlcy4K
IC8vCkluZGV4OiBsaWIvQml0Y29kZS9SZWFkZXIvQml0Y29kZVJlYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gbGliL0JpdGNvZGUvUmVhZGVyL0JpdGNvZGVSZWFkZXIuY3BwCShyZXZpc2lvbiAyMTc3
MjEpCisrKyBsaWIvQml0Y29kZS9SZWFkZXIvQml0Y29kZVJlYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5Myw2ICs1OTMsOCBAQAogICAgIHJldHVybiBBdHRyaWJ1dGU6OkluUmVnOwogICBj
YXNlIGJpdGM6OkFUVFJfS0lORF9KVU1QX1RBQkxFOgogICAgIHJldHVybiBBdHRyaWJ1dGU6Okp1
bXBUYWJsZTsKKyAgY2FzZSBiaXRjOjpBVFRSX0tJTkRfSklUX0lOTElORUFCTEU6CisgICAgcmV0
dXJuIEF0dHJpYnV0ZTo6SklUSW5saW5lYWJsZTsKICAgY2FzZSBiaXRjOjpBVFRSX0tJTkRfTUlO
X1NJWkU6CiAgICAgcmV0dXJuIEF0dHJpYnV0ZTo6TWluU2l6ZTsKICAgY2FzZSBiaXRjOjpBVFRS
X0tJTkRfTkFLRUQ6CkluZGV4OiBsaWIvQml0Y29kZS9Xcml0ZXIvQml0Y29kZVdyaXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gbGliL0JpdGNvZGUvV3JpdGVyL0JpdGNvZGVXcml0ZXIuY3BwCShyZXZp
c2lvbiAyMTc3MjEpCisrKyBsaWIvQml0Y29kZS9Xcml0ZXIvQml0Y29kZVdyaXRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsOCBAQAogICAgIHJldHVybiBiaXRjOjpBVFRSX0tJ
TkRfSU5fUkVHOwogICBjYXNlIEF0dHJpYnV0ZTo6SnVtcFRhYmxlOgogICAgIHJldHVybiBiaXRj
OjpBVFRSX0tJTkRfSlVNUF9UQUJMRTsKKyAgY2FzZSBBdHRyaWJ1dGU6OkpJVElubGluZWFibGU6
CisgICAgcmV0dXJuIGJpdGM6OkFUVFJfS0lORF9KSVRfSU5MSU5FQUJMRTsKICAgY2FzZSBBdHRy
aWJ1dGU6Ok1pblNpemU6CiAgICAgcmV0dXJuIGJpdGM6OkFUVFJfS0lORF9NSU5fU0laRTsKICAg
Y2FzZSBBdHRyaWJ1dGU6Ok5ha2VkOgpJbmRleDogbGliL0lSL0F0dHJpYnV0ZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGxpYi9JUi9BdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMjE3NzIxKQorKysgbGli
L0lSL0F0dHJpYnV0ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDggQEAKICAg
ICByZXR1cm4gImlubGluZWhpbnQiOwogICBpZiAoaGFzQXR0cmlidXRlKEF0dHJpYnV0ZTo6SW5S
ZWcpKQogICAgIHJldHVybiAiaW5yZWciOworICBpZiAoaGFzQXR0cmlidXRlKEF0dHJpYnV0ZTo6
SklUSW5saW5lYWJsZSkpCisgICAgcmV0dXJuICJqaXRfaW5saW5lYWJsZSI7CiAgIGlmIChoYXNB
dHRyaWJ1dGUoQXR0cmlidXRlOjpKdW1wVGFibGUpKQogICAgIHJldHVybiAianVtcHRhYmxlIjsK
ICAgaWYgKGhhc0F0dHJpYnV0ZShBdHRyaWJ1dGU6Ok1pblNpemUpKQpAQCAtNDI2LDYgKzQyOCw3
IEBACiAgIGNhc2UgQXR0cmlidXRlOjpJbkFsbG9jYTogICAgICAgIHJldHVybiAxVUxMIDw8IDQz
OwogICBjYXNlIEF0dHJpYnV0ZTo6Tm9uTnVsbDogICAgICAgICByZXR1cm4gMVVMTCA8PCA0NDsK
ICAgY2FzZSBBdHRyaWJ1dGU6Okp1bXBUYWJsZTogICAgICAgcmV0dXJuIDFVTEwgPDwgNDU7Cisg
IGNhc2UgQXR0cmlidXRlOjpKSVRJbmxpbmVhYmxlOiAgIHJldHVybiAxVUxMIDw8IDQ2OwogICBj
YXNlIEF0dHJpYnV0ZTo6RGVyZWZlcmVuY2VhYmxlOgogICAgIGxsdm1fdW5yZWFjaGFibGUoImRl
cmVmZXJlbmNlYWJsZSBhdHRyaWJ1dGUgbm90IHN1cHBvcnRlZCBpbiByYXcgZm9ybWF0Iik7CiAg
IH0KSW5kZXg6IGxpYi9JUi9WZXJpZmllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGliL0lSL1Zlcmlm
aWVyLmNwcAkocmV2aXNpb24gMjE3NzIxKQorKysgbGliL0lSL1ZlcmlmaWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzc0LDYgKzc3NCw3IEBACiAgICAgICAgIEktPmdldEtpbmRBc0VudW0oKSA9
PSBBdHRyaWJ1dGU6Ok5vQnVpbHRpbiB8fAogICAgICAgICBJLT5nZXRLaW5kQXNFbnVtKCkgPT0g
QXR0cmlidXRlOjpDb2xkIHx8CiAgICAgICAgIEktPmdldEtpbmRBc0VudW0oKSA9PSBBdHRyaWJ1
dGU6Ok9wdGltaXplTm9uZSB8fAorICAgICAgICBJLT5nZXRLaW5kQXNFbnVtKCkgPT0gQXR0cmli
dXRlOjpKSVRJbmxpbmVhYmxlIHx8CiAgICAgICAgIEktPmdldEtpbmRBc0VudW0oKSA9PSBBdHRy
aWJ1dGU6Okp1bXBUYWJsZSkgewogICAgICAgaWYgKCFpc0Z1bmN0aW9uKSB7CiAgICAgICAgIENo
ZWNrRmFpbGVkKCJBdHRyaWJ1dGUgJyIgKyBJLT5nZXRBc1N0cmluZygpICsKSW5kZXg6IGxpYi9U
cmFuc2Zvcm1zL1NjYWxhci9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvVHJhbnNm
b3Jtcy9TY2FsYXIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIxNzcyMSkKKysrIGxpYi9UcmFu
c2Zvcm1zL1NjYWxhci9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIs
NyBAQAogICBJbmRWYXJTaW1wbGlmeS5jcHAKICAgSnVtcFRocmVhZGluZy5jcHAKICAgTElDTS5j
cHAKKyAgUHJlcGFyZUZvckpJVElubGluaW5nLmNwcAogICBMb2FkQ29tYmluZS5jcHAKICAgTG9v
cERlbGV0aW9uLmNwcAogICBMb29wSWRpb21SZWNvZ25pemUuY3BwCkluZGV4OiBsaWIvVHJhbnNm
b3Jtcy9TY2FsYXIvUHJlcGFyZUZvckpJVElubGluaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIv
VHJhbnNmb3Jtcy9TY2FsYXIvUHJlcGFyZUZvckpJVElubGluaW5nLmNwcAkocmV2aXNpb24gMCkK
KysrIGxpYi9UcmFuc2Zvcm1zL1NjYWxhci9QcmVwYXJlRm9ySklUSW5saW5pbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY4IEBACisvLz09PS0gUHJlcGFyZUZvckpJVElubGluaW5n
LmNwcCAtIFBhc3MgdG8gcHJlcGFyZSBmdW5jdGlvbnMgZm9yIGppdHMgLS0tLS09PT0vLworLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUK
Ky8vCisvLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2Yg
SWxsaW5vaXMgT3BlbiBTb3VyY2UKKy8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0
YWlscy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFRoaXMgZmlsZSBpbXBs
ZW1lbnRzIGEgcGFzcyB3aGljaCBmb3IgZnVuY3Rpb25zIHdpdGggdGhlIAorLy8gaml0X2lubGlu
ZWFibGUgYXNzZXJ0aW9uIHRha2VzIGFsbCBjYWxscyBhbmQgcmVmZXJlbmNlcyAKKy8vIHRvIGlu
dGVybmFscyBhbmQgY3JlYXRlcyBhIGdsb2JhbCB0YWJsZSBvZiByZWZlcmVuY2VzLAorLy8gbmFt
ZWQgIi5pbnRlcm5hbFJlZnNUYWJsZS5NT0RVTEVOQU1FIiwgYW5kIG1ldGFkYXRhIGl0ZW1zIGZv
ciBlYWNoCisvLyBpbnRlcm5hbCB2YXJpYWJsZSB3aGljaCBpcyByZWZlcmVuY2VkLCBuYW1lZCAi
SU5URVJOQUxOQU1FLk1PRFVMRU5BTUUiIAorLy8gd2hpY2ggY29udGFpbnMgaXQncyBpbmRleCBp
biB0aGUgcmVmZXJlbmNlIHRhYmxlLgorLy8gCisvLyBBZGRpdGlvbmFsbHksIGl0IGFwcGVuZHMg
YW4gZ2xvYmFsIGRhdGEgYXJyYXkgdG8gdGhlIG1vZHVsZSBjb250YWluaW5nIHRoZSAKKy8vIGxs
dm0gaXIgZm9yIHRoZSBtb2R1bGUgKG5vdCBpbmNsdWRpbmcgdGhpcyBnbG9iYWwgb3IgcmVmZXJl
bmNlcyB0byBpdCksCisvLyBuYW1lZCAiLmxsdm1pci5NT0RVTEVOQU1FIiBhbmQgYWRkcyBhIHJl
ZmVyZW5jZSB0byBpdCBmb3IgZWFjaCBmdW5jdGlvbgorLy8gd2l0aCB0aGUgaml0X2lubGluYWJs
ZSBhc3NlcnRpb24sIG5hbWVkICJGVU5DVElPTk5BTUUuaml0SW5saW5lYWJsZSIgdG8gCisvLyBp
bmRpY2F0ZSB0aGF0IHRoZSBmdW5jdGlvbiBpcyBpbiBmYWN0IGppdCBpbmxpbmVhYmxlIGFuZCBl
YXNlIGluIGxvY2F0aW5nCisvLyB0aGUgc291cmNlIHZhcmlhYmxlIGluIHRoZSBhYnNlbmNlIG9m
IHRoZSBtb2R1bGUgaWQuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2luY2x1ZGUg
Imxsdm0vQURUL1N0cmluZ1NldC5oIgorI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsUHRyU2V0Lmgi
CisjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nTWFwLmgiCisjaW5jbHVkZSAibGx2bS9BRFQvQXJy
YXlSZWYuaCIKKyNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKKyNpbmNsdWRlICJsbHZtL0lSL0luc3Ry
dWN0aW9ucy5oIgorI2luY2x1ZGUgImxsdm0vSVIvRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJsbHZt
L0lSL01vZHVsZS5oIgorI2luY2x1ZGUgImxsdm0vSVIvRGVyaXZlZFR5cGVzLmgiCisjaW5jbHVk
ZSAibGx2bS9JUi9Db25zdGFudHMuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvcmF3X29zdHJl
YW0uaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQ2FzdGluZy5oIgorI2luY2x1ZGUgImxsdm0v
VHJhbnNmb3Jtcy9TY2FsYXIuaCIKK3VzaW5nIG5hbWVzcGFjZSBsbHZtOworCituYW1lc3BhY2Ug
eworICBzdHJ1Y3QgUHJlcGFyZUZvckpJVElubGluaW5nIDogcHVibGljIE1vZHVsZVBhc3Mgewor
ICAgIHN0YXRpYyBjaGFyIElEOyAvLyBQYXNzIGlkZW50aWZpY2F0aW9uLCByZXBsYWNlbWVudCBm
b3IgdHlwZWlkCisKKyAgICBleHBsaWNpdCBQcmVwYXJlRm9ySklUSW5saW5pbmcoKSAKKyAgICAg
IDogTW9kdWxlUGFzcyhJRCkgeworICAgICAgICBpbml0aWFsaXplUHJlcGFyZUZvckpJVElubGlu
aW5nUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7ICAgICAgCisgICAgICB9
CisKKyAgICBib29sIHJ1bk9uTW9kdWxlKE1vZHVsZSAmTSkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0
ZTogCisgICAgU21hbGxQdHJTZXQ8Y29uc3QgQ29uc3RhbnQgKiwgOD4gU2VlbkNvbnN0YW50czsK
KyAgICBTbWFsbFB0clNldDxjb25zdCBHbG9iYWxWYWx1ZSAqLCA4PiBSZWZzOworICAgIHZvaWQg
Z2V0R2xvYmFsUmVmc09uVmFsdWUoY29uc3QgVmFsdWUgKk9wKTsKKyAgfTsKK30KKworY2hhciBQ
cmVwYXJlRm9ySklUSW5saW5pbmc6OklEID0gMDsKK0lOSVRJQUxJWkVfUEFTUyhQcmVwYXJlRm9y
SklUSW5saW5pbmcsICJwcmVwYXJlLWZvci1qaXQtaW5saW5pbmciLAorICAgICAgICAgICAgICAg
ICJQcmVwYXJlIGZvciBqaXQgaW5saW5pbmcgcGFzcyIsIGZhbHNlLCBmYWxzZSkKKworTW9kdWxl
UGFzcyAqbGx2bTo6Y3JlYXRlUHJlcGFyZUZvckpJVElubGluaW5nUGFzcygpIHsgCisgIHJldHVy
biBuZXcgUHJlcGFyZUZvckpJVElubGluaW5nKCk7IAorfQorCit2b2lkIFByZXBhcmVGb3JKSVRJ
bmxpbmluZzo6Z2V0R2xvYmFsUmVmc09uVmFsdWUoY29uc3QgVmFsdWUgKk9wKSB7CisgIGNvbnN0
IEdsb2JhbFZhbHVlICpQdCA9IGR5bl9jYXN0PEdsb2JhbFZhbHVlPihPcCk7CisgIGlmIChQdCAm
JiBHbG9iYWxWYWx1ZTo6aXNMb2NhbExpbmthZ2UoUHQtPmdldExpbmthZ2UoKSkpCisgICAgUmVm
cy5pbnNlcnQoUHQpOyAvLyAtPmdldE5hbWUoKSk7IAorICBlbHNlIHsKKyAgICBjb25zdCBDb25z
dGFudCAqQyA9IGR5bl9jYXN0PENvbnN0YW50PihPcCk7CisgICAgaWYgKEMgJiYgU2VlbkNvbnN0
YW50cy5pbnNlcnQoQykpCisgICAgICBmb3IgKGNvbnN0IFZhbHVlICpPcDIgOiBDLT5vcGVyYW5k
cygpKQorICAgICAgICBnZXRHbG9iYWxSZWZzT25WYWx1ZShPcDIpOworICB9Cit9CisKKy8vIFRo
aXMgcGFzcyBzaG91bGQgb25seSBldmVyIGJlIHJ1biBvbmNlIGFuZCBhZnRlciBhbGwgb3RoZXIg
b3B0aW1pemF0aW9ucyEKK2Jvb2wgUHJlcGFyZUZvckpJVElubGluaW5nOjpydW5Pbk1vZHVsZShN
b2R1bGUgJk0pIHsKKyAgU2VlbkNvbnN0YW50cy5jbGVhcigpOworICBSZWZzLmNsZWFyKCk7CisK
KyAgZm9yIChGdW5jdGlvbiAmRiA6IE0pIAorICAgIGlmIChGLmhhc0ZuQXR0cmlidXRlKEF0dHJp
YnV0ZTo6SklUSW5saW5lYWJsZSkpCisgICAgICBmb3IgKEJhc2ljQmxvY2sgJkJCIDogRikgCisg
ICAgICAgIGZvciAoSW5zdHJ1Y3Rpb24gJkluc3QgOiBCQikKKyAgICAgICAgICBmb3IgKGNvbnN0
IFZhbHVlICpPcCA6IEluc3Qub3BlcmFuZHMoKSkgCisgICAgICAgICAgICBnZXRHbG9iYWxSZWZz
T25WYWx1ZShPcCk7CisKKyAgaWYgKFJlZnMuZW1wdHkoKSkKKyAgICByZXR1cm4gZmFsc2U7CisK
KyAgVHlwZSAqSW50VHkgPSBJbnRlZ2VyVHlwZTo6Z2V0KE0uZ2V0Q29udGV4dCgpLCA2NCk7Cisg
IFR5cGUgKlB0clR5ID0gUG9pbnRlclR5cGU6OmdldChJbnRUeSwgMCk7CisgIEFycmF5VHlwZSAq
VGFibGVUeSA9IEFycmF5VHlwZTo6Z2V0KFB0clR5ICwgUmVmcy5zaXplKCkpOworCisgIHN0ZDo6
c3RyaW5nIE5ld0dsb2JTdWZmaXggPSAiLiIgKyBNLmdldE1vZHVsZUlkZW50aWZpZXIoKTsKKwor
ICBzdGQ6OnN0cmluZyBUYWJsZU5hbWUgPSAiLmludGVybmFsUmVmc1RhYmxlIiArIE5ld0dsb2JT
dWZmaXg7CisgIAorICBhc3NlcnQoIU0uZ2V0TmFtZWRHbG9iYWwoVGFibGVOYW1lKSk7CisgIE0u
Z2V0T3JJbnNlcnRHbG9iYWwoVGFibGVOYW1lLCBUYWJsZVR5KTsKKyAgR2xvYmFsVmFyaWFibGUg
Kkdsb2JhbFRhYmxlVmFyID0gTS5nZXROYW1lZEdsb2JhbChUYWJsZU5hbWUpOworICBhc3NlcnQo
R2xvYmFsVGFibGVWYXIpOworCisgIENvbnN0YW50ICoqVGFibGVWYWxzID0gbmV3IENvbnN0YW50
KltSZWZzLnNpemUoKV07CisKKyAgdW5zaWduZWQgQ3VycmVudEluZGV4ID0gMDsKKyAgZm9yIChj
b25zdCBHbG9iYWxWYWx1ZSAqUmVmIDogUmVmcykgeworICAgIHN0ZDo6c3RyaW5nIFJlZk5hbWUg
PSBSZWYtPmdldE5hbWUoKTsKKyAgICAKKyAgICBDb25zdGFudCAqR2VuUmVmID0gTS5nZXRHbG9i
YWxWYXJpYWJsZShSZWZOYW1lLCB0cnVlKTsKKyAgICBpZiAoIUdlblJlZikgCisgICAgICBHZW5S
ZWYgPSBNLmdldEZ1bmN0aW9uKFJlZk5hbWUpOworICAgIGFzc2VydChHZW5SZWYpOworICAgIFRh
YmxlVmFsc1tDdXJyZW50SW5kZXhdID0gQ29uc3RhbnRFeHByOjpnZXRQb2ludGVyQ2FzdChHZW5S
ZWYsIFB0clR5KTsgCisKKyAgICAvLyBub3cgc2ltcGx5IGFkZCBhIG1ldGFkYXRhIGVudHJ5IHdo
aWNoIHBvaW50cyB0byB0aGlzIHZhbHVlISAKKyAgICAvLyBtZXRhZGF0YSB3aWxsIGJlIHJlbW92
ZWQgd2hlbiBsaW5raW5nIHNvIGl0IHdvbid0IHBvbHV0ZSB0aGUgbmFtZXNwYWNlLgorICAgIAor
ICAgIHN0ZDo6c3RyaW5nIE1ldGFUYWJsZVJlZk5hbWUgPSBSZWZOYW1lICsgTmV3R2xvYlN1ZmZp
eDsKKyAgICBOYW1lZE1ETm9kZSAqTWV0YVRhYmxlUmVmID0gCisgICAgICBNLmdldE9ySW5zZXJ0
TmFtZWRNZXRhZGF0YShNZXRhVGFibGVSZWZOYW1lKTsKKyAgICAKKyAgICBDb25zdGFudCAqQ0xv
YyA9IENvbnN0YW50SW50OjpnZXQoSW50VHksIEN1cnJlbnRJbmRleCk7CisgICAgVmFsdWUgKkxv
YyA9IGR5bl9jYXN0PFZhbHVlPihDTG9jKTsKKworICAgIE1ETm9kZSAqTWV0YVRhYmxlUmVmVmFs
dWUgPSAKKyAgICAgIE1ETm9kZTo6Z2V0KE0uZ2V0Q29udGV4dCgpLCBBcnJheVJlZjxWYWx1ZSAq
PihMb2MpKTsKKworICAgIE1ldGFUYWJsZVJlZi0+YWRkT3BlcmFuZChNZXRhVGFibGVSZWZWYWx1
ZSk7CisgICAgQ3VycmVudEluZGV4Kys7CisgIH0KKyAgCisgIEFycmF5UmVmPENvbnN0YW50Kj4g
VGFibGVWYWxzUmVmKFRhYmxlVmFscywgUmVmcy5zaXplKCkpOworICBHbG9iYWxUYWJsZVZhci0+
c2V0SW5pdGlhbGl6ZXIoQ29uc3RhbnRBcnJheTo6Z2V0KFRhYmxlVHksIFRhYmxlVmFsc1JlZikp
OworICBkZWxldGUgVGFibGVWYWxzOworCisgIC8vIGFkZCBhbiBleHRlcm5hbCBnbG9iYWwgd2l0
aCB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBtb2R1bGUKKyAgLy8gYW5kIGEgbGluayB0byBpdC4g
CisKKyAgc3RkOjpzdHJpbmcgTExWTUlSU291cmNlID0gIiI7CisgIHJhd19zdHJpbmdfb3N0cmVh
bSBTdG0oTExWTUlSU291cmNlKTsKKyAgU3RtIDw8IE07CisKKyAgQ29uc3RhbnQgKkxMVk1JUkFy
cmF5ID0gQ29uc3RhbnREYXRhQXJyYXk6OmdldFN0cmluZyhNLmdldENvbnRleHQoKSwgTExWTUlS
U291cmNlKTsKKworICBUeXBlICpDaGFyQXJyYXlUeSA9IExMVk1JUkFycmF5LT5nZXRUeXBlKCk7
CisgIFR5cGUgKlB0ckNoYXJBcnJheVR5ID0gUG9pbnRlclR5cGU6OmdldChDaGFyQXJyYXlUeSwg
MCk7CisKKyAgc3RkOjpzdHJpbmcgTExWTUlSTmFtZSA9ICIubGx2bWlyIiArIE5ld0dsb2JTdWZm
aXg7CisgIGFzc2VydCghTS5nZXROYW1lZEdsb2JhbChMTFZNSVJOYW1lKSk7CisgIE0uZ2V0T3JJ
bnNlcnRHbG9iYWwoTExWTUlSTmFtZSwgQ2hhckFycmF5VHkpOworICBHbG9iYWxWYXJpYWJsZSAq
TExWTUlSID0gTS5nZXROYW1lZEdsb2JhbChMTFZNSVJOYW1lKTsKKyAgTExWTUlSLT5zZXRJbml0
aWFsaXplcihMTFZNSVJBcnJheSk7CisKKworICBmb3IgKEZ1bmN0aW9uICZGIDogTSkgCisgICAg
aWYgKEYuaGFzRm5BdHRyaWJ1dGUoQXR0cmlidXRlOjpKSVRJbmxpbmVhYmxlKSkgeworICAgICAg
c3RkOjpzdHJpbmcgQXR0ckxpbmtOYW1lID0gRi5nZXROYW1lKCkuc3RyKCkgKyAiLmppdElubGlu
ZWFibGUiOworICAgICAgTS5nZXRPckluc2VydEdsb2JhbChBdHRyTGlua05hbWUsIFB0ckNoYXJB
cnJheVR5KTsKKyAgICAgIEdsb2JhbFZhcmlhYmxlICpBdHRyTGluayA9IE0uZ2V0TmFtZWRHbG9i
YWwoQXR0ckxpbmtOYW1lKTsKKyAgICAgIEF0dHJMaW5rLT5zZXRJbml0aWFsaXplcihkeW5fY2Fz
dDxDb25zdGFudD4oTExWTUlSKSk7CisgICAgfQorICAKKyAgcmV0dXJuIHRydWU7Cit9CkluZGV4
OiBsaWIvVHJhbnNmb3Jtcy9TY2FsYXIvU2NhbGFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvVHJh
bnNmb3Jtcy9TY2FsYXIvU2NhbGFyLmNwcAkocmV2aXNpb24gMjE3NzIxKQorKysgbGliL1RyYW5z
Zm9ybXMvU2NhbGFyL1NjYWxhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAK
ICAgaW5pdGlhbGl6ZUluZFZhclNpbXBsaWZ5UGFzcyhSZWdpc3RyeSk7CiAgIGluaXRpYWxpemVK
dW1wVGhyZWFkaW5nUGFzcyhSZWdpc3RyeSk7CiAgIGluaXRpYWxpemVMSUNNUGFzcyhSZWdpc3Ry
eSk7CisgIGluaXRpYWxpemVQcmVwYXJlRm9ySklUSW5saW5pbmdQYXNzKFJlZ2lzdHJ5KTsKICAg
aW5pdGlhbGl6ZUxvb3BEZWxldGlvblBhc3MoUmVnaXN0cnkpOwogICBpbml0aWFsaXplTG9vcElu
c3RTaW1wbGlmeVBhc3MoUmVnaXN0cnkpOwogICBpbml0aWFsaXplTG9vcFJvdGF0ZVBhc3MoUmVn
aXN0cnkpOwo=
</data>
<flag name="review"
          id="264483"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239757</attachid>
            <date>2014-10-13 16:21:20 -0700</date>
            <delta_ts>2014-10-13 16:22:02 -0700</delta_ts>
            <desc>The patch for Clang to add the attribute</desc>
            <filename>clang_prepare_for_jit_inlining.patch</filename>
            <type>text/plain</type>
            <size>3230</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">SW5kZXg6IGluY2x1ZGUvY2xhbmcvQmFzaWMvQXR0ci50ZAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBpbmNsdWRl
L2NsYW5nL0Jhc2ljL0F0dHIudGQJKHJldmlzaW9uIDIxNzcxMCkKKysrIGluY2x1ZGUvY2xhbmcv
QmFzaWMvQXR0ci50ZAkod29ya2luZyBjb3B5KQpAQCAtMzYxLDYgKzM2MSwxMiBAQAogICBsZXQg
RG9jdW1lbnRhdGlvbiA9IFtVbmRvY3VtZW50ZWRdOwogfQogCitkZWYgSklUSW5saW5lYWJsZSA6
IEluaGVyaXRhYmxlQXR0ciB7CisgIGxldCBTcGVsbGluZ3MgPSBbR0NDPCJqaXRfaW5saW5lYWJs
ZSI+XTsKKyAgbGV0IFN1YmplY3RzID0gU3ViamVjdExpc3Q8W0Z1bmN0aW9uXT47CisgIGxldCBE
b2N1bWVudGF0aW9uID0gW1VuZG9jdW1lbnRlZF07Cit9CisKIGRlZiBBbHdheXNJbmxpbmUgOiBJ
bmhlcml0YWJsZUF0dHIgewogICBsZXQgU3BlbGxpbmdzID0gW0dDQzwiYWx3YXlzX2lubGluZSI+
LCBLZXl3b3JkPCJfX2ZvcmNlaW5saW5lIj5dOwogICBsZXQgU3ViamVjdHMgPSBTdWJqZWN0TGlz
dDxbRnVuY3Rpb25dPjsKSW5kZXg6IGxpYi9Db2RlR2VuL0JhY2tlbmRVdGlsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBsaWIvQ29kZUdlbi9CYWNrZW5kVXRpbC5jcHAJKHJldmlzaW9uIDIxNzcxMCkKKysr
IGxpYi9Db2RlR2VuL0JhY2tlbmRVdGlsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3
NCwxMiBAQAogICBQTS5hZGQoY3JlYXRlQWRkRGlzY3JpbWluYXRvcnNQYXNzKCkpOwogfQogCisK
K3N0YXRpYyB2b2lkIGFkZFByZXBhcmVGb3JKSVRJbmxpbmluZ1Bhc3MoY29uc3QgUGFzc01hbmFn
ZXJCdWlsZGVyICZCdWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3NNYW5hZ2VyQmFzZSAmUE0pIHsKKyAgICBQTS5hZGQoY3JlYXRlUHJlcGFyZUZvckpJVElu
bGluaW5nUGFzcygpKTsKK30KKwogc3RhdGljIHZvaWQgYWRkQm91bmRzQ2hlY2tpbmdQYXNzKGNv
bnN0IFBhc3NNYW5hZ2VyQnVpbGRlciAmQnVpbGRlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBhc3NNYW5hZ2VyQmFzZSAmUE0pIHsKICAgUE0uYWRkKGNyZWF0ZUJvdW5k
c0NoZWNraW5nUGFzcygpKTsKQEAgLTI1Miw2ICsyNTgsOSBAQAogICBQTUJ1aWxkZXIuYWRkRXh0
ZW5zaW9uKFBhc3NNYW5hZ2VyQnVpbGRlcjo6RVBfRWFybHlBc1Bvc3NpYmxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZEFkZERpc2NyaW1pbmF0b3JzUGFzcyk7CiAKKyAgUE1CdWlsZGVy
LmFkZEV4dGVuc2lvbihQYXNzTWFuYWdlckJ1aWxkZXI6OkVQX0VuYWJsZWRPbk9wdExldmVsMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRQcmVwYXJlRm9ySklUSW5saW5pbmdQYXNzKTsK
KwogICBpZiAoIUNvZGVHZW5PcHRzLlNhbXBsZVByb2ZpbGVGaWxlLmVtcHR5KCkpCiAgICAgUE1C
dWlsZGVyLmFkZEV4dGVuc2lvbihQYXNzTWFuYWdlckJ1aWxkZXI6OkVQX0Vhcmx5QXNQb3NzaWJs
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFNhbXBsZVByb2ZpbGVMb2FkZXJQYXNz
KTsKSW5kZXg6IGxpYi9Db2RlR2VuL0NvZGVHZW5Nb2R1bGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxp
Yi9Db2RlR2VuL0NvZGVHZW5Nb2R1bGUuY3BwCShyZXZpc2lvbiAyMTc3MTApCisrKyBsaWIvQ29k
ZUdlbi9Db2RlR2VuTW9kdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE3LDYgKzcxNywxMCBA
QAogICAgIEIuYWRkQXR0cmlidXRlKGxsdm06OkF0dHJpYnV0ZTo6QWx3YXlzSW5saW5lKTsKICAg
fQogCisgIGlmIChELT5oYXNBdHRyPEpJVElubGluZWFibGVBdHRyPigpKSB7CisgICAgQi5hZGRB
dHRyaWJ1dGUobGx2bTo6QXR0cmlidXRlOjpKSVRJbmxpbmVhYmxlKTsKKyAgfQorCiAgIGlmIChE
LT5oYXNBdHRyPENvbGRBdHRyPigpKSB7CiAgICAgQi5hZGRBdHRyaWJ1dGUobGx2bTo6QXR0cmli
dXRlOjpPcHRpbWl6ZUZvclNpemUpOwogICAgIEIuYWRkQXR0cmlidXRlKGxsdm06OkF0dHJpYnV0
ZTo6Q29sZCk7CkluZGV4OiBsaWIvU2VtYS9TZW1hRGVjbEF0dHIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGxpYi9TZW1hL1NlbWFEZWNsQXR0ci5jcHAJKHJldmlzaW9uIDIxNzcxMCkKKysrIGxpYi9TZW1h
L1NlbWFEZWNsQXR0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMTksNiArMzAxOSwxMyBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHIuZ2V0QXR0cmlidXRlU3BlbGxpbmdMaXN0SW5k
ZXgoKSkpOwogfQogCitzdGF0aWMgdm9pZCBoYW5kbGVKSVRJbmxpbmVhYmxlQXR0cihTZW1hICZT
LCBEZWNsICpELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRy
aWJ1dGVMaXN0ICZBdHRyKSB7CisgIEQtPmFkZEF0dHIoOjpuZXcgKFMuQ29udGV4dCkKKyAgICAg
ICAgICAgICBKSVRJbmxpbmVhYmxlQXR0cihBdHRyLmdldFJhbmdlKCksIFMuQ29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyLmdldEF0dHJpYnV0ZVNwZWxsaW5nTGlz
dEluZGV4KCkpKTsKK30KKwogc3RhdGljIHZvaWQgaGFuZGxlQWx3YXlzSW5saW5lQXR0cihTZW1h
ICZTLCBEZWNsICpELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBB
dHRyaWJ1dGVMaXN0ICZBdHRyKSB7CiAgIGlmIChjaGVja0F0dHJNdXR1YWxFeGNsdXNpb248T3B0
aW1pemVOb25lQXR0cj4oUywgRCwgQXR0cikpCkBAIC00MTE2LDYgKzQxMjMsOSBAQAogICBjYXNl
IEF0dHJpYnV0ZUxpc3Q6OkFUX0FsaWduZWQ6CiAgICAgaGFuZGxlQWxpZ25lZEF0dHIoUywgRCwg
QXR0cik7CiAgICAgYnJlYWs7CisgIGNhc2UgQXR0cmlidXRlTGlzdDo6QVRfSklUSW5saW5lYWJs
ZToKKyAgICAgIGhhbmRsZUpJVElubGluZWFibGVBdHRyKFMsIEQsIEF0dHIpOworICAgIGJyZWFr
OwogICBjYXNlIEF0dHJpYnV0ZUxpc3Q6OkFUX0Fsd2F5c0lubGluZToKICAgICBoYW5kbGVBbHdh
eXNJbmxpbmVBdHRyKFMsIEQsIEF0dHIpOwogICAgIGJyZWFrOwo=
</data>
<flag name="review"
          id="264484"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>