> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stefanbrain.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Follow the content contract in AGENTS.md.
> Treat text as the canonical explanation; video and screenshots enhance it.
> Do not publish unverified product behavior or duplicate an existing canonical article.

# Create ad hooks from classic direct mail

> Use a classic direct-mail piece as a reference, build a Product-specific hook bank, and turn the strongest ideas into static and UGC ad concepts.

## The result you want

Turn a strong direct-mail piece into a Product-specific bank of headlines,
subheads, fascinations, and story openings. Then develop the best ideas into a
static-ad concept or UGC script without copying the source's product facts or
story.

<Tip>
  The key move is to ask StefanBrain to write **as if the source had been made
  for your Product**. A vague request to “find the pattern” can strip away
  the specificity that made the source useful.
</Tip>

## Practical use cases

<CardGroup cols={2}>
  <Card title="Sharpen a generic hook bank" icon="sparkles">
    Borrow the source's curiosity, specificity, and sales pressure while
    grounding every idea in your Product and audience.
  </Card>

  <Card title="Build a magazine-cover concept" icon="layout-template">
    Stack the strongest headline and subhead ideas into one static-ad direction
    with a clear visual hierarchy.
  </Card>

  <Card title="Outline a UGC ad" icon="video">
    Turn selected hooks into a conversational story, review the outline, and
    only then request the finished script.
  </Card>

  <Card title="Combine references intentionally" icon="combine">
    Use one source for direct-response structure and another for voice or
    pacing, while the Product supplies every fact and offer detail.
  </Card>
</CardGroup>

## Watch or read the walkthrough

<Frame caption="Stefan adapts classic direct-mail hooks for Primal Queen and Wild Belly, then develops the strongest ideas into static and UGC ad concepts. Duration: 13:34.">
  <div
    className="w-full"
    dangerouslySetInnerHTML={{
  __html: `<video class="w-full h-auto rounded-xl" controls preload="metadata" poster="/images/tutorials/covers/create-ad-hooks-from-classic-direct-mail.png" playsinline alt="Stefan demonstrates how to turn classic direct-mail references into Product-specific hooks, static concepts, and UGC scripts" aria-label="Narrated walkthrough for creating ad hooks from classic direct mail"><source src="https://stefanbrain.com/api/video/adaptive/tutorials/create-ad-hooks-from-classic-direct-mail/full-frame-v4-2026-08-26.mp4" type="video/mp4"><track kind="captions" src="data:text/vtt;base64,V0VCVlRUCgoxCjAwOjAwOjAwLjAxMSAtLT4gMDA6MDA6MDIuODM2CkhleSwgd2hhdCdzIHVwIGd1eXM/IEkgd2FudCB0byBzaGFyZSBzb21ldGhpbmcga2luZCBvZiBjb29sLAoKMgowMDowMDowMi44MzYgLS0+IDAwOjAwOjA2LjMzMwp1bSwgdGhhdCBJIHdhcyBwbGF5aW5nIGFyb3VuZCB3aXRoIGluIFN0ZWZhbkJyYWluIHllc3RlcmRheS4KCjMKMDA6MDA6MDYuMzMzIC0tPiAwMDowMDowOS45NzQKVWgsIGFuZCBJIHNoYXJlZCB0aGlzIHdpdGggbXkgQ0EgcHJvIG1lbWJlcnMgb24gb3VyIHdlZWtseSB0cmFpbmluZwoKNAowMDowMDowOS45NzQgLS0+IDAwOjAwOjEzLjg3MQpjYWxsLCBidXQgSSBmaWd1cmVkIGl0J2QgYmUgY29vbCB0byBzaGFyZSBpdCB3aXRoIFN0ZWZhbkJyYWluIGZvbGtzIGFzCgo1CjAwOjAwOjEzLjg3MSAtLT4gMDA6MDA6MTYuMDQ2CndlbGwsIGJlY2F1c2UsIHVoLAoKNgowMDowMDoxNi4wNTcgLS0+IDAwOjAwOjE4LjczNQpJIGRvbid0IGtub3csIEkganVzdCB0aG91Z2h0IGl0IHdhcyBzb3J0IG9mIG5lYXQuIFNvLAoKNwowMDowMDoxOS42OTAgLS0+IDAwOjAwOjIzLjA1MQpicm9hZCBjb250ZXh0IG9uIHRoaXMgaXMsIHVtLAoKOAowMDowMDoyMy4wNjIgLS0+IDAwOjAwOjI1LjI4NQpJIHdhcyB0aGlua2luZyBhYm91dCwgbGlrZSwgaG93LCBsaWtlLCB3aXRoIGdldHRpbmcsCgo5CjAwOjAwOjI1LjI4NSAtLT4gMDA6MDA6MjcuMzY0Cmxpa2UsIHN3aXBpbmcsIG9yIHRoZSB2b2ljZSwgb3IgbGlrZSwKCjEwCjAwOjAwOjI3LjM2NCAtLT4gMDA6MDA6MjkuODg1CmdldHRpbmcsIGxpa2UsIEFJLCB3aGV0aGVyIGl0J3MgU3RlZmFuQnJhaW4gb3IgYW55IExMTSwKCjExCjAwOjAwOjI5Ljg4NSAtLT4gMDA6MDA6MzMuODUyCnRvIGtpbmQgb2YgaGF2ZSwgbGlrZSwganVzdCBiZXR0ZXIsCgoxMgowMDowMDozMy44NTIgLS0+IDAwOjAwOjM2LjEyMwpsaWtlLCBkaXJlY3QgcmVzcG9uc2UgdHlwZSBvZiwgbGlrZSwgb3V0cHV0cywgcmlnaHQ/CgoxMwowMDowMDozNi4xMjMgLS0+IDAwOjAwOjM5LjMxMwpVbSwgc28gSSB0b29rLCBsaWtlLCBhIGNsYXNzaWMgZGlyZWN0IG1haWwgcGllY2UgaGVyZS4KCjE0CjAwOjAwOjM5Ljc1NiAtLT4gMDA6MDA6NDIuMDQ1CldoZW4geW91ciBsZWdzIGFuZCBmZWV0IGFyZSBzY3JlYW1pbmcgb3V0IGZvciBoZWxwIGFuZCB5b3Ugd2FudCBmYXN0CgoxNQowMDowMDo0Mi4wNDUgLS0+IDAwOjAwOjQ1LjcxMwpyZWxpZWYgdG8gZW5kIHlvdXIgc3VmZmVyaW5nLCBvbmUgc21hbGwsIGFsbC1uYXR1cmFsIFZlaW5FYXNlIHBpbGwgaXMgdGhlIGFuc3dlcgoKMTYKMDA6MDA6NDUuNzEzIC0tPiAwMDowMDo0OC4xNDQKZm9yIG5pZ2h0IGFuZCBkYXkgcmVsaWVmLgoKMTcKMDA6MDA6NDguMTQ0IC0tPiAwMDowMDo1MC4yNjAKVGhpcyBpcywgeW91IGtub3csIHNvbWUganVzdCBjbGFzc2ljLCBsaWtlLCBkaXJlY3QgbWFpbCBwaWVjZS4KCjE4CjAwOjAwOjUwLjI2MCAtLT4gMDA6MDA6NTQuNzQ5ClVtLCBidXQgdGhlIHJlYXNvbiBJIGxpa2VkIGl0IGlzIGJlY2F1c2UgaXQncyBhZ2dyZXNzaXZlLAoKMTkKMDA6MDA6NTQuNzQ5IC0tPiAwMDowMDo1Ni45MDMKcmlnaHQ/IFVtLAoKMjAKMDA6MDA6NTYuOTEzIC0tPiAwMDowMDo1OS44NjEKYnV0LCB5b3Uga25vdywgYWxsIHRoZXNlIGNsYXNzaWMgZGlyZWN0IG1haWwgcGllY2VzIGFyZSBqdXN0IGZ1bGwgb2YsCgoyMQowMDowMDo1OS44NjEgLS0+IDAwOjAxOjAyLjM0MApsaWtlLCB1aCwKCjIyCjAwOjAxOjAyLjM1MSAtLT4gMDA6MDE6MDYuODY2CnN1YmhlYWRlcnMgYW5kIGZhc2NpbmF0aW9ucyBhbmQgY3VyaW9zaXR5IGJ1bGxldHMKCjIzCjAwOjAxOjA2Ljg2NiAtLT4gMDA6MDE6MDkuMzY1CmFuZCwgdW0sIHlvdSBrbm93LAoKMjQKMDA6MDE6MTEuNTc1IC0tPiAwMDowMToxNC4yNjgKdGhhdCBraW5kIG9mIHN0dWZmLiBSaWdodD8gU28gSSdtIGxpa2UsCgoyNQowMDowMToxNS4xNTkgLS0+IDAwOjAxOjE3LjEzNApkb24ndCB3b3JyeSBhYm91dCB0aGlzIHByb21wdCBiZWNhdXNlIHRoaXMgcHJvbXB0IGRpZCBub3QgZ2V0IGEKCjI2CjAwOjAxOjE3LjEzNCAtLT4gMDA6MDE6MjAuMTQ2Cmdvb2Qgb3V0cHV0LCBidXQgSSdtIGxpa2UsIGhlcmUncyBhIGNsYXNzaWMgZGlyZWN0IG1haWwgcGllY2UsCgoyNwowMDowMToyMC4xNDYgLS0+IDAwOjAxOjIzLjAxNApnbyB0aHJvdWdoIGl0LCBjb21lIHVwIHdpdGggcG90ZW50aWFsIGhvb2tzIGFuZCBhbmdsZXMsCgoyOAowMDowMToyMy4wMTQgLS0+IDAwOjAxOjI2LjY1MAp1aCwgZm9yIFByaW1hbCBRdWVlbiwgcmlnaHQ/IFlvdXIgZ29hbCBoZXJlIGlzIHRvIHVzZSB0aGUgZGlyZWN0IG1haWwKCjI5CjAwOjAxOjI2LjY1MCAtLT4gMDA6MDE6MzAuNzc2CnBpZWNlIGFuZCB0aGUgY29weSBhbmQgaGVhZGxpbmVzIGFzIGluc3BpcmF0aW9uLiBNYWtlIHRoZW0gY29uZ3J1ZW50IHdpdGggUHJpbWFsIFF1ZWVuLAoKMzAKMDA6MDE6MzAuNzc2IC0tPiAwMDowMTozMy4wMjIKcmlnaHQ/IFNvIHRoYXQgd2FzIHRoZSBwcm9tcHQuIFNvLAoKMzEKMDA6MDE6MzMuNzc1IC0tPiAwMDowMTozNi4yNjcKdGhlIGZpcnN0IHRpbWUgSSBkaWQgdGhhdCwgU3RlZmFuQnJhaW4gd2FzIGxpa2UsCgozMgowMDowMTozNi4yNjcgLS0+IDAwOjAxOjM4LjQzMQpVaCwKCjMzCjAwOjAxOjM4LjQ0MiAtLT4gMDA6MDE6NDEuMzkwCnlvdSBrbm93LCBJIHdlbnQgdGhyb3VnaCwgbGlrZSwgdGhlIHN0cm9uZyB0aGluZyB0byBib3Jyb3cgaXMgbm90IHRoZQoKMzQKMDA6MDE6NDEuMzkwIC0tPiAwMDowMTo0My42MzQKb2xkLXNjaG9vbCBkZXNpZ24sIGl0J3MgdGhlIHNhbGVzIHNlcXVlbmNlLCByaWdodD8KCjM1CjAwOjAxOjQzLjYzNCAtLT4gMDA6MDE6NDYuMDEyClN0YXJ0IG9mZiB3aXRoIGZydXN0cmF0aW9uLCBtYWtlIHRoZSByZWFkZXIgZmVlbC0gYW5kIGl0J3MgbGlrZSwKCjM2CjAwOjAxOjQ2LjAxMiAtLT4gMDA6MDE6NDguMTQ0CmJhc2ljYWxseSwgaXQgd2FzIHRyeWluZyB0byBhYnN0cmFjdCBvdXQgdG8gc29tZSwgbGlrZSwKCjM3CjAwOjAxOjQ4LjE0NCAtLT4gMDA6MDE6NTAuODE1CmdlbmVyYWwsIGJyb2FkLCB2YWd1ZSBwYXR0ZXJuLCB3aGljaCBJIHRoaW5rIGFsbCBMTE1zIGRvLgoKMzgKMDA6MDE6NTAuODE1IC0tPiAwMDowMTo1My4yODMKSSBkb24ndCB0aGluayBpdCdzIGEga25vY2sgb24gU3RlZmFuQnJhaW4uCgozOQowMDowMTo1My4yODMgLS0+IDAwOjAxOjU2LjI2OAp1bSwgYW5kIGl0J3Mgc29ydCBvZiBsaWtlLCBoZXJlJ3MgdGhlIHN0cm9uZyB0aGluZywKCjQwCjAwOjAxOjU2LjI2OCAtLT4gMDA6MDE6NTguNzkwCmxldCdzIGRvIHRlc3RzLiBJdCdzIHRoZSBzYW1lIG9uZXMgSSd2ZSB0ZXN0ZWQsIEkgdXNlIFByaW1hbCBRdWVlbiBhcwoKNDEKMDA6MDE6NTguNzkwIC0tPiAwMDowMjowMy43MjEKbGlrZSBhIGJhc2UgZm9yIHRlc3Rpbmcgc3R1ZmYgaW4gdGhlIG1vZGVsLiBVbSwKCjQyCjAwOjAyOjAzLjczMiAtLT4gMDA6MDI6MDYuOTczCnlvdSBrbm93LCB5b3VyIG1lYWxzIG1heSBiZSBmdWxsLCB5b3VyIG51dHJpdGlvbiBtYXkgc3RpbGwgYmUgaW5jb21wbGV0ZSwKCjQzCjAwOjAyOjA2Ljk3MyAtLT4gMDA6MDI6MDkuMDA0Cmxpa2UsIHBmZnQsIHRlcnJpYmxlLCByaWdodD8KCjQ0CjAwOjAyOjA5LjAwNCAtLT4gMDA6MDI6MTEuODgzClRoaXMgaXMgYSBidW5jaCBvZiBqdW5rLiBOb3QgYWxsIG9mIHRoZW0gYXJlIGJhZCwKCjQ1CjAwOjAyOjExLjg4MyAtLT4gMDA6MDI6MTQuNzUxCmJ1dCBhIGxvdCBvZiB0aGVtIGFyZSwgcmlnaHQ/IExpa2UsIHdoaWNoIHBhcnQgb2YgeW91ciBib2R5IGlzCgo0NgowMDowMjoxNC43NTEgLS0+IDAwOjAyOjE4LjAzNQphc2tpbmcgZm9yIGJldHRlciBzdXBwb3J0LCBzbyB3YXRlcmVkIGRvd24gYW5kIHdlYWsgYW5kIGNyYXBweS4KCjQ3CjAwOjAyOjE4LjAzNSAtLT4gMDA6MDI6MjAuMTY3ClNvLCBhbnl3YXksIHlvdSBrbm93LAoKNDgKMDA6MDI6MjAuMTY3IC0tPiAwMDowMjoyNC4zOTUKSSdtIHN1cmUgdGhlcmUncyBhIGZldyBkZWNlbnQgb25lcyBpbiBoZXJlLCBidXQgbW9zdGx5IGNyYXBweS4KCjQ5CjAwOjAyOjI0LjM5NSAtLT4gMDA6MDI6MjkuMDAxCkFuZCBhIGxvdCBvZiBjcmFwcHkgb25lcy4gVW0sCgo1MAowMDowMjoyOS4wMTEgLS0+IDAwOjAyOjMyLjMxMQpsb3ZlcyBudXRyaXRpb25hbCBnYXBzLiBJIGRvbid0IGtub3cgaWYgdGhhdCdzIGV2ZW4gb24gdGhlIFByaW1hbCBRdWVlbiB3ZWJzaXRlLAoKNTEKMDA6MDI6MzIuMzExIC0tPiAwMDowMjozNC43MjEKb3IsIGxpa2UsIHRoZSBjb3B5IEkgaGF2ZSwgb3IgaWYgaXQganVzdCBsb3ZlcyBnYXBzLgoKNTIKMDA6MDI6MzQuNzIxIC0tPiAwMDowMjozNy4yMDAKSSBtZWFuLCBBSSBkb2VzIGxvdmUgZ2FwcywgcmlnaHQ/IFNvLAoKNTMKMDA6MDI6MzcuMjAwIC0tPiAwMDowMjo0MC41NjMKdGhlIHByb21wdCBJIGhhZCBoZXJlIHdhcywgbGlrZSwgb2theSwgdGhhbmtzLCBJIGRvbid0IHJlYWxseSBsaWtlIHdoYXQKCjU0CjAwOjAyOjQwLjU2MyAtLT4gMDA6MDI6NDMuMzQ2CnlvdSBkaWQgaGVyZSwgdHJ5IGl0IGxpa2UgdGhpcywgdGFrZSBhIGJ1bmNoIG9mIHRoZSBoZWFkbGluZXMgYW5kCgo1NQowMDowMjo0My4zNDYgLS0+IDAwOjAyOjQ2LjM1MwpzdWJoZWFkZXJzIGZyb20gdGhlIGRpcmVjdCBtYWlsIHBpZWNlIGFuZCBwcmV0ZW5kIHRoYXQgZGlyZWN0IG1haWwgcGllY2Ugd2FzIGJlaW5nCgo1NgowMDowMjo0Ni4zNTMgLS0+IDAwOjAyOjUwLjUxNwp3cml0dGVuIGZvciBQcmltYWwgUXVlZW4sIHJpZ2h0PyBQcmV0ZW5kIHRoaXMgaXMgdGhlICc5MHMgb3IgMjAwMHMgb3Igd2hhdGV2ZXIuCgo1NwowMDowMjo1MC44MjUgLS0+IDAwOjAyOjU0LjEyMApkb24ndCB3b3JyeSBhYm91dCB3aGF0J3MgaW4gdGhlIGV4aXN0aW5nIFByaW1hbCBRdWVlbiBicmFuZCBhc3NldCBiYXNlIHNvIG11Y2gKCjU4CjAwOjAyOjU0LjEyMCAtLT4gMDA6MDI6NTguMDMzCmJlc2lkZXMsIGxpa2UsIGJyb2FkbHkgd2hvIHRoZSBkZW1vIGlzIGFuZCB3aGF0IHBhaW4gcG9pbnQgcG9pbnRzLAoKNTkKMDA6MDI6NTguMDMzIC0tPiAwMDowMzowMS4wMTkKdWgsIHllYWgsIHBhaW4gcG9pbnRzIGl0IG1vc3RseSBoZWxwcyB3aXRoLAoKNjAKMDA6MDM6MDEuNDAyIC0tPiAwMDowMzowMy40NTUKc28gZm9yIGV4YW1wbGUsIHdoZXJlIGl0IHNheXMgYSBtaXJhY2xlIGZvciBsZWcgc3VmZmVyZXJzLAoKNjEKMDA6MDM6MDMuNDU1IC0tPiAwMDowMzowNS41NjAKeW91IG1pZ2h0IGRvIGEgbWlyYWNsZSBmb3IgbWVub3BhdXNlIHN1ZmZlcmVycywKCjYyCjAwOjAzOjA1LjU2MCAtLT4gMDA6MDM6MDcuOTA2Cm9yLCBsaWtlLCBhIG1pcmFjbGUgZm9yIG1lbm9wYXVzZSwgZXRjLgoKNjMKMDA6MDM6MDguNDYwIC0tPiAwMDowMzoxMC40OTIKQW5kIGl0J3MgbGlrZSwgYWxyaWdodCwgY29vbC4gQW5kIHNvIHRoZW4gaXQgc3RhcnRlZCwKCjY0CjAwOjAzOjEwLjQ5MiAtLT4gMDA6MDM6MTMuMjA1Cmxpa2UsIGRvaW5nIHRoaXMsIHJpZ2h0LCBsaWtlLCBva2F5LCBhIG1pcmFjbGUgZm9yIG1lbm9wYXVzZSBzdWZmZXJlcnMuCgo2NQowMDowMzoxMy4yMDUgLS0+IDAwOjAzOjE3LjM1MwpBbGwgbmF0dXJhbCBQcmltYWwgUXVlZW4gaGFzIGFscmVhZHkgY29tZSB0byB0aGUgcmVzY3VlIG9mIHdvbWVuIGRlYWxpbmcgd2l0aAoKNjYKMDA6MDM6MTcuMzUzIC0tPiAwMDowMzoyMC4xMDkKbG93IGVuZXJneSwgaG9ybW9uYWwgY2hhb3MsIHBvb3Igc2xlZXAsIGJyYWluIGZvZywKCjY3CjAwOjAzOjIwLjEwOSAtLT4gMDA6MDM6MjIuNzY5CmFuZCBmZWVsaW5nIHVubGlrZSB0aGVtc2VsdmVzLiBOb3cgaXQncyB5b3VyIHR1cm4uIFlvdSBrbm93LAoKNjgKMDA6MDM6MjIuNzY5IC0tPiAwMDowMzoyNS41MzUKd2hlbiB5b3VyIGhvcm1vbmVzIGFyZSBzY3JlYW1pbmcgb3V0IGZvciBoZWxwLiBPa2F5LCB0aGF0J3Mga2luZCBvZiBjb29sLAoKNjkKMDA6MDM6MjUuODk5IC0tPiAwMDowMzoyOC4yNTQKcmlnaHQsIGxpa2UsIHRoYXQncyBsaWtlIGEsIHRoYXQncyBsaWtlLAoKNzAKMDA6MDM6MjguNDI2IC0tPiAwMDowMzozMS4zNjIKdGhlIGNvcHkncyBiZXR0ZXIsIHJpZ2h0LCB0aGUgcGhyYXNlIGlzIGJldHRlci4gV2hlbiB5b3VyIGJvZHkgbm8gbG9uZ2VyIGZlZWxzCgo3MQowMDowMzozMS4zNjIgLS0+IDAwOjAzOjM0LjIxNApsaWtlIHlvdXIgb3duLiBZb3Uga25vdywgYSBtaXJhY2xlIGZvciB3b21lbiB3aG8gZmVlbCB0aXJlZCwKCjcyCjAwOjAzOjM0LjIxNCAtLT4gMDA6MDM6MzcuMjAwCmZvZ2d5LCBhbmQgb3V0IG9mIGJhbGFuY2UuIFRoZSBhbmNpZW50IHNlY3JldCBiZWhpbmQgd29tZW4ncyBlbmVyZ3ksCgo3MwowMDowMzozNy4yMDAgLS0+IDAwOjAzOjQwLjI1NApob3Jtb25lcywgYW5kIHZpdGFsaXR5LiBJIGRvbid0IGxvdmUgdGhlIHdvcmQgdml0YWxpdHksIGl0J3MgYW4gQUkgd29yZCwKCjc0CjAwOjAzOjQwLjI1NCAtLT4gMDA6MDM6NDIuODg4CmJ1dCBsaWtlLCBub3QgYmFkLiBVbSwKCjc1CjAwOjAzOjQyLjg5OSAtLT4gMDA6MDM6NDYuMDc1CmlmIHlvdXIgZW5lcmd5LCBzbGVlcCwgYW5kIGhvcm1vbmVzIGFyZSBhbGwgb3ZlciB0aGUgcGxhY2UsCgo3NgowMDowMzo0Ni41ODkgLS0+IDAwOjAzOjUwLjAzMQp3aGVuIHlvdXIgYm9keSBpcyBiZWdnaW5nIGZvciBiZXR0ZXIgbnV0cml0aW9uLCB5b3VyIGhvcm1vbmVzIHNob3VsZCBub3QsCgo3NwowMDowMzo1MC4wMzEgLS0+IDAwOjAzOjU0LjYxNgp1aCwgY29udHJvbCB5b3VyIGxpZmUuIFRoZSB3b21hbiB5b3UgcmVtZW1iZXIgaXMgc3RpbGwgaW4gdGhlcmUsCgo3OAowMDowMzo1NC42MTYgLS0+IDAwOjAzOjU3LjA2OAppZiB5b3UncmUgdGlyZWQsIGZlZWxpbmcgdGlyZWQuIFNvIHRoZSBwb2ludCBpcywKCjc5CjAwOjAzOjU3LjA2OCAtLT4gMDA6MDM6NTkuMTEwCmFuZCBpdCBnYXZlIG1lLCBsaWtlLCBhIGJ1bmNoIG9mIHN0dWZmLCByaWdodCwgbGlrZSwKCjgwCjAwOjAzOjU5LjExMCAtLT4gMDA6MDQ6MDEuOTczCnlvdSBrbm93LCB1bSwKCjgxCjAwOjA0OjAxLjk4MyAtLT4gMDA6MDQ6MDYuNzgxCmtpbmQgb2YgYXNzZXNzbWVudCB0aGluZ3MsIHVtLAoKODIKMDA6MDQ6MDYuNzkyIC0tPiAwMDowNDowOC44MzQKdGhlIHRydXRoIGlzLCBpdCBzdGlsbCBoYXMgdGhlIG51dHJpdGlvbmFsIGdhcHMsCgo4MwowMDowNDowOC44MzQgLS0+IDAwOjA0OjExLjA5NAp3aGljaCBhZ2FpbiwgaXQgbWlnaHQganVzdCBjb21lIGZyb20gdGhlIFByaW1hbCBRdWVlbiB3ZWJzaXRlLCBvciB3aGF0ZXZlcidzIGluCgo4NAowMDowNDoxMS4wOTQgLS0+IDAwOjA0OjE0LjAzNwp0aGUgUHJpbWFsIFF1ZWVuIHByb2R1Y3QgZmlsZSBmcm9tIGluIGhlcmUsCgo4NQowMDowNDoxNC4wMzcgLS0+IDAwOjA0OjE2LjUyMQpJIHNob3VsZCBjaGVjayBhdCBzb21lIHBvaW50LCByaWdodCwgc28gYmVmb3JlIEkgeWVsbCBhdCBpdCBmb3IKCjg2CjAwOjA0OjE2LjUyMSAtLT4gMDA6MDQ6MjIuODE3Cm51dHJpdGlvbmFsIGdhcHMgYWxsIHRoZSB0aW1lLCB1bS4KCjg3CjAwOjA0OjIyLjgyOCAtLT4gMDA6MDQ6MjcuMTI0ClNvIHllYWgsIHRoZSBjb3B5IGxvb2tzIGxpa2UgYSBsb3QgYmV0dGVyLCBUaGlzIGlzIHJlYWxseSBpbnRlcmVzdGluZy4gVW0sCgo4OAowMDowNDoyNy4xMzUgLS0+IDAwOjA0OjMwLjUyMApzbyB3aGF0IGNhbiB5b3UgZG8gd2l0aCB0aGF0PyBXZWxsLCBmaXJzdCB0aGluZywgSSdtIGdvaW5nIHRvIGNyZWF0ZQoKODkKMDA6MDQ6MzAuNTIwIC0tPiAwMDowNDozMy41MDAKbGlrZSBhIHN0YXRpYyBhZCBjb25jZXB0LCB3aGVyZSBpdCBsb29rcyBsaWtlIHRoZSBjb3ZlciBvZiBhIG1hZ2F6aW5lCgo5MAowMDowNDozMy41MDAgLS0+IDAwOjA0OjM3LjAyNAptYWdhbG9nLCBhbmQgaXQgc2hvdWxkIGhhdmUgdGhpcyBraW5kIG9mIGNvcHkgeW91IGp1c3Qgc2hhcmVkLgoKOTEKMDA6MDQ6MzcuMDI0IC0tPiAwMDowNDozOC43MDAKY2FuIHlvdSBnaXZlIG1lIGEgZnJvbnQgcGFnZSBzdGFjayB0aGF0IHdvdWxkIGJlIHJlYWxseSBzdHJvbmcsCgo5MgowMDowNDozOC43MDAgLS0+IDAwOjA0OjQxLjc2MApidXQgaXQncyBkZWZpbml0ZWx5IGEgbGl0dGxlIGJpdCBBSSwgYnV0IEkgYWN0dWFsbHkgdGhpbmsgdGhpcyBjb3VsZCBiZQoKOTMKMDA6MDQ6NDEuNzYwIC0tPiAwMDowNDo0NC40NjMKYSBjb29sIGtpbmQgb2YgbGlrZSBzdGF0aWMgYWQsIGJlc2lkZXMgdGhlLCBJIGdldCB0aGUgaW1hZ2UsCgo5NAowMDowNDo0NC40NjMgLS0+IDAwOjA0OjQ3Ljc3MgppdCdzIGp1c3QgYSB2ZXJ5IEFJIGxvb2tpbmcgY2hpY2ssIGJ1dCBsaWtlLAoKOTUKMDA6MDQ6NDguNDI1IC0tPiAwMDowNDo1MS4xMjYKdGhpcyBjb3VsZCBiZSBhIHByZXR0eSBkb3BlLCBsaWtlLCBzdGF0aWMgYWQgdG8gdGVzdCwgd2hlcmUgaXQgbG9va3MKCjk2CjAwOjA0OjUxLjEyNiAtLT4gMDA6MDQ6NTQuMzg0Cmxpa2UgYSBtYWdhemluZSBjb3ZlciwgcmlnaHQ/IEl0IG1pZ2h0IGJyZWFrIHBlb3BsZSdzCgo5NwowMDowNDo1NC4zODQgLS0+IDAwOjA0OjU2LjU0OAp1aCwgSSBkb24ndCBrbm93LCBtYXliZSBsaWtlLAoKOTgKMDA6MDQ6NTYuNTQ4IC0tPiAwMDowNDo1OS4yNjUKeW91IGtub3csIGZvciBiYW5uZXIgYmxpbmRuZXNzIG9yIGZvciBsaWtlIHNjcm9sbCBibGluZG5lc3MgdG8ga2luZCBvZiBsaWtlCgo5OQowMDowNDo1OS43MTcgLS0+IDAwOjA1OjAzLjc5OApzdG9wIGFuZCBncmFiIHBlb3BsZSwgdW0sCgoxMDAKMDA6MDU6MDMuODA5IC0tPiAwMDowNTowNi4xNDQKc28gSSBsaWtlZCBpdC4gVGhlbiB3ZSdyZSB0YWxraW5nIGFib3V0IHByb21wdHM6CgoxMDEKMDA6MDU6MDYuMTQ0IC0tPiAwMDowNTowOS43NDIKY2FuIHlvdSBtYWtlIGl0IGxvb2sgYSBsaXR0bGUgbGVzcyBBSS1saWtlPwoKMTAyCjAwOjA1OjA5Ljc0MiAtLT4gMDA6MDU6MTIuMDI3CmFuZCBJJ20gbGlrZSwgeW8sIHNvIEkgYmFzaWNhbGx5IGdhdmUgaXQgdGhhdCBwcm9tcHQsCgoxMDMKMDA6MDU6MTMuMTcyIC0tPiAwMDowNToxNy41MTUKVGhpcyBpcyBWMi4gSXQncyBiZXR0ZXIuIEl0J3MgYSBsaXR0bGUgbGVzcyBBSS4KCjEwNAowMDowNToxNy41MTUgLS0+IDAwOjA1OjE5LjI0MgpzbyBtYXliZSBhIGxpdHRsZSB0b28gQUksIGJ1dCBpdCdzIGEgbGl0dGxlIGJldHRlciwgeW91IGNhbiBrZWVwCgoxMDUKMDA6MDU6MTkuMjQyIC0tPiAwMDowNToyMS42NjIKcGxheWluZyBhcm91bmQgd2l0aCB0aGUgaW1hZ2UsIEknbSBsaWtlLCBhbHJpZ2h0LCB0aGlzIGlzIHByZXR0eSBjb29sLCByaWdodCwKCjEwNgowMDowNToyMS42NjIgLS0+IDAwOjA1OjI1LjA2OQpzbywgb2theSwgdGhpcyBpcyBudW1iZXIgb25lLCBJJ2xsIHRha2UgdGhpcyBhbmQgZHJvcCBpdCBpbnRvIHRoZQoKMTA3CjAwOjA1OjI1LjA2OSAtLT4gMDA6MDU6MjcuMjY1CmNoYXQsIHVtLCBpdCdzIGEgdmlkZW8sCgoxMDgKMDA6MDU6MjguMzg1IC0tPiAwMDowNTozMC43MDMKc28gSSBkaWQgaXQgd2l0aCBsaWtlIFdpbGQgQmVsbHksIHJpZ2h0LCBzbyBJIGJhc2ljYWxseSBkaWQgYW5vdGhlcgoKMTA5CjAwOjA1OjMwLjcwMyAtLT4gMDA6MDU6MzMuMjAzCm9uZSB3aGVyZSBJJ20gbGlrZSwgaWYgSSBnbyBiYWNrIGhlcmUsCgoxMTAKMDA6MDU6MzUuMjgzIC0tPiAwMDowNTozOS4wNzgKVGhpcyBpcyBsaWtlIHRoZSBjbGFzc2ljIOKAnFNjcnViIOKAmFJ1c3TigJkgT2ZmIFlvdXIgQnJhaW4u4oCdCgoxMTEKMDA6MDU6MzkuNTkxIC0tPiAwMDowNTo0Mi44MTIKSSB0aGluayBEYXZpZCBEZXV0c2NoIGRpZCBpdC4gSGUgd3JvdGUgdGhlIGhlYWRsaW5lLiBTbyBzaW1pbGFybHksCgoxMTIKMDA6MDU6NDQuNjQyIC0tPiAwMDowNTo0Ny4xNzEKdGhpcyBwcm9tcHQsIEkgZGlkIGRpZmZlcmVudCwgcmlnaHQsIGhlcmUncyBhIGNsYXNzaWMgZGlyZWN0IG1haWwgcGllY2UsCgoxMTMKMDA6MDU6NDcuMTcxIC0tPiAwMDowNTo0OS43NDMKd2hhdCBJIHdhbnQgeW91IHRvIGRvLCB0YWtlIGEgYnVuY2ggb2YgdGhlIGhlYWRsaW5lcyBhbmQgc3ViaGVhZGVycwoKMTE0CjAwOjA1OjUwLjEzMyAtLT4gMDA6MDU6NTMuMDk5CmZyb20gdGhlIGRpcmVjdCBtYWlsIHBpZWNlIGFuZCBwcmV0ZW5kIHRoYXQgZGlyZWN0IG1haWwgcGllY2Ugd2FzIGJlaW5nIHdyaXR0ZW4KCjExNQowMDowNTo1My4wOTkgLS0+IDAwOjA1OjU1LjU1Ngpmb3IgV2lsZCBCZWxseSwgcHJldGVuZCBpdCdzIHRoZSA5MHMgb3IgMjAwMHMgb3Igd2hhdGV2ZXIsCgoxMTYKMDA6MDU6NTUuNTU2IC0tPiAwMDowNTo1OC4zNzEKZG9uJ3Qgd29ycnkgYWJvdXQgd2hhdCdzIGluIHRoZSBleGlzdGluZyBXaWxkIEJlbGx5IGJyYW5kIGFzc2V0cywKCjExNwowMDowNTo1OC4zNzEgLS0+IDAwOjA2OjAxLjc1MQpzbyBtdWNoIGJlc2lkZXMsIGxpa2UsIHByb2JhYmx5IHdobyB0aGUgZGVtbyBpcyBhbmQgd2hhdCBwYWluIHBvaW50cyBpdAoKMTE4CjAwOjA2OjAxLjc1MSAtLT4gMDA6MDY6MDQuMTI5Cm1vc3RseSBoZWxwcyB3aXRoLCByaWdodCwgc28gc2FtZSBwcm9tcHQsIHRoaXMgaXMganVzdCBub3cgaW4gYSBib3gsCgoxMTkKMDA6MDY6MDQuMTI5IC0tPiAwMDowNjowNi4xNTQKaW5zdGVhZCBvZiBoYXZpbmcgdG8sIGxpa2UsIGRvIHRoZSBmaXJzdCBvbmUsIGJlIGxpa2UsCgoxMjAKMDA6MDY6MDYuMTU0IC0tPiAwMDowNjowOS4yMjcKaGV5LCB0aGlzIHN1Y2tzLCBpdCB3YXMgdG8gY3V0IHRvIHRoZSBjaGFzZSwgc28gdGhlbiwKCjEyMQowMDowNjoxMC43MTUgLS0+IDAwOjA2OjEzLjU1OQppdCBkaWQgaXQsIHJpZ2h0LCBpdCB3cm90ZSwgdGhpcyBpcyBhbG1vc3QgbGlrZSBhIGNvdmVyIHN0YXJ0aW5nIHBhY2thZ2UsCgoxMjIKMDA6MDY6MTMuNTU5IC0tPiAwMDowNjoxNS43NzEKcmlnaHQsIGlzIHlvdXIgZG9nIHNsb3dpbmcgZG93biwgc2NyYXRjaGluZywKCjEyMwowMDowNjoxNS43NzEgLS0+IDAwOjA2OjE4LjQxNgpzaGVkZGluZywgb3IgaGF2aW5nIG1lc3N5IGJhdGhyb29tIHByb2JsZW1zLCBkb24ndCBqdXN0IGFjY2VwdCBpdCBhcyBwYXJ0IG9mIGJlaW5nCgoxMjQKMDA6MDY6MTguNDE2IC0tPiAwMDowNjoyMi4xMTAKb2xkZXIsIGEgcmVtYXJrYWJsZSBwdW1wa2luIGZsYXZvcmVkIHByb2Jpb3RpYyBwb3dkZXIgc3VwcG9ydHMgeW91ciBkb2cncyBndXQsCgoxMjUKMDA6MDY6MjIuMTEwIC0tPiAwMDowNjoyNS45OTEKc2tpbiwgam9pbnRzLCBlbmVyZ3ksIGFuZCBoZWFsdGh5IGFnaW5nLCB3aXRoIG9uZSBkYWlseSBzY29vcCwKCjEyNgowMDowNjoyNS45OTEgLS0+IDAwOjA2OjI4LjExMwp0aGUgY2FuaW5lIGxvbmdldml0eSBicmVha3Rocm91Z2ggdGhhdCBzdGFydHMgaW4geW91ciBkb2cncyBiZWxseSwKCjEyNwowMDowNjoyOC4xMTMgLS0+IDAwOjA2OjMyLjk2NApuZXcgcmVzZWFyY2ggaW50byBoZWFsdGh5IG1ldGh5bGF0aW9uIHJldmVhbHMgd2h5IHRoZSByaWdodCBkb2ctZnJpZW5kbHkgcHJvYmlvdGljcwoKMTI4CjAwOjA2OjMyLjk2NCAtLT4gMDA6MDY6MzUuMTQ2CnN1cHBvcnQgdGhlIHN5c3RlbSBiZWhpbmQgZGlnZXN0aW9uLCBpbW11bml0eSwgc2tpbiwKCjEyOQowMDowNjozNS4zODggLS0+IDAwOjA2OjM5LjA3Mwptb3ZlbWVudCwgYW5kIGV2ZXJ5ZGF5IGVuZXJneSwgdGhlIHJlYWwgcmVhc29uIHlvdXIgZG9nJ3MgaGVhbHRoIHN0YXJ0cyBzbGlwcGluZyBpbiBzbwoKMTMwCjAwOjA2OjM5LjA3MyAtLT4gMDA6MDY6NDIuODg1Cm1hbnkgZGlmZmVyZW50IHdheXMsIHVtLCByaWdodCwgc28gYmFzaWNhbGx5IGdpdmluZyBhLAoKMTMxCjAwOjA2OjQyLjg4NSAtLT4gMDA6MDY6NDQuOTQ4Cmxpa2UsIGEgaGVhZGxpbmUga2luZCBvZiBjb3ZlciB0aGluZywKCjEzMgowMDowNjo0NC45NDggLS0+IDAwOjA2OjQ3LjY1Ngp1bSwKCjEzMwowMDowNjo0Ny42NjcgLS0+IDAwOjA2OjUwLjE3OAppcyB5b3VyIGRvZydzIGJlbGx5IHRyeWluZyB0byB0ZWxsIHlvdSBzb21ldGhpbmcsIGRvZXMgeW91ciBkb2cgbG9vayBvbGRlcgoKMTM0CjAwOjA2OjUwLjE3OCAtLT4gMDA6MDY6NTMuMzU1CnRoYW4gaGUgZmVlbHMsIGJlZm9yZSB5b3UgYnV5IGFub3RoZXIgcGlsbCwgcmVhZCB0aGlzLCB1bSwgdGhlIGxpdHRsZSBzY29vcAoKMTM1CjAwOjA2OjUzLjM1NSAtLT4gMDA6MDY6NTYuNjY1CnRoYXQgY2hhbmdlcyB5b3VyIGRvZydzIHdob2xlIGRheSwgaXMgeW91ciBkb2cgc2xvd2luZyBkb3duIGJlY2F1c2Ugb2YgYWdlCgoxMzYKMDA6MDY6NTYuNjY1IC0tPiAwMDowNzowMC45MDkKb3IgYmVjYXVzZSBoaXMgZ3V0IG5lZWRzIGhlbHAsIHRoZSBvbGQgZG9nIHByb2JsZW1zIG1hbnkgcGF3LXJlbnRzIGFyZSBsZWFybmluZwoKMTM3CjAwOjA3OjAwLjkwOSAtLT4gMDA6MDc6MDQuMzk0CnRvIHN1cHBvcnQgbmF0dXJhbGx5LCBhIGhlYWx0aGllciBkb2cgYmVnaW5zIHdpdGggYSBoZWFsdGhpZXIgYmVsbHksCgoxMzgKMDA6MDc6MDQuNzM3IC0tPiAwMDowNzowNy4zMDEKaWYgeW91ciBkb2cgaGFzIGl0Y2h5IHNraW4sIGEgZHVsbCBjb2F0LCBvciBiYXRocm9vbSB0cm91YmxlLAoKMTM5CjAwOjA3OjA3LjMwMSAtLT4gMDA6MDc6MTAuMTMxCmRvbid0IGlnbm9yZSB0aGlzLCB1bSwKCjE0MAowMDowNzoxMC4xNDIgLS0+IDAwOjA3OjEzLjUxNwp5b3Uga25vdywgY291bGQgdGhlIHNlY3JldCB0byBhIG1vcmUgYWN0aXZlLAoKMTQxCjAwOjA3OjEzLjUxNyAtLT4gMDA6MDc6MTUuNzM5CmNvbWZvcnRhYmxlIGRvZyBiZSBoaWRpbmcgaW4gaGlzIGZvb2QgYm93bCwgcG9pbnQgaXMsIGxpa2UsIGp1c3QsCgoxNDIKMDA6MDc6MTUuNzk0IC0tPiAwMDowNzoxNy44NzIKbGlrZSwgdGhlIGtpbmQgb2Ygd2F5IGJldHRlci4gTm93LAoKMTQzCjAwOjA3OjE3Ljg3MiAtLT4gMDA6MDc6MTkuNzIyCnlvdSBtaWdodCBzZWUgYWxsIHRoaXMgYW5kIGdvLCBhbHJpZ2h0LCB3ZWxsLCB3aGF0IGNhbiBJIGRvIHdpdGgKCjE0NAowMDowNzoxOS43MjIgLS0+IDAwOjA3OjIyLjA1OAp0aGF0IGluLCBsaWtlLCByZWFsIGxpZmUsIHRob3VnaD8KCjE0NQowMDowNzoyMi4yMTUgLS0+IDAwOjA3OjI0LjY1OApTbywgd2hhdCBJIGRpZCB3YXMsIGxpa2UsIGFscmlnaHQsIGdyZWF0LCBpZiB5b3UncmUgdGFraW5nIHNvbWUgb2YgdGhlCgoxNDYKMDA6MDc6MjQuNjU4IC0tPiAwMDowNzoyOC44OTYKc3Ryb25nZXN0IGN1cmlvc2l0eS1oZWF2eSBidWxsZXRzIGFuZCBoZWFkbGluZXMgYW5kIHN1Yi1oZWFkbGluZXMgYW5kIHdlYXZlIHRoZW0gaW50byBhIHJlYWxseSBjb2hlcmVudCwKCjE0NwowMDowNzoyOC44OTYgLS0+IDAwOjA3OjMxLjE3NAp0d28tbWludXRlLWxvbmcgVUdDIGFkIG9mIGEgd29tYW4gc3Bva2VzcGVyc29uLAoKMTQ4CjAwOjA3OjMxLjUxMiAtLT4gMDA6MDc6MzQuMjg3CmFnZSA1MiwgdGFsa2luZyBpbiBhIHZlcnkgY29udmVyc2F0aW9uYWwgd2F5LAoKMTQ5CjAwOjA3OjM0LjYzNiAtLT4gMDA6MDc6MzYuODc4CndpdGggdGhlIENUQSBiZWluZyB0byBnbyBjaGVjayBvdXQgV2lsZCBCZWxseSBub3csCgoxNTAKMDA6MDc6MzcuMDY3IC0tPiAwMDowNzozOS41MjYKbGluayBiZWxvdywgd2hhdCB3b3VsZCBpdCBsb29rIGxpa2U/IFVtLAoKMTUxCjAwOjA3OjM5LjUzNyAtLT4gMDA6MDc6NDEuNzkyCnNvIGl0IGRpZCBpdC4gQnV0IEkgdGhpbmssIGxpa2UsCgoxNTIKMDA6MDc6NDEuNzkyIC0tPiAwMDowNzo0My41NjcKdGhlIHdheSB0aGlzIGlzIG5vdywgdGhpcywgbGlrZSwgZmlyc3Qgc2NyaXB0IGlzIHNvcnQgb2YsIGxpa2UsIGdlbmVyaWMteSwKCjE1MwowMDowNzo0My41NjcgLS0+IDAwOjA3OjQ2LjkzMQpsaWtlLAoKMTU0CjAwOjA3OjQ2LjkzMSAtLT4gMDA6MDc6NTAuMjk1Cm9rYXksCgoxNTUKMDA6MDc6NTAuMjk1IC0tPiAwMDowNzo1My42NTkKbGlrZSwKCjE1NgowMDowNzo1My42NTkgLS0+IDAwOjA3OjU3LjAyMgpva2F5LAoKMTU3CjAwOjA3OjU3LjAyMiAtLT4gMDA6MDc6NTkuMjgzCmRvZyBwYXJlbnRzLCBxdWljayBxdWVzdGlvbiwgaXMgeW91ciBkb2cgc2NyYXRjaGluZywgc2hlZGRpbmcsCgoxNTgKMDA6MDc6NTkuMjgzIC0tPiAwMDowODowMi4wMDIKaGF2aW5nIHdlaXJkIGJhdGhyb29tIGRheXMsIG9yIGp1c3Qgbm90IHF1aXRlIGFjdGluZyBsaWtlIGhpbXNlbGY/CgoxNTkKMDA6MDg6MDIuMTYyIC0tPiAwMDowODowNC4zNjkKQmVjYXVzZSBJIHVzZWQgdG8gdGhpbmsgdGhvc2Ugd2VyZSBmb3VyIHNlcGFyYXRlIHRoaW5ncy4KCjE2MAowMDowODowNC4zNjkgLS0+IDAwOjA4OjA2LjI2MQpUaGUgbW9yZSBJIGxvb2tlZCBpbnRvIGl0LCB0aGUgbW9yZSBJIGtlcHQgY29taW5nIGJhY2sgdG8gdGhlCgoxNjEKMDA6MDg6MDYuMjYxIC0tPiAwMDowODowOS43MzIKc2FtZSBwbGFjZSwgeW91ciBkb2cncyBiZWxseS4gQW5kIHRoYXQgaXMgd2h5IFdpbGQgQmVsbHkgY2F1Z2h0IG15IGF0dGVudGlvbiwKCjE2MgowMDowODowOS43MzIgLS0+IDAwOjA4OjExLjczNgp0aGlzIGlzIG5vdCBhbm90aGVyIHBpbGwgeW91IGhhdmUgdG8gaGlkZSBpbiBjaGVlc2UgYW5kIGhvcGUgeW91cgoKMTYzCjAwOjA4OjExLjczNiAtLT4gMDA6MDg6MTMuODQxCmRvZyBzd2FsbG93cy4gSXQgaXMgYSBjYW5pbmUgbG9uZ2V2aXR5IHByb2Jpb3RpYwoKMTY0CjAwOjA4OjE0LjIwNSAtLT4gMDA6MDg6MTcuMzYwCnlvdSBzcHJpbmtsZSBvdmVyIGZvb2Qgb25jZSBhIGRheS4gVGhlIHdob2xlIGlkZWEgaXMgdG8gc3VwcG9ydAoKMTY1CjAwOjA4OjE3LjU3NCAtLT4gMDA6MDg6MjEuMDAxCnRoZSBkb2cgZnJvbSB0aGUgaW5zaWRlIG91dCwgc3RhcnRpbmcgd2l0aCB0aGUgZ3V0LiBVbSwKCjE2NgowMDowODoyMS4wMTIgLS0+IDAwOjA4OjI0LjQzOQphbmQgdGhlbiBpdCBraW5kIG9mIGdvZXMgaW50byB0aGUgbWVjaGFuaXNtIHBhcnQgYSBiaXQsIGFuZCwKCjE2NwowMDowODoyNC41MzYgLS0+IDAwOjA4OjI2LjgwNwpsaWtlLCB3aGF0ZXZlci4gU28sIGxpa2UsIG9rYXksIHRoaXMgaXMgYSwKCjE2OAowMDowODoyNi44MDcgLS0+IDAwOjA4OjMwLjg0OAp0aGlz4oCUdGhlIGZpcnN0IG9uZSB3YXMgc2hpdHR5LiBUaGlzIGlzIHRoZSBzZWNvbmQgdmVyc2lvbiBvZiBpdCwKCjE2OQowMDowODozMC44NDggLS0+IDAwOjA4OjMzLjM1Mwp0aGlzIGlzIHJlYWxseSB3aGF0IEkgd2FzIGdvaW5nIGFmdGVyLCBhbmQgdGhpcyBpcyBiYXNpY2FsbHkgYmFzZWQgb2ZmCgoxNzAKMDA6MDg6MzMuMzUzIC0tPiAwMDowODozOC4xNTEKY29weSBmb3IgYW5vdGhlciBicmFuZC4gQmFzaWNhbGx5LCB0aGlzIEx1bWFMaWZ0IGlzbid0IGEKCjE3MQowMDowODozOC4xNTEgLS0+IDAwOjA4OjQyLjkwNgpyZWFsIGJyYW5kLCBidXQgSSBiYXNpY2FsbHkgdG9vayBhIHJlYWwgWWFwcGVyIGFkIGZvcgoKMTcyCjAwOjA4OjQyLjkwNiAtLT4gMDA6MDg6NDYuMDI1CmEgcmVhbCBicmFuZCB0aGF0IEknbSBkb2luZyBzdHVmZiBmb3IsIGFuZCB0aGVuIGhhZCBpdCB0dXJuIGl0CgoxNzMKMDA6MDg6NDYuMDI1IC0tPiAwMDowODo0OC40MjQKaW50bywgdW0sCgoxNzQKMDA6MDg6NDguNDM0IC0tPiAwMDowODo1MC42NDYKeW91IGtub3csIGZvciBhIGRpZmZlcmVudCBwcm9kdWN0LCB0aGF0IHdheSBpdCdzIG5vdCBhLAoKMTc1CjAwOjA4OjUxLjc4OSAtLT4gMDA6MDg6NTMuODEyCmxpa2UsIHVtLCB5b3Uga25vdywgSSBjYW4ndCB1c2UgdGhlaXIsCgoxNzYKMDA6MDg6NTMuODU3IC0tPiAwMDowODo1NS43NzAKSSBjYW4ndCBnaXZlIHlvdSBndXlzIHRoZWlyIGFkLCBidXQgSSBjYW4gZ2l2ZSB5b3UgdGhpcyBvbmUsCgoxNzcKMDA6MDg6NTUuNzcwIC0tPiAwMDowODo1OC45MDMKdW0sIGFuZCBtYWRlIGl0IGJlY29tZSBMdW1hTGlmdC4gU28sCgoxNzgKMDA6MDg6NTguOTAzIC0tPiAwMDowOTowMS4zODMKYWxyaWdodCwgbmljZSwgaGVyZSdzIGFub3RoZXIgWWFwcGVyIGFkIGZvciBhIHRvdGFsbHkgZGlmZmVyZW50IGJyYW5kLAoKMTc5CjAwOjA5OjAxLjM4MyAtLT4gMDA6MDk6MDQuMDIyCmZvY3VzIG9uIGFuYWx5emluZyB0aGUgdm9pY2UgYW5kIHRvbmUgaGVyZSwgdGhlbiBJIHdhbnQgeW91IHRvIG91dGxpbmUKCjE4MAowMDowOTowNC4wMjIgLS0+IDAwOjA5OjA3LjE4MwphIG5ldyBZYXBwZXIgYWQgZm9yIFdpbGQgQmVsbHkgdGhhdCBzdGlsbCBpbmNvcnBvcmF0ZXMgdGhlIGRpcmVjdC1yZXNwb25zZSBlbGVtZW50cyB3ZQoKMTgxCjAwOjA5OjA3LjE4MyAtLT4gMDA6MDk6MTAuNjk3CmdlbmVyYXRlZCBmb3IgV2lsZCBCZWxseSBhcyBtdWNoIGFzIHdlIGNhbiwgd2l0aG91dCBpdCBiZWluZyBpbmNvbmdydWVudCBvciB3ZWlyZC4KCjE4MgowMDowOToxMC42OTcgLS0+IDAwOjA5OjEzLjE4MQpJdCBjYW4gYmUgYSBzaW1pbGFyIGxlbmd0aCBhcyB0aGlzIHJlZmVyZW5jZSBhZC4KCjE4MwowMDowOToxMy4xODEgLS0+IDAwOjA5OjE1LjY5OApDYW4geW91IG91dGxpbmUgaXQgZm9yIG1lIGZpcnN0PyBBbmQgaXQgb3V0bGluZWQgaXQgZm9yIG1lLgoKMTg0CjAwOjA5OjE1LjgwMiAtLT4gMDA6MDk6MTcuNjkxCnRvIGJlIGhvbmVzdCB3aXRoIHlvdSwgdGhlIG91dGxpbmUncyBraW5kIG9mIGxvbmcsIHNvIEkganVzdCBzb3J0CgoxODUKMDA6MDk6MTcuNjkxIC0tPiAwMDowOToyMS4yNzMKb2Ygc2Nyb2xsIHRocm91Z2ggaXQsIGJlY2F1c2UgSSdtIGxpa2UsIGJsYWgsIGJsYWgsIGJsYWgsIHVtLAoKMTg2CjAwOjA5OjIxLjI4NCAtLT4gMDA6MDk6MjMuNDE1CnlvdSBrbm93LCB0aGUgZGlyZWN0LXJlc3BvbnNlIGVsZW1lbnRzIHRvIHdlYXZlIGluOgoKMTg3CjAwOjA5OjIzLjY4NCAtLT4gMDA6MDk6MjcuNTMyCnNjb29wLCBzcHJpbmtsZSwgc2VydmUsIHVtLAoKMTg4CjAwOjA5OjI3LjU0MiAtLT4gMDA6MDk6MjkuOTczCm5vdyBvYnZpb3VzbHkgSSBjb3VsZCd2ZSBnaXZlbiBpdCB0d2Vha3Mgb24gd2hpY2ggb25lcyB0byB1c2UsCgoxODkKMDA6MDk6MjkuOTczIC0tPiAwMDowOTozMy43NTgKYnV0IEkgZGlkbid0IGhlcmUsIHVtLAoKMTkwCjAwOjA5OjMzLjc2OSAtLT4gMDA6MDk6MzYuMDYxCmJ1dCBhbHNvIGlmIEksIEkgZ3Vlc3MsIHdoZW4gSSBkaWQgbG9vayBhdCB0aGUgb3V0bGluZSwgSQoKMTkxCjAwOjA5OjM2LjA2MSAtLT4gMDA6MDk6MzguMTcxCndhcyBsaWtlLCB5b3UncmUgdHJ5aW5nIHRvIHN3aXBlIHRoZSBhZCB0b28gZGlyZWN0bHksCgoxOTIKMDA6MDk6MzkuMTAxIC0tPiAwMDowOTo0Mi4yNjcKc28gYmFzaWNhbGx5IGl0IGhhZCwgSSBndWVzcywgc28geWVhaCwgaXQncyBhY3R1YWxseSBpbXBvcnRhbnQsIHNvIGl0IHN0YXJ0ZWQKCjE5MwowMDowOTo0Mi4yNjcgLS0+IDAwOjA5OjQ0LjUwNgp3aXRoLCB1bSwgdGhhdCdzIGEgYml0IGxvbmcsCgoxOTQKMDA6MDk6NDQuNTA2IC0tPiAwMDowOTo0Ni42OTEKaXQgd2FzIGxpa2XigJRva2F5LAoKMTk1CjAwOjA5OjQ3LjEwOCAtLT4gMDA6MDk6NTAuMzAwCnRoZSBzd2lwZSBhZCB3YXMgYWJvdXQgYSBkYXVnaHRlciBnaXZpbmcgYSBza2luY2FyZSB0aGluZyB0byB0aGUgbW9tCgoxOTYKMDA6MDk6NTAuMzAwIC0tPiAwMDowOTo1My4zNTAKZm9yIGhlciBiaXJ0aGRheSBhbmQgdGhlIG1vbSBiZWluZywgbGlrZSwgb2ZmZW5kZWQsIGFuZCBzbyBpdCB3YXMgbGlrZSwKCjE5NwowMDowOTo1My4zNTAgLS0+IDAwOjA5OjU2LjEwNQp0aGUgZGF1Z2h0ZXIgZ2l2aW5nIGhlciBtb20gdGhlIHByb2R1Y3QgZmVlbHMgc2xpZ2h0bHkgaW5zdWx0aW5nLAoKMTk4CjAwOjA5OjU2LjY0MCAtLT4gMDA6MDk6NTguNjUzCnlvdSBrbm93LCB3aGF0IGRvZXMgbXkgZGF1Z2h0ZXIsCgoxOTkKMDA6MDk6NTguOTUzIC0tPiAwMDoxMDowMS43NTEKeW91IGtub3csIGFuZCB0aGUgc3dpcGUgYWQgaXMgbGlrZSwgd2hhdCBoYXMgbXkgZGF1Z2h0ZXIgYmVlbiBub3RpY2luZwoKMjAwCjAwOjEwOjAxLjc1MSAtLT4gMDA6MTA6MDQuMzUzCmFib3V0IG1lPyBBbmQgc28sIGZvciBXaWxkIEJlbGx5LCB3ZSBuZWVkIGFuIGVxdWl2YWxlbnQgZW1vdGlvbmFsIGhvb2suCgoyMDEKMDA6MTA6MDQuMzUzIC0tPiAwMDoxMDowNi4yNzcKU28gaXQgZ29lcyBsaWtlLCBteSBkYXVnaHRlciBzZW50IG1lIHRoaXMgcHJvYmlvdGljIGZvciBteSBkb2csCgoyMDIKMDA6MTA6MDYuMjc3IC0tPiAwMDoxMDowOS4wOTIKYW5kIEkgd2FzIGhvbmVzdGx5IGEgbGl0dGxlIG9mZmVuZGVkLCBhbmQgaXQncyBsaWtlLCB0aGUgcXVlc3Rpb24gYmVjb21lcyBpcwoKMjAzCjAwOjEwOjA5LjA5MiAtLT4gMDA6MTA6MTEuODg5CnNoZSB0cnlpbmcgdG8gdGVsbCBtZSBteSBkb2cgbG9va3Mgb2xkPyBSaWdodD8KCjIwNAowMDoxMDoxMi4xMDYgLS0+IDAwOjEwOjE0LjY1MQpCdXQgdGhlbiwgaXQncyBsaWtlLCB3aGVuIHlvdSByZWFsbHkgdGhpbmsgYWJvdXQgaXQsIGl0J3MgbGlrZSwKCjIwNQowMDoxMDoxNC42NjUgLS0+IDAwOjEwOjE3LjI5NQp0aGF0IGRvZXNuJ3QgcmVhbGx5IG1ha2UgYSBsb3Qgb2Ygc2Vuc2UsIHJpZ2h0PyBTbywKCjIwNgowMDoxMDoxOC4xNTEgLS0+IDAwOjEwOjIwLjA1OApJIG1lYW4sIG5vdCBiYWQsIGJ1dCBJIHRoaW5rIHlvdSdyZSB0cnlpbmcgdG8gc3dpcGUgdGhlIGFkIHRvbwoKMjA3CjAwOjEwOjIwLjA1OCAtLT4gMDA6MTA6MjIuOTY5CmRpcmVjdGx5LiBJIGRvbid0IGtub3cgaWYgaXQgd2FzIHJlYWxseSBhIGNvbXBlbGxpbmcgZHluYW1pYyB0aGF0IGNvbWVzIGZyb20KCjIwOAowMDoxMDoyMi45NjkgLS0+IDAwOjEwOjI2LjY1MgphIGRhdWdodGVyIGdpdmluZyBhIG1vbSBhIHByb2Jpb3RpYyBmb3IgaGVyIGRvZywKCjIwOQowMDoxMDoyNi42NTIgLS0+IDAwOjEwOjI4LjkwNgphbmQgaWYgdGhlcmUgaXMsIHRoZSBtb20ncyBwcm9iYWJseSBub3QsIGxpa2UsIG9mZmVuZGVkLAoKMjEwCjAwOjEwOjI5LjI4MiAtLT4gMDA6MTA6MzEuMzI3CmFuZCBJIHNhaWQsIHlvdSBuZWVkIHRvIGdldCBvdXRzaWRlIG9mIHRoZSByZWZlcmVuY2UgYWQgbW9yZSBoZXJlCgoyMTEKMDA6MTA6MzEuMzI3IC0tPiAwMDoxMDozMy4zNTMKdG8gdHJ5IGFnYWluLiBBbmQgaXQncyBsaWtlLCBvaCwgeWVhaCwgeWVhaCwgSSBhZ3JlZS4KCjIxMgowMDoxMDozMy4zNTMgLS0+IDAwOjEwOjM2LjE4NgpyaWdodD8gU28sIHRoZW4gaXQgZ2F2ZSBtZSBhIG11Y2ggYmV0dGVyIHRoaW5nLAoKMjEzCjAwOjEwOjM2LjE4NiAtLT4gMDA6MTA6MzguNjU5CndoZXJlIGl0J3MgbGlrZSwgeWVhaCwgeW91J3JlIHJpZ2h0LiBIb3cgYWJvdXQsIGxpa2UsIHNoZSBiZWNvbWVzIHNsaWdodGx5IG9ic2Vzc2VkIHRvCgoyMTQKMDA6MTA6MzguNjU5IC0tPiAwMDoxMDo0Mi4xNjcKZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCBoZXIgZG9nLiBTaGUncyBjaGVja2luZyB0aGUgc3Rvb2wsCgoyMTUKMDA6MTA6NDIuMTY3IC0tPiAwMDoxMDo0NC4zNjkKYmxhaCwgYmxhaCwgYmxhaC4gU29tZXRoaW5nIGxpa2UsIG9rYXksCgoyMTYKMDA6MTA6NDQuMzY5IC0tPiAwMDoxMDo0Ni40NDgKSSBuZWVkIHRvIGNvbmZlc3Mgc29tZXRoaW5nIHNsaWdodGx5IGRpc2d1c3RpbmcuCgoyMTcKMDA6MTA6NDYuNDQ4IC0tPiAwMDoxMDo0OS4yMzEKSSBzdGFydGVkIHRha2luZyBwaWN0dXJlcyBvZiBteSBkb2cncyBwb29wLiBOb3QgZm9yIEluc3RhZ3JhbS4KCjIxOAowMDoxMDo0OS4yMzEgLS0+IDAwOjEwOjUyLjAwOApJIHdhcyB0cnlpbmcgdG8gZmlndXJlIG91dCB3aHkgaGUgd2FzIHNjcmF0Y2hpbmcsIHNoZWRkaW5nLCBzbG93aW5nIGRvd24gb24KCjIxOQowMDoxMDo1Mi4wMDggLS0+IDAwOjEwOjU0LjI2Mwp3YWxrcyBhbmQgaGF2aW5nIHRoZXNlIHdlaXJkIGJhdGhyb29tIGRheXMuIFJpZ2h0PwoKMjIwCjAwOjEwOjU0LjI2MyAtLT4gMDA6MTA6NTcuMDQ2CkknbSBsaWtlLCBhbGwgcmlnaHQsIGNvb2wuIFRoYXQncyBkZWZpbml0ZWx5IGJldHRlciwgYW5kIGl0IGtpbmQgb2YgZ2F2ZSBtZQoKMjIxCjAwOjEwOjU3LjA0NiAtLT4gMDA6MTA6NTkuODAyCnRoZSByZXN0IG9mIHRoZSBvdXRsaW5lLCBhbmQgdGhlbiBJJ20gbGlrZSwKCjIyMgowMDoxMTowMC45NTQgLS0+IDAwOjExOjA0LjEzNgpva2F5LCBJIGRpZCwgSSBkaWQgd2FudCB0byBkb3VibGUgY2hlY2sgd2hhdCBwYXJ0cyBhcmUgaW5zcGlyZWQgYnkKCjIyMwowMDoxMTowNC4xMzYgLS0+IDAwOjExOjA2LjI4NAp0aGUgZGlyZWN0IG1haWwsIHlvdSBrbm93LCBoZWFkbGluZSwgc3ViaGVhZGVyLAoKMjI0CjAwOjExOjA2LjI4NCAtLT4gMDA6MTE6MDguNjA4CmJhbmssIGFuZCBpdCBnYXZlIG1lIGEgbGlzdCBvZiB0aG9zZSB0aGluZ3MuIE9rYXksIGNvb2wsCgoyMjUKMDA6MTE6MDguOTUwIC0tPiAwMDoxMToxMC45NjAKZ29vZC4gWW91J3JlIGFjdHVhbGx5LCB5b3Uga25vdywKCjIyNgowMDoxMToxMC45NjAgLS0+IDAwOjExOjEzLjU1MAp1c2luZyB0aGUgcmVmZXJlbmNlIHN0dWZmIGFib3ZlLiBHbyBhbmQgd3JpdGUgdGhlIFlhcHBlciBhZCwKCjIyNwowMDoxMToxMy41NTAgLS0+IDAwOjExOjE1LjYxOQpwbGVhc2UsIGFuZCB0aGVuIGl0IGRpZCBpdCwgYW5kIGl0J3Mgbm90LCBsaWtlLAoKMjI4CjAwOjExOjE1LjYxOSAtLT4gMDA6MTE6MTcuOTExCnRoZSBwZXJmZWN0IFlhcHBlciBhZCwgYnV0IHRoZSB2b2ljZSBpcyB3YXkgYmV0dGVyIHRoYW4gdGhpcyBvbmUuCgoyMjkKMDA6MTE6MTcuOTc1IC0tPiAwMDoxMToyMC42NDEKdGhpcyBpcyB3aGVyZSBpdCdzIGltcG9ydGFudCB3aXRoLCBsaWtlLCBhIHJlZmVyZW5jZSBhZCwgcmlnaHQ/CgoyMzAKMDA6MTE6MjAuNjQxIC0tPiAwMDoxMToyMy4zNzAKU28sIG9rYXksIEkgbmVlZCB0byBjb25mZXNzIHNvbWV0aGluZyBzbGlnaHRseSBkaXNndXN0aW5nLgoKMjMxCjAwOjExOjIzLjM3MCAtLT4gMDA6MTE6MjYuMjI5Ckkgc3RhcnRlZCB0YWtpbmcgcGljdHVyZXMgb2YgbXkgZG9nJ3MgcG9vcC4gSXQncyBhIGdvb2QgaG9vaywKCjIzMgowMDoxMToyNi43NDggLS0+IDAwOjExOjI4Ljk4NApyaWdodD8gTm90IGZvciBJbnN0YWdyYW0sIG9idmlvdXNseS4KCjIzMwowMDoxMToyOC45ODQgLS0+IDAwOjExOjMxLjExNgpJIHdhcyB0YWtpbmcgcGljdHVyZXMgZm9yIG1lIGJlY2F1c2UgSSB3YXMgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hhdAoKMjM0CjAwOjExOjMxLjExNiAtLT4gMDA6MTE6MzMuMzYwCndhcyBnb2luZyBvbiB3aXRoIGhpbS4gSGUgd2FzIHNjcmF0Y2hpbmcgaGlzIHBhd3MgbW9yZSwKCjIzNQowMDoxMTozMy4zNjAgLS0+IDAwOjExOjM1Ljk3MwpoZSB3YXMgc2hlZGRpbmcgZXZlcnl3aGVyZSwgaGlzIHdhbGtzIHdlcmUgZ2V0dGluZyBzaG9ydGVyLAoKMjM2CjAwOjExOjM1Ljk3MyAtLT4gMDA6MTE6MzguNzI5CmFuZCB0aGVuIHRoZXJlIHdlcmUgdGhlc2Ugd2VpcmQgYmF0aHJvb20gZGF5cyB3aGVyZSBJIHdhcyBzdGFuZGluZyBpbiB0aGUKCjIzNwowMDoxMTozOC43MjkgLS0+IDAwOjExOjQxLjI3Mgp5YXJkLCBzdGFyaW5nIGF0IHRoZSBncm91bmQgbGlrZSBJIHdhcyBjb25kdWN0aW5nIGEgc2NpZW50aWZpYyBzdHVkeSwKCjIzOAowMDoxMTo0MS4yNzIgLS0+IDAwOjExOjQzLjU1OQpBbmQgaWYgeW91IGhhdmUgYW4gb2xkZXIgZG9nLCB5b3Uga25vdyBleGFjdGx5IHdoYXQgSSBtZWFuLgoKMjM5CjAwOjExOjQzLjU1OSAtLT4gMDA6MTE6NDcuMDQ0Ck5vdGhpbmcgaXMgZHJhbWF0aWMgZW5vdWdoIHRvIGV4cGxhaW4gaXQuIEhlIGp1c3QgZG9lc24ndCBzZWVtIHF1aXRlIGxpa2UgaGltc2VsZi4KCjI0MAowMDoxMTo0Ny43MTggLS0+IDAwOjExOjUwLjMzOQpTbywgSSBoYWQgYSBkaWZmZXJlbnQgdGhlb3J5IGZvciBldmVyeSBzeW1wdG9tLiBNYXliZSBpdCB3YXMgaGlzIGZvb2QuCgoyNDEKMDA6MTE6NTAuMzgzIC0tPiAwMDoxMTo1Mi40NzEKTWF5YmUgaXQgd2FzIGhpcyB0cmVhdHMuIE1heWJlIGhlIG5lZWRlZCBtb3JlIGV4ZXJjaXNlLgoKMjQyCjAwOjExOjUyLjQ3MyAtLT4gMDA6MTE6NTUuNDA0Ck1heWJlIGhlIG5lZWRlZCBsZXNzIGV4ZXJjaXNlLiBNYXliZSBoaXMgc2tpbiB3YXMganVzdCBzZW5zaXRpdmUuCgoyNDMKMDA6MTE6NTUuNDA0IC0tPiAwMDoxMTo1Ny45NzkKTWF5YmUgaGUgd2FzIGdldHRpbmcgb2xkLiBJIGhhZCBhIHNraW4gdGhlb3J5LCBhIGZvb2QgdGhlb3J5LAoKMjQ0CjAwOjExOjU3Ljk3OSAtLT4gMDA6MTI6MDEuMDgxCmEgam9pbnQgdGhlb3J5LCBhbmQgYSBoZSdzIGp1c3QgZ2V0dGluZyBvbGRlciB0aGVvcnkuIEkgd2FzIGNoYW5naW5nIGxpdHRsZQoKMjQ1CjAwOjEyOjAxLjA4MSAtLT4gMDA6MTI6MDMuOTQzCnRoaW5ncywgd2F0Y2hpbmcgaGltIGNoYW5naW5nIHNvbWV0aGluZyBlbHNlLCBhbmQgdGhlbiBjaGVja2luZyBoaXMgcG9vcCBhZ2Fpbi4KCjI0NgowMDoxMjowNC4yNjUgLS0+IDAwOjEyOjA2LjQzOQpBdCBvbmUgcG9pbnQgSSBoYWQgbm90ZXMgb24gbXkgcGhvbmUgdGhhdAoKMjQ3CjAwOjEyOjA2LjQzOSAtLT4gMDA6MTI6MDguNzM3CmxpdGVyYWxseSBzYWlkLCBwYXdzLCBjb2F0LCBzdG9vbCwgd2Fsay4gTGlrZSwKCjI0OAowMDoxMjowOC43MzcgLS0+IDAwOjEyOjExLjIxMApJIHdhcyBrZWVwaW5nIGEgY2FzZSBmaWxlIG9uIG15IG93biBkb2cuIEkga25vdyBpdCBzb3VuZHMKCjI0OQowMDoxMjoxMS4yMTAgLS0+IDAwOjEyOjEzLjcyNgpyaWRpY3Vsb3VzLCBidXQgd2hlbiB5b3UgbG92ZSB5b3VyIGRvZywgdGhvc2UgbGl0dGxlIHRoaW5ncyBzdGFydCB0YWtpbmcgdXAgYQoKMjUwCjAwOjEyOjEzLjcyNiAtLT4gMDA6MTI6MTUuOTU1CmxvdCBvZiBzcGFjZSBpbiB5b3VyIGhlYWQuIEkgd291bGQgbG9vayBhdCBoaW0gYW5kIHdvbmRlciBpZgoKMjUxCjAwOjEyOjE1Ljk1NSAtLT4gMDA6MTI6MTguMzgxCmhlIHdhcyB1bmNvbWZvcnRhYmxlLiBJIHdvdWxkIHNob3J0ZW4gdGhlIHdhbGsgYW5kIGZlZWwgZ3VpbHR5IGFib3V0IGl0LgoKMjUyCjAwOjEyOjE4LjYxNSAtLT4gMDA6MTI6MjAuOTUwCnlvdSBrbm93LCBJIHRoaW5rIHRoZSBtZWNoYW5pc20gcGFydCBoZXJlLCBsaWtlLAoKMjUzCjAwOjEyOjIzLjc1NCAtLT4gMDA6MTI6MjUuMjYyClRoaXMgaXNuJ3QgcmVhbGx5IHRoZSBhZCdzIGZhdWx0LiBJIHRoaW5rIHRoZSBtZXRoeWwgaXMKCjI1NAowMDoxMjozMi4wOTEgLS0+IDAwOjEyOjMzLjk3OApsaWtlIGEgVlNMLCBUU0wgdGhpbmcuIEFuZCBJIHJlYWxseSBkb24ndCBsaWtlIG1ldGh5bGF0aW9uIGFzIGEgbWVjaGFuaXNtCgoyNTUKMDA6MTI6MzMuOTc4IC0tPiAwMDoxMjozOC4zOTMKZm9yIGEgZG9nIHN1cHBsZW1lbnQuIExpa2UsIEkganVzdCB0aGluayBpdCdzIHRvdGFsbHkgbm90IHRoYXQgZ29vZCBvcgoKMjU2CjAwOjEyOjM4LjM5MyAtLT4gMDA6MTI6NDEuMDQxCm5lY2Vzc2FyeS4gSSB0aGluayBpdCdzIG92ZXJjb21wbGljYXRlZCwgYnV0IGFnYWluLCB0aGlzIGlzIGZyb20geWVhcnMsCgoyNTcKMDA6MTI6NDEuODk2IC0tPiAwMDoxMjo0NC45NzEKdGhpcyBpcyBwcm9iYWJseSBmcm9tIHllYXJzIGFnbywgcmlnaHQ/IEJ1dCwgdW0sCgoyNTgKMDA6MTI6NDQuOTgyIC0tPiAwMDoxMjo0OS42NzgKc28gSSBjYW4ndCBmYXVsdCBTdGVmYW5CcmFpbiB0b28gbXVjaCBmb3IgdGFsa2luZyBhYm91dCBpdC4gQW5kCgoyNTkKMDA6MTI6NDkuNjc4IC0tPiAwMDoxMjo1MS42OTEKdGhlIENUQSwgSSdkIGJlIGxpa2UsIHlvdSBrbm93LCB0aGUgc3dpcGXigJRsaWtlLCBpZiB5b3UgbG9vayBhdCB0aGUKCjI2MAowMDoxMjo1MS43MDYgLS0+IDAwOjEyOjUzLjc5OQpyZWZlcmVuY2UgYWQsIGl0IGp1c3Qgc2F5cywgb2gsIGl0J3MgMzUlIG9mZiwKCjI2MQowMDoxMjo1My43OTkgLS0+IDAwOjEyOjU2Ljg5NgpsaWtlLCBsaW5rIGJlbG93LCBzbywgbGlrZSwgSSBkb24ndCBrbm93IHRoYXQgeW91IG5lZWQgdG8gaGF2ZSB0aGlzLAoKMjYyCjAwOjEyOjU2Ljg5NiAtLT4gMDA6MTI6NTkuMTU3Cmxpa2UsIGtpbmQgb2YgcHJpY2UgcG9pbnQgaW4gaXQsIHNvIHRob3NlIGFyZSB0aGluZ3MgSSB3b3VsZCBjaGFuZ2UKCjI2MwowMDoxMjo1OS4xNTcgLS0+IDAwOjEzOjAxLjQxNQpzdGlsbCwgYnV0IGl0J3Mgc3RpbGwgYWN0dWFsbHkgcHJldHR5IGdvb2QuIFNvLAoKMjY0CjAwOjEzOjAxLjgxMyAtLT4gMDA6MTM6MDMuNzg5CmEgY291cGxlIG9mIHRha2Vhd2F5cyB5b3UgZ3V5cyBzaG91bGQgaGF2ZSBmcm9tIHRoaXMsIG9uZSBpcyB0aGF0IHlvdQoKMjY1CjAwOjEzOjAzLjc4OSAtLT4gMDA6MTM6MDYuMjUyCmNvdWxkIGRlZmluaXRlbHkgdGFrZSB0aGUsIHVtLAoKMjY2CjAwOjEzOjA2LjI2MyAtLT4gMDA6MTM6MDguMzUzCnlvdSBjYW4ganVzdCBnaXZlIGl0IGEgWWFwcGVyIGFkIGFuZCB0aGVuIHRlbGwgaXQgdG8sIGxpa2UsCgoyNjcKMDA6MTM6MDguMzUzIC0tPiAwMDoxMzoxMC40NTMKeW91IGtub3csIHdyaXRlIGEgbmV3IFlhcHBlci1zdHlsZSBhZCBmb3IKCjI2OAowMDoxMzoxMC40NTMgLS0+IDAwOjEzOjEzLjQ2MApsaWtlLCB5b3VyIGJyYW5kIG9yIHByb2R1Y3QsIHRoYXQncyBmaW5lLCB1bSwgYnV0LCB1bSwKCjI2OQowMDoxMzoxMy40NjAgLS0+IDAwOjEzOjE1LjQ5MQpidXQgSSBkbyB0aGluayBpdCdzIGtpbmQgb2YgY29vbCBob3cgaXQgY2FuIHB1bGwsIGxpa2UsCgoyNzAKMDA6MTM6MTUuNDkxIC0tPiAwMDoxMzoxNy45MDAKbXVjaCBiZXR0ZXIgY29weSwgYW5kIHRoZXJlJ3MgcHJvYmFibHkgYSBsb3Qgb2Ygb3RoZXIgdGhpbmdzIHlvdSBjYW4gZG8sCgoyNzEKMDA6MTM6MTcuOTAwIC0tPiAwMDoxMzoxOS45MTUKSSdtIGdvbm5hIGV4cGVyaW1lbnQgbW9yZSBhcyB3ZWxsLCBidXQsIGxpa2UsIHdpdGgsCgoyNzIKMDA6MTM6MTkuOTE1IC0tPiAwMDoxMzoyMi43NjcKbGlrZSwgZGV2ZWxvcGluZyBvdXQgaG9va3MgYW5kIGFuZ2xlcyBhbmQgdGhpbmdzIGJhc2VkIG9mZiBvZiwKCjI3MwowMDoxMzoyMi43NjcgLS0+IDAwOjEzOjI1LjMwNQp1bSwgdGhlIG91dHB1dHMgeW91IGdldCwKCjI3NAowMDoxMzoyNS4zMDUgLS0+IDAwOjEzOjI4LjI2OQp5b3Uga25vdz8gQWxzbywgSSB0aGluayB0aGlzIGlzIGFuIGludGVyZXN0aW5nIHRoaW5nIHRvIHRlc3QgYXMgd2VsbCwKCjI3NQowMDoxMzoyOC4yNjkgLS0+IDAwOjEzOjMwLjk5OApzbywgc2hhcmluZyBhbGwgdGhhdCB3aXRoIHlvdSBndXlzLCBob3BlZnVsbHkgaXQncywKCjI3NgowMDoxMzozMC45OTggLS0+IDAwOjEzOjMxLjkyNwp1aCwgaGVscGZ1bCBvciB2YWx1YWJsZSwKCjI3NwowMDoxMzozMS45MjcgLS0+IDAwOjEzOjMzLjcyOAphbHJpZ2h0PyBHcmFjaWFzLCBieWUtYnllLgo=" srclang="en" label="English" default><a href="https://stefanbrain.com/api/video/adaptive/tutorials/create-ad-hooks-from-classic-direct-mail/full-frame-v4-2026-08-26.mp4">Watch the direct-mail hooks walkthrough</a></video>`,
}}
  />
</Frame>

English captions: [download the VTT file](https://stefanbrain.com/api/video/adaptive/tutorials/create-ad-hooks-from-classic-direct-mail/captions-en-v1-2026-08-26.vtt).

### Video chapters

| Time | Chapter |
| - | - |
| **00:00** | See why classic direct-mail references improve output |
| **02:48** | Rewrite the swipe for a new Product |
| **04:28** | Turn hooks into a magazine-cover ad |
| **05:19** | Repeat the workflow for another Product |
| **07:22** | Turn the hook bank into UGC |
| **08:33** | Add a voice-and-tone reference |
| **09:45** | Correct over-literal story copying |
| **10:53** | Trace ideas back to their source |
| **11:08** | Write the finished ad script |
| **12:31** | Simplify the mechanism and align the CTA |
| **13:00** | Review the takeaways |

## Before you start

Prepare:

* A saved Product with accurate audience, problem, mechanism, and offer context.
* One direct-mail piece with headlines, subheads, fascinations, or curiosity
  bullets worth studying.
* The next deliverable you want: a hook bank, static-ad concept, UGC outline,
  or finished script.
* Optionally, a separate reference ad for voice, pacing, or format.

## Build the hook bank

<Steps>
  <Step title="Add the source and Product to Chat">
    Open a new Chat. Use the **Plus** button to attach the direct-mail PDF or
    images, then type `@` and select the saved Product you want to write for.
    Tell StefanBrain what the attachment is and what you want to make.

    ```text theme={"system"}
    I attached a classic direct-mail piece as a creative reference.
    Use @Your Product for the audience, product facts, mechanism, and offer.

    First, study the source. Do not write a new ad yet.
    ```
  </Step>

  <Step title="Inventory what makes the source useful">
    Ask for the exact elements you may want to reuse. This keeps StefanBrain
    focused on the source instead of jumping to generic marketing patterns.

    ```text theme={"system"}
    Pull out the strongest:
    - headlines and subheads
    - fascinations and curiosity bullets
    - problem and mechanism language
    - transitions that increase urgency or curiosity

    Explain what each element is doing. Do not write new ads yet.
    ```
  </Step>

  <Step title="Adapt the source as if it were written for your Product">
    Preserve the direct-response energy and specificity, but make every idea
    congruent with the target Product.

    ```text theme={"system"}
    Now rewrite the strongest elements as if this direct-mail piece
    had originally been written for @Your Product.

    Keep the specificity, curiosity, and direct-response energy.
    Use only this Product's audience, pain points, facts, mechanism,
    and offer. Give me 20 distinct hooks grouped by angle.
    ```
  </Step>

  <Step title="Remove generic and mismatched ideas">
    Shortlist the hooks that feel specific to the Product. Reject ideas that
    could fit any brand, import a fact from the source, or repeat the same
    psychological angle with different words.

    ```text theme={"system"}
    Review this hook bank. Remove anything generic, repetitive,
    or unsupported by @Your Product.

    Keep the 10 strongest hooks and explain what makes each one
    specific, congruent, and meaningfully different.
    ```
  </Step>

  <Step title="Turn the shortlist into one deliverable">
    Choose the format you actually need next.

    **For a static-ad concept:**

    ```text theme={"system"}
    Turn the strongest hooks into one magazine-cover static-ad concept.
    Give me the headline stack, supporting lines, visual direction,
    and CTA in reading order.
    ```

    **For a UGC ad:**

    ```text theme={"system"}
    Use the strongest hooks to outline a two-minute conversational UGC ad.
    Keep the direct-response elements, but make the story natural for
    @Your Product and this audience. Show me the outline before the script.
    ```
  </Step>

  <Step title="Give each additional reference one job">
    If you add a reference ad, state exactly what StefanBrain should and should
    not borrow. This prevents the new script from copying an unrelated story.

    ```text theme={"system"}
    Use the direct-mail piece for hooks and sales structure.
    Use this reference ad only for voice, pacing, and format.
    Use @Your Product for every fact, audience detail, mechanism, and offer.

    Create a new story that makes sense for this Product.
    Outline it first so I can review the structure.
    ```
  </Step>

  <Step title="Critique the outline before requesting the final draft">
    Check the story, mechanism, and CTA while changes are still easy. If the
    outline follows the reference too literally, name the copied dynamic and
    ask for a new one.

    ```text theme={"system"}
    This outline copies the reference story too literally.
    Keep the voice and pacing, but create a new situation for @Your Product.
    Preserve [the useful hooks or sections] and change [the story dynamic].

    Then show which source headline, subhead, or fascination inspired
    each section and flag anything that does not fit the Product.
    ```

    Once the outline holds together, request the finished draft and make one
    final pass on the Product facts, mechanism, offer, and CTA.
  </Step>
</Steps>

## What the two examples demonstrate

<CardGroup cols={2}>
  <Card title="Primal Queen: hooks to a static concept" icon="image">
    Stefan replaces a broad pattern-matching prompt with the “written for this
    Product” instruction, then turns the sharper hook bank into a
    magazine-cover-style static concept.
  </Card>

  <Card title="Wild Belly: hooks to a UGC script" icon="clapperboard">
    Stefan combines a direct-mail source with a separate voice reference,
    reviews the outline, rejects an over-literal story, and refines the final
    mechanism and CTA.
  </Card>
</CardGroup>

## Review the result

| Question | A strong result… |
| - | - |
| Is it specific? | Sounds native to this Product and audience, not like a category template. |
| Is it transformed? | Uses the source's mechanics without copying its brand facts or story. |
| Is it grounded? | Matches the Product's actual mechanism, offer, and supporting facts. |
| Is it distinct? | Tests a different angle or story, not a cosmetic rewrite. |
| Does the format fit? | Reads naturally as the static concept, UGC outline, or script you requested. |

## Common problems

<AccordionGroup>
  <Accordion title="The output is broad and generic">
    Stop asking StefanBrain to abstract the source. Name the exact source
    elements to reuse, then ask it to write as if the piece had been created
    for your Product.
  </Accordion>

  <Accordion title="The new ad copies the reference story">
    Assign each reference one job. Keep voice and pacing if they are useful,
    but request a new situation that is natural for your Product.
  </Accordion>

  <Accordion title="Claims or mechanism details drift">
    Restate the Product's verified facts, remove details imported from the
    source, and ask StefanBrain to identify the source for every factual claim.
  </Accordion>

  <Accordion title="Every hook feels like the same idea">
    Ask for hooks grouped by angle, then require each group to use a different
    tension, desire, belief, or story—not just different wording.
  </Accordion>
</AccordionGroup>

## Related articles

* [Find campaign angles with Angle Finder](/knowledge-base/creative-strategist-research/use-angle-finder)
* [Create native ad concepts from a winning ad](/knowledge-base/images/create-native-ad-concepts-from-winning-ad)
* [Create and manage images in the Image workspace](/knowledge-base/images/use-the-image-workspace)
* [Give Chat the right context](/knowledge-base/chat/give-chat-the-right-context)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.