On 2018-09-13 I continued the protocol for baits 1-3.

Part 2: Bind and Wash

Start 90 minutes before intended hybridzation stop-time Here, bait-target hybrids are bound to streptavidin-coated magnetic beads, and then non-hybridized and non-specifically hybridized DNA are removed with a series of wash steps.

Follow this protocol if you have a 96-well magnetic particle collector. It can be used with any number of captures. For binding and washing steps, use PCR strips with individually-attached caps to enable vortexing and minimize cross-contamination. Work with up to six 8-well strips on a single 96-well particle collector at a time to enable opening the lids.

2.1 - Getting Started

Gather these components:

Reagents:

  • HYB#4

  • Binding Buffer

  • Wash Buffer 2

  • Dynabeads MyOne Streptavidin C1 Beads (30 uL per reaction)

  • Nuclease-free molecular biology-grade (“NF”) water (~50 mL)

  • 10mM Tris-Cl, 0.05% TWEEN®-20 solution (pH 8.0-8.5)

Bring HYB #4 and Wash Buffer 2 to room temperature to dissolve SDS prior to use

To prepare 10mM Tris-Cl, 0.05% Tween-20 solution (pH 8.0-8.5)

Equipment:

  • 0.2 mL standard-profile PCR strips with individually-attached caps (one well per reaction)

  • Thermal cycler with heated lid

  • Nuclease-free 50 mL tubes (1 per 68 capture reactions)

  • Pipettors and tips for 20 uL – 500 uL volumes

  • STRONGLY RECOMMENDED: Multichannel pipettor for 20-200 uL

  • 96-well magnetic particle collector

  • Water bath set to hybridization temperature

  • Vortex mixer

  • Minicentrifuge with adapters for 0.2 mL tubes/strips

2.2 - Wash Buffer 2.2 Preparation

The following procedure makes enough Wash Buffer 2.2 for washing 68 capture reactions; scale up if needed. Wash Buffer 2.2 can be stored at 4 C for 1 month.

  1. Combine the following:

Prepare in a 50 mL tube. Vortex thoroughly, label “Wash Buffer 2.2”

  1. Heat the Wash Buffer 2.2 to the hybridization temperature in the water bath for at least 45 minutes before use.

2.3 - Bead preparation

Prepared in 1.7mL tube and added enough for 3 reactions 1. For each capture reaction, aliquot 30 uL Dynabeads® MyOneTM Streptavidin C1 beads to a 0.2 mL tube of a PCR strip with individually-attached caps. For 3 rxns, 90uL

  1. Pellet the beads in the magnetic particle collector (“MPC”) until the suspension is clear (~1-2 minutes). Leaving the tubes on the magnet, remove and discard the supernatant.

  2. Add 200 uL Binding Buffer to each bead aliquot. Vortex 3 seconds and centrifuge briefly. Pellet in the MPC for 2 minutes, remove and discard the supernatant. For 3 rxns, 600uL

  3. Repeat Step 3 above twice for a total of three washes.

  4. Resuspend each washed bead aliquot in 70 uL Binding Buffer. For 3 rxns, 210uL

TIP: With a MPC for ~1.5mL tubes, beads can be prepared in batches of up to 8 reactions-worth (240 uL) at a time in a 1.7 mL tube. When doing so, multiply the wash and resuspension volumes by the number of reactions in the batch. For example, for eight reactions-worth, wash three times with 1.6 mL and resuspend in 560 uL Binding Buffer, then aliquot 70 uL suspension to 0.2 mL wells for each binding reaction.

2.4 - Bead-bait binding

  1. Heat the bead aliquots to your chosen hybridization temperature (e.g., 65 C) for 2 minutes in the thermal cycler. Set the lid temperature at least 10 C higher than the block.

  2. Transfer each capture reaction to the heated bead aliquots. Mix by pipetting. Each capture reaction is 30uL
    ended incubation at 11:30am

  3. Incubate the libraries + beads in the thermal cycler at the hybridization temperature for 30 minutes. Agitate every 10 minutes by flicking the tubes and briefly centrifuging.

2.5 - Bead washing

  1. Pellet the beads in the MPC for 2 minutes and remove the supernatant.

  2. Add 180 uL heated Wash Buffer 2.2 to the beads, briefly vortex, and briefly centrifuge.

  3. Incubate for 10 minutes at the hybridization temperature in the thermal cycler; agitate every 3 minutes by briefly vortexing then centrifuging the strip. Pellet and remove the supernatant.

  4. Repeat step 3 three times for a total of four washes. After the final wash and pelleting, remove as much fluid as possible without touching the bead pellet.

Part 3: Library Elution & Amplification

Here, the bead-bound enriched library is released from the RNA bait via heat denaturation, and then amplified in preparation for sequencing.

3.1 - Enriched Library Elution

  1. Add 30 uL of 10mM Tris-Cl, 0.05% TWEEN®-20 solution (pH 8.0 – 8.5) to the washed beads and thoroughly resuspend by pipetting.

If you are using KAPA® HiFi polymerase for amplification, skip steps 2 and 3, and use this bead suspension directly in amplification. For other polymerases, continue to step 2.

2. Incubate the suspension at 95°C for 5 minutes.

3. Pellet the beads in the MPC, and remove the supernatant, which contains the enriched library.

3.2 - Suggested Amplification Setup

Prior to sequencing, Arbor recommends amplifying the enriched library using a polymerase with reduced GC and length bias, such as KAPA® HiFi (Kapa Biosystems; see Quail et al. 2012; doi:10.1038/nmeth.1814).

Run the “REAMP” protocol in the thermal cycler.

If there were beads in the reamp, place on magnet and keep supernatant.

Clean with Ampure and quantify.

LS0tCnRpdGxlOiAiTXkgQmFpdHMiCnBhcmFtczoKICBudW1fcnhuczogMwpvdXRwdXQ6CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAotLS0KPCEtLSAjT24gMjAxOC0wOS0xMSBJIHN0YXJ0ZWQgdGhlIDI0IGhvdXIgaW5jdWJhdGlvbiBmb3IgMTIgcG9vbGVkIGJhaXQgcmVhY3Rpb25zLiBJdCB0b29rIDEgaG91ciB0byBzZXQgdXAgdGhlIGV4cGVyaW1lbnQuIC0tPgoKYGBge3Igc2V0dXAsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KGthYmxlRXh0cmEpCmBgYAoKPCEtLSAjI1BhcnQgMTogSHlicmlkaXphdGlvbiAtLT4KCjwhLS0gIyMjMS4xIC0gR2V0dGluZyBTdGFydGVkIC0tPgo8IS0tIEhlcmUsIHNlcXVlbmNpbmcgbGlicmFyaWVzIGFyZSBkZW5hdHVyZWQsIHRoZWlyIGFkYXB0ZXJzIGFyZSBibG9ja2VkIGJ5IGFkYXB0ZXIgYmxvY2tlciwgYW5kIGJhaXRzIGFyZSBhbGxvd2VkIHRvIGVuY291bnRlciBhbmQgdGhlbiBoeWJyaWRpemUgdG8gdGhlaXIgdGFyZ2V0cy4gLS0+Cgo8IS0tICoqR2F0aGVyIHRoZXNlIGNvbXBvbmVudHM6ICAqKiAtLT4KPCEtLSBSZWFnZW50czogLS0+CjwhLS0gKiBIWUIgcmVhZ2VudHMgKEJveCAxICYgMik6IEgxKG9yYW5nZSkgSDIocmVkKSBIMyh5ZWxsb3cpIEg0KHRlYWwpIC0tPgo8IS0tICAgKipIWUIzICYgSFlCNCBhcmUgaW4gRE1TTyBhbmQgbXVzdCBjb21lIHRvIHJvb20gdGVtcCoqIC0tPgo8IS0tICogQkxPQ0sgcmVhZ2VudHMgKEJveCAyKTogQjEoZ3JlZW4pIEIyKGJsdWUpIEIzKG11c3RhcmQpIC0tPgo8IS0tICogUk5hc2UgQmxvY2sgKEJveCAyKSAqKktlZXAgb24gaWNlKiogKHB1cnBsZSkgLS0+CjwhLS0gKiBCYWl0cyAoQm94IDMpICoqS2VlcCBvbiBpY2UqKiAod2hpdGUpIC0tPgo8IS0tICogU2VxdWVuY2luZyBsaWJyYXJpZXMgdG8gYmUgZW5yaWNoZWQgLS0+Cgo8IS0tICpUaG9yb3VnaGx5IHZvcnRleCBIWUIgIzEgSDEgYmVmb3JlIHVzZSwgYW5kIGJyaW5nIEhZQiAjNCBINCB0byByb29tIHRlbXBlcmF0dXJlIHRvIGZ1bGx5IGRpc3NvbHZlIGl0cyBTRFMgYmVmb3JlIHVzZSogLS0+CjwhLS0gRXF1aXBtZW50OiAtLT4KPCEtLSAqIDEuNyBtTCAow5cyKSBhbmQgNTAgbUwgKMOXMSkgbnVjbGVhc2UtZnJlZSB0dWJlcyAtLT4KPCEtLSAqIExvdy1iaW5kIDAuMm1MIHR1YmVzIHdpdGggaW5kaXZpZHVhbCBjYXBzICjDlzIgcGVyIHJlYWN0aW9uKSAtLT4KPCEtLSAqIFBpcGV0dG9ycyAmIHRpcHM7IG11bHRpY2hhbm5lbCBwaXBldHRvciBmb3IgcGlwZXR0aW5nIHVwIHRvIDIwIHVMIHJlY29tbWVuZGVkIC0tPgo8IS0tICogVm9ydGV4IG1peGVyIC0tPgo8IS0tICogVGhlcm1hbCBjeWNsZXIgLS0+Cgo8IS0tICoqUHJvZ3JhbSB0aGUgdGhlcm1hbCBjeWNsZXI6ICAqKiAtLT4KPCEtLSBQcm9ncmFtIHRoZSBsaWQgdGVtcGVyYXR1cmUgdG8gc3RheSBhdCAxMDUgQywgb3IgYXQgbGVhc3QgMTAgQyBhYm92ZSBlYWNoIHN0ZXAgdGVtcGVyYXR1cmUsIHRvIGtlZXAgZXZhcG9yYXRpb24gdG8gYSBtaW5pbXVtLiAtLT4KCjwhLS0gYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0gLS0+CjwhLS0gYSA8LSByZWFkX2Nzdigic3RlcCwgdGVtcF9DLCB0aW1lIC0tPgo8IS0tICAgMSwgOTUsIDVtIC0tPgo8IS0tICAgMiwgNjUsIDVtIC0tPgo8IS0tICAgMywgNjUsIGluZiIpIC0tPgoKPCEtLSBrYWJsZShhKSAlPiUgLS0+CjwhLS0gICBrYWJsZV9zdHlsaW5nKCkgLS0+CjwhLS0gYGBgIC0tPgo8IS0tICMjIzEuMiAtIE1peCBTZXR1cHMgLS0+CjwhLS0gKipBc3NlbWJsZSB0aGUgSHlicmlkaXphdGlvbiBNaXgsIGJyaWVmbHkgdm9ydGV4IGFuZCBjZW50cmlmdWdlOiAgKiogLS0+CjwhLS0gYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0gLS0+CjwhLS0gYiA8LSByZWFkX2NzdigiY29tcG9uZW50LCB1TF9yeG4gLS0+CjwhLS0gICBoeWIxLCA5IC0tPgo8IS0tICAgaHliMiwgMC41IC0tPgo8IS0tICAgaHliMywgMy41IC0tPgo8IS0tICAgaHliNCwgMC41IC0tPgo8IS0tICAgcm5hc2UgYmxvY2ssIDEgLS0+CjwhLS0gICBiYWl0cywgNS41IikgJT4lIC0tPgo8IS0tICAgbXV0YXRlKHRvdGFsID0gdUxfcnhuICogcGFyYW1zJG51bV9yeG5zKSAtLT4KCjwhLS0gdG90YWwgPC0gYiAlPiUgLS0+CjwhLS0gICBzdW1tYXJpc2UodG90X3Blcl9yeG4gPSBzdW0odUxfcnhuKSwgLS0+CjwhLS0gICAgIHRvdF90b2RheSA9IHN1bSh0b3RhbCkpICU+JSAtLT4KPCEtLSAgIG11dGF0ZShjb21wb25lbnQgPSAidG90YWwiKSAlPiUgLS0+CjwhLS0gICByZW5hbWUodUxfcnhuID0gdG90X3Blcl9yeG4sIC0tPgo8IS0tICAgICB0b3RhbCA9IHRvdF90b2RheSkgLS0+Cgo8IS0tIGIgPC0gcmJpbmQoYiwgdG90YWwpIC0tPgoKPCEtLSBrYWJsZShiKSAlPiUgLS0+CjwhLS0gICBrYWJsZV9zdHlsaW5nKCkgLS0+CjwhLS0gYGBgIC0tPgoKPCEtLSAqKiBGb3IgZWFjaCBjYXB0dXJlIHJlYWN0aW9uLCBhbGlxdW90IDE4LjUgdUwgb2YgSHlicmlkaXphdGlvbiBNaXggdG8gYSAwLjIgbUwgdHViZS4gVGhlc2UgYXJlIG5vdyByZWZlcnJlZCB0byBhcyDigJxIWUJz4oCdICoqIC0tPgoKPCEtLSAqKkFzc2VtYmxlIHRoZSBCbG9ja2VycyBNaXggYW5kIGJyaWVmbHkgdm9ydGV4OiAgKiogLS0+CjwhLS0gYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0gLS0+CjwhLS0gYyA8LSByZWFkX2NzdigiY29tcG9uZW50LCB1TF9yeG4gLS0+CjwhLS0gICBibG9jazEsIDIuNSAtLT4KPCEtLSAgIGJsb2NrMiwgMi41IC0tPgo8IS0tICAgYmxvY2szLCAwLjUiKSAlPiUgLS0+CjwhLS0gICBtdXRhdGUodG90YWwgPSB1TF9yeG4gKiBwYXJhbXMkbnVtX3J4bnMpIC0tPgoKPCEtLSB0b3RhbCA8LSBjICU+JSAtLT4KPCEtLSAgIHN1bW1hcmlzZSh0b3RfcGVyX3J4biA9IHN1bSh1TF9yeG4pLCAtLT4KPCEtLSAgICAgdG90X3RvZGF5ID0gc3VtKHRvdGFsKSkgJT4lIC0tPgo8IS0tICAgbXV0YXRlKGNvbXBvbmVudCA9ICJ0b3RhbCIpICU+JSAtLT4KPCEtLSAgIHJlbmFtZSh1TF9yeG4gPSB0b3RfcGVyX3J4biwgLS0+CjwhLS0gICAgIHRvdGFsID0gdG90X3RvZGF5KSAtLT4KCjwhLS0gYyA8LSByYmluZChjLCB0b3RhbCkgLS0+Cgo8IS0tIGthYmxlKGMpICU+JSAtLT4KPCEtLSAgIGthYmxlX3N0eWxpbmcoKSAtLT4KPCEtLSBgYGAgLS0+CjwhLS0gKipGb3IgZWFjaCBjYXB0dXJlIHJlYWN0aW9uLCBhbGlxdW90IDUgdUwgQmxvY2tlcnMgTWl4IHRvIGEgbG93LWJpbmQgMC4ybUwgdHViZS4qKiAtLT4KPCEtLSAqKkFkZCA3IHVMIEROQSBsaWJyYXJ5ICgxMDAg4oCTIDUwMG5nKSB0byBlYWNoIEJsb2NrZXJzIE1peCBhbGlxdW90IGFuZCBob21vZ2VuaXplIGJ5IHBpcGV0dGluZy4qKiAtLT4KCjwhLS0gVGhlc2UgYXJlIG5vdyByZWZlcnJlZCB0byBhcyDigJxMSUJz4oCdIHRvdGFsIHZvbHVtZTogMTIgdUwgLS0+Cgo8IS0tICMjIzEuMyBSZWFjdGlvbiBBc3NlbWJseSAtLT4KPCEtLSAxLiBQdXQgdGhlIExJQnMgaW4gdGhlIHRoZXJtYWwgY3ljbGVyLCBjbG9zZSB0aGUgbGlkLCBhbmQgc3RhcnQgdGhlIHRoZXJtYWwgcHJvZ3JhbS4gLS0+CjwhLS0gKkRvdWJsZSBjaGVjayB0aGF0IHRoZSBsaWQgdGVtcGVyYXR1cmUgaXMgcHJvZ3JhbW1lZCB0byBzdGF5IGF0IDEwNSBDLCBvciBhdCBsZWFzdCAxMCBDIGFib3ZlIGVhY2ggc3RlcCB0ZW1wZXJhdHVyZSwgdG8ga2VlcCBldmFwb3JhdGlvbiBhdCBhIG1pbmltdW0uKiAtLT4KCjwhLS0gKiBQbGFjZSBhIHN0cmlwIG9mIDggdHViZXMgaG9yaXpvbnRhbGx5IGluIGEgY2VudHJhbCBsb2NhdGlvbiBvbiB0aGUgdGhlcm1hbCBjeWNsZXIgYW5kIHBsYWNlIGVtcHR5IHR1YmVzIGF0IGVhY2ggY29ybmVyIHRvIGtlZXAgdGhlIGxpZCBmbGF0IHdoaWxlIGRvaW5nIGZld2VyIHRoYW4gMiBzdHJpcHMgd29ydGggb2YgY2FwdHVyZXMuIC0tPgoKPCEtLSAyLiBPbmNlIHRoZSBjeWNsZXIgcmVhY2hlcyBzdGVwIDIgb2YgdGhlIHByb2dyYW0gKHRoZSBoeWJyaWRpemF0aW9uIHRlbXBlcmF0dXJlKSwgcGF1c2UgdGhlIHByb2dyYW0sIHB1dCB0aGUgSFlCcyBpbiB0aGUgdGhlcm1hbCBjeWNsZXIsIGNsb3NlIHRoZSBsaWQgYW5kIHJlc3VtZSB0aGUgcHJvZ3JhbS4gLS0+Cgo8IS0tIDMuIEFmdGVyIHN0ZXAgMiBvZiB0aGUgcHJvZ3JhbSBpcyBjb21wbGV0ZSwgKipsZWF2aW5nIGFsbCB0dWJlcyBpbiB0aGUgdGhlcm1vY3ljbGVyKiosIHBpcGV0dGUgMTggdUwgb2YgZWFjaCBIWUIgdG8gZWFjaCBMSUIuICAqKlVzZSBhIG11bHRpY2hhbm5lbCBwaXBldHRvciBmb3IgZWFzaWVyIGV4ZWN1dGlvbioqLiAgR2VudGx5IGhvbW9nZW5pemUgYnkgcGlwZXR0aW5nIHVwIGFuZCBkb3duIDUgdGltZXMuIC0tPgoKCgo8IS0tIDQuIERpc3Bvc2Ugb2YgSFlCIHR1YmVzLiAgQ2xvc2UgdGhlIGxpZCBvZiB0aGUgdGhlcm1hbCBjeWNsZXIgYW5kIGFsbG93IHRoZSByZWFjdGlvbnMgdG8gaW5jdWJhdGUgYXQgaHlicmlkaXphdGlvbiB0ZW1wZXJhdHVyZSBmb3IgeW91ciBjaG9zZW4gdGltZSAoZS5nLiwgMTYgaG91cnMpLiAtLT4KCjwhLS0gKipzdGFydGVkIGluY3ViYXRpb24gYXQgNHBtKiogLS0+CgojT24gMjAxOC0wOS0xMyBJIGNvbnRpbnVlZCB0aGUgcHJvdG9jb2wgZm9yIGJhaXRzIDEtMy4KIyNQYXJ0IDI6IEJpbmQgYW5kIFdhc2gKKlN0YXJ0IDkwIG1pbnV0ZXMgYmVmb3JlIGludGVuZGVkIGh5YnJpZHphdGlvbiBzdG9wLXRpbWUqCkhlcmUsIGJhaXQtdGFyZ2V0IGh5YnJpZHMgYXJlIGJvdW5kIHRvIHN0cmVwdGF2aWRpbi1jb2F0ZWQgbWFnbmV0aWMgYmVhZHMsIGFuZCB0aGVuIG5vbi1oeWJyaWRpemVkIGFuZCBub24tc3BlY2lmaWNhbGx5IGh5YnJpZGl6ZWQgRE5BIGFyZSByZW1vdmVkIHdpdGggYSBzZXJpZXMgb2Ygd2FzaCBzdGVwcy4KCkZvbGxvdyB0aGlzIHByb3RvY29sIGlmIHlvdSBoYXZlIGEgOTYtd2VsbCBtYWduZXRpYyBwYXJ0aWNsZSBjb2xsZWN0b3IuIEl0IGNhbiBiZSB1c2VkIHdpdGggYW55IG51bWJlciBvZiBjYXB0dXJlcy4gRm9yIGJpbmRpbmcgYW5kIHdhc2hpbmcgc3RlcHMsIHVzZSBQQ1Igc3RyaXBzIHdpdGggaW5kaXZpZHVhbGx5LWF0dGFjaGVkIGNhcHMgdG8gZW5hYmxlIHZvcnRleGluZyBhbmQgbWluaW1pemUgY3Jvc3MtY29udGFtaW5hdGlvbi4gV29yayB3aXRoIHVwIHRvIHNpeCA4LXdlbGwgc3RyaXBzIG9uIGEgc2luZ2xlIDk2LXdlbGwgcGFydGljbGUgY29sbGVjdG9yIGF0IGEgdGltZSB0byBlbmFibGUgb3BlbmluZyB0aGUgbGlkcy4KCiMjIzIuMSAtIEdldHRpbmcgU3RhcnRlZApHYXRoZXIgdGhlc2UgY29tcG9uZW50czoKClJlYWdlbnRzOgoKKiBIWUIjNAoKKiBCaW5kaW5nIEJ1ZmZlcgoKKiBXYXNoIEJ1ZmZlciAyCgoqIER5bmFiZWFkcyBNeU9uZSBTdHJlcHRhdmlkaW4gQzEgQmVhZHMgKDMwIHVMIHBlciByZWFjdGlvbikKCiogTnVjbGVhc2UtZnJlZSBtb2xlY3VsYXIgYmlvbG9neS1ncmFkZSAo4oCcTkbigJ0pIHdhdGVyICh+NTAgbUwpCgoqIDEwbU0gVHJpcy1DbCwgMC4wNSUgVFdFRU7Cri0yMCBzb2x1dGlvbiAocEggOC4wLTguNSkKCipCcmluZyBIWUIgIzQgYW5kIFdhc2ggQnVmZmVyIDIgdG8gcm9vbSB0ZW1wZXJhdHVyZSB0byBkaXNzb2x2ZSBTRFMgcHJpb3IgdG8gdXNlKgoKVG8gcHJlcGFyZSAxMG1NIFRyaXMtQ2wsIDAuMDUlIFR3ZWVuLTIwIHNvbHV0aW9uIChwSCA4LjAtOC41KQoKYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0Kc29sIDwtIHJlYWRfY3N2KCJjb21wb25lbnQsIGluaXRfY29uYywgZmluX2NvbmMKICAgICAgICAgICAgICAgIG1NIFRyaXMtQ2wsIDEwMDAsIDEwCiAgICAgICAgICAgICAgICAlIFR3ZWVuLTIwLCAxMDAsIDAuMDUKICBwSDJPLCBOQSwgTkEiKSAlPiUKICBtdXRhdGUodWxfZmluX3ZvbCA9IGNlaWxpbmcoMzAqcGFyYW1zJG51bV9yeG5zKjEuMSksCiAgICAgICAgIHVsX2luaXRfdm9sID0gZmluX2NvbmMgKiB1bF9maW5fdm9sL2luaXRfY29uYykKa2FibGUoc29sKSAlPiUKICBrYWJsZV9zdHlsaW5nKCkKYGBgCgpFcXVpcG1lbnQ6CgoqIDAuMiBtTCBzdGFuZGFyZC1wcm9maWxlIFBDUiBzdHJpcHMgd2l0aCBpbmRpdmlkdWFsbHktYXR0YWNoZWQgY2FwcyAob25lIHdlbGwgcGVyIHJlYWN0aW9uKQoKKiBUaGVybWFsIGN5Y2xlciB3aXRoIGhlYXRlZCBsaWQKCiogTnVjbGVhc2UtZnJlZSA1MCBtTCB0dWJlcyAoMSBwZXIgNjggY2FwdHVyZSByZWFjdGlvbnMpCgoqIFBpcGV0dG9ycyBhbmQgdGlwcyBmb3IgMjAgdUwg4oCTIDUwMCB1TCB2b2x1bWVzCgoqIFNUUk9OR0xZIFJFQ09NTUVOREVEOiBNdWx0aWNoYW5uZWwgcGlwZXR0b3IgZm9yIDIwLTIwMCB1TAoKKiA5Ni13ZWxsIG1hZ25ldGljIHBhcnRpY2xlIGNvbGxlY3RvcgoKKiBXYXRlciBiYXRoIHNldCB0byBoeWJyaWRpemF0aW9uIHRlbXBlcmF0dXJlCgoqIFZvcnRleCBtaXhlcgoKKiBNaW5pY2VudHJpZnVnZSB3aXRoIGFkYXB0ZXJzIGZvciAwLjIgbUwgdHViZXMvc3RyaXBzCgojIyMyLjIgLSBXYXNoIEJ1ZmZlciAyLjIgUHJlcGFyYXRpb24KVGhlIGZvbGxvd2luZyBwcm9jZWR1cmUgbWFrZXMgZW5vdWdoIFdhc2ggQnVmZmVyIDIuMiBmb3Igd2FzaGluZyA2OCBjYXB0dXJlIHJlYWN0aW9uczsgc2NhbGUgdXAgaWYgbmVlZGVkLiBXYXNoIEJ1ZmZlciAyLjIgY2FuIGJlIHN0b3JlZCBhdCA0IEMgZm9yIDEgbW9udGguCgoKMS4gQ29tYmluZSB0aGUgZm9sbG93aW5nOgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpzb2wgPC0gcmVhZF9jc3YoImNvbXBvbmVudCwgdWxfcnhuX3ZvbAogICAgICAgICAgICAgICAgSFlCICM0LCA1Ljg4CiAgICAgICAgICAgICAgICBwSDJPLCA1ODIuMzUKICAgICAgICAgICAgICAgIFdhc2ggQnVmZmVyIDIsIDE0Ny4wNSIpICU+JQogIG11dGF0ZSh1bF9maW5fdm9sID0gY2VpbGluZyh1bF9yeG5fdm9sKnBhcmFtcyRudW1fcnhucykpCgoKa2FibGUoc29sKSAlPiUKICBrYWJsZV9zdHlsaW5nKCkKYGBgCgpQcmVwYXJlIGluIGEgNTAgbUwgdHViZS4gVm9ydGV4IHRob3JvdWdobHksIGxhYmVsIOKAnFdhc2ggQnVmZmVyIDIuMuKAnQoKMi4gSGVhdCB0aGUgV2FzaCBCdWZmZXIgMi4yIHRvIHRoZSBoeWJyaWRpemF0aW9uIHRlbXBlcmF0dXJlIGluIHRoZSB3YXRlciBiYXRoIGZvciBhdCBsZWFzdCA0NSBtaW51dGVzIGJlZm9yZSB1c2UuCgojIyMyLjMgLSBCZWFkIHByZXBhcmF0aW9uCioqUHJlcGFyZWQgaW4gMS43bUwgdHViZSBhbmQgYWRkZWQgZW5vdWdoIGZvciAzIHJlYWN0aW9ucyoqCjEuIEZvciBlYWNoIGNhcHR1cmUgcmVhY3Rpb24sIGFsaXF1b3QgMzAgdUwgRHluYWJlYWRzwq4gTXlPbmVUTSBTdHJlcHRhdmlkaW4gQzEgYmVhZHMgdG8gYSAwLjIgbUwgdHViZSBvZiBhIFBDUiBzdHJpcCB3aXRoIGluZGl2aWR1YWxseS1hdHRhY2hlZCBjYXBzLgoqKkZvciAzIHJ4bnMsIGByIDMwKjNgdUwqKgoKMi4gUGVsbGV0IHRoZSBiZWFkcyBpbiB0aGUgbWFnbmV0aWMgcGFydGljbGUgY29sbGVjdG9yICjigJxNUEPigJ0pIHVudGlsIHRoZSBzdXNwZW5zaW9uIGlzIGNsZWFyICh+MS0yIG1pbnV0ZXMpLiBMZWF2aW5nIHRoZSB0dWJlcyBvbiB0aGUgbWFnbmV0LCByZW1vdmUgYW5kIGRpc2NhcmQgdGhlIHN1cGVybmF0YW50LgoKMy4gQWRkIDIwMCB1TCBCaW5kaW5nIEJ1ZmZlciB0byBlYWNoIGJlYWQgYWxpcXVvdC4gVm9ydGV4IDMgc2Vjb25kcyBhbmQgY2VudHJpZnVnZSBicmllZmx5LiBQZWxsZXQgaW4gdGhlIE1QQyBmb3IgMiBtaW51dGVzLCByZW1vdmUgYW5kIGRpc2NhcmQgdGhlIHN1cGVybmF0YW50LiAqKkZvciAzIHJ4bnMsIGByIDIwMCozYHVMKioKCjQuIFJlcGVhdCBTdGVwIDMgYWJvdmUgdHdpY2UgZm9yIGEgdG90YWwgb2YgdGhyZWUgd2FzaGVzLgoKNS4gUmVzdXNwZW5kIGVhY2ggd2FzaGVkIGJlYWQgYWxpcXVvdCBpbiA3MCB1TCBCaW5kaW5nIEJ1ZmZlci4gICoqRm9yIDMgcnhucywgYHIgNzAqM2B1TCoqCgoqVElQOiBXaXRoIGEgTVBDIGZvciB+MS41bUwgdHViZXMsIGJlYWRzIGNhbiBiZSBwcmVwYXJlZCBpbiBiYXRjaGVzIG9mIHVwIHRvIDggcmVhY3Rpb25zLXdvcnRoICgyNDAgdUwpIGF0IGEgdGltZSBpbiBhIDEuNyBtTCB0dWJlLiBXaGVuIGRvaW5nIHNvLCBtdWx0aXBseSB0aGUgd2FzaCBhbmQgcmVzdXNwZW5zaW9uIHZvbHVtZXMgYnkgdGhlIG51bWJlciBvZiByZWFjdGlvbnMgaW4gdGhlIGJhdGNoLiBGb3IgZXhhbXBsZSwgZm9yIGVpZ2h0IHJlYWN0aW9ucy13b3J0aCwgd2FzaCB0aHJlZSB0aW1lcyB3aXRoIDEuNiBtTCBhbmQgcmVzdXNwZW5kIGluIDU2MCB1TCBCaW5kaW5nIEJ1ZmZlciwgdGhlbiBhbGlxdW90IDcwIHVMIHN1c3BlbnNpb24gdG8gMC4yIG1MIHdlbGxzIGZvciBlYWNoIGJpbmRpbmcgcmVhY3Rpb24uKgoKIyMjMi40IC0gQmVhZC1iYWl0IGJpbmRpbmcKMS4gSGVhdCB0aGUgYmVhZCBhbGlxdW90cyB0byB5b3VyIGNob3NlbiBoeWJyaWRpemF0aW9uIHRlbXBlcmF0dXJlIChlLmcuLCA2NSBDKSBmb3IgMiBtaW51dGVzIGluIHRoZSB0aGVybWFsIGN5Y2xlci4gU2V0IHRoZSBsaWQgdGVtcGVyYXR1cmUgYXQgbGVhc3QgMTAgQyBoaWdoZXIgdGhhbiB0aGUgYmxvY2suCgoyLiBUcmFuc2ZlciBlYWNoIGNhcHR1cmUgcmVhY3Rpb24gdG8gdGhlIGhlYXRlZCBiZWFkIGFsaXF1b3RzLiBNaXggYnkgcGlwZXR0aW5nLiAqRWFjaCBjYXB0dXJlIHJlYWN0aW9uIGlzIDMwdUwqICAKKiplbmRlZCBpbmN1YmF0aW9uIGF0IDExOjMwYW0qKgoKMy4gSW5jdWJhdGUgdGhlIGxpYnJhcmllcyArIGJlYWRzIGluIHRoZSB0aGVybWFsIGN5Y2xlciBhdCB0aGUgaHlicmlkaXphdGlvbiB0ZW1wZXJhdHVyZSBmb3IgMzAgbWludXRlcy4gQWdpdGF0ZSBldmVyeSAxMCBtaW51dGVzIGJ5IGZsaWNraW5nIHRoZSB0dWJlcyBhbmQgYnJpZWZseSBjZW50cmlmdWdpbmcuCgoKIyMjMi41IC0gQmVhZCB3YXNoaW5nCgoxLiBQZWxsZXQgdGhlIGJlYWRzIGluIHRoZSBNUEMgZm9yIDIgbWludXRlcyBhbmQgcmVtb3ZlIHRoZSBzdXBlcm5hdGFudC4KCjIuIEFkZCAxODAgdUwgaGVhdGVkIFdhc2ggQnVmZmVyIDIuMiB0byB0aGUgYmVhZHMsIGJyaWVmbHkgdm9ydGV4LCBhbmQgYnJpZWZseSBjZW50cmlmdWdlLgoKMy4gSW5jdWJhdGUgZm9yIDEwIG1pbnV0ZXMgYXQgdGhlIGh5YnJpZGl6YXRpb24gdGVtcGVyYXR1cmUgaW4gdGhlIHRoZXJtYWwgY3ljbGVyOyBhZ2l0YXRlIGV2ZXJ5IDMKbWludXRlcyBieSBicmllZmx5IHZvcnRleGluZyB0aGVuIGNlbnRyaWZ1Z2luZyB0aGUgc3RyaXAuIFBlbGxldCBhbmQgcmVtb3ZlIHRoZSBzdXBlcm5hdGFudC4KCjQuIFJlcGVhdCBzdGVwIDMgdGhyZWUgdGltZXMgZm9yIGEgKip0b3RhbCBvZiBmb3VyIHdhc2hlcyoqLiBBZnRlciB0aGUgZmluYWwgd2FzaCBhbmQgcGVsbGV0aW5nLCByZW1vdmUgYXMgbXVjaCBmbHVpZCBhcyBwb3NzaWJsZSB3aXRob3V0IHRvdWNoaW5nIHRoZSBiZWFkIHBlbGxldC4KCiMjUGFydCAzOiBMaWJyYXJ5IEVsdXRpb24gJiBBbXBsaWZpY2F0aW9uCkhlcmUsIHRoZSBiZWFkLWJvdW5kIGVucmljaGVkIGxpYnJhcnkgaXMgcmVsZWFzZWQgZnJvbSB0aGUgUk5BIGJhaXQgdmlhIGhlYXQgZGVuYXR1cmF0aW9uLCBhbmQgdGhlbiBhbXBsaWZpZWQgaW4gcHJlcGFyYXRpb24gZm9yIHNlcXVlbmNpbmcuCgoKIyMjMy4xIC0gRW5yaWNoZWQgTGlicmFyeSBFbHV0aW9uCjEuIEFkZCAzMCB1TCBvZiAxMG1NIFRyaXMtQ2wsIDAuMDUlIFRXRUVOwq4tMjAgc29sdXRpb24gKHBIIDguMCDigJMgOC41KSB0byB0aGUgd2FzaGVkIGJlYWRzIGFuZCB0aG9yb3VnaGx5IHJlc3VzcGVuZCBieSBwaXBldHRpbmcuCgoqKklmIHlvdSBhcmUgdXNpbmcgS0FQQcKuIEhpRmkgcG9seW1lcmFzZSBmb3IgYW1wbGlmaWNhdGlvbiwgc2tpcCBzdGVwcyAyIGFuZCAzLCBhbmQgdXNlIHRoaXMgYmVhZCBzdXNwZW5zaW9uIGRpcmVjdGx5IGluIGFtcGxpZmljYXRpb24uIEZvciBvdGhlciBwb2x5bWVyYXNlcywgY29udGludWUgdG8gc3RlcCAyLioqCgoqMi4gSW5jdWJhdGUgdGhlIHN1c3BlbnNpb24gYXQgOTXCsEMgZm9yIDUgbWludXRlcy4qCgoqMy4gUGVsbGV0IHRoZSBiZWFkcyBpbiB0aGUgTVBDLCBhbmQgcmVtb3ZlIHRoZSBzdXBlcm5hdGFudCwgd2hpY2ggY29udGFpbnMgdGhlIGVucmljaGVkIGxpYnJhcnkuKgoKIyMjMy4yIC0gU3VnZ2VzdGVkIEFtcGxpZmljYXRpb24gU2V0dXAKClByaW9yIHRvIHNlcXVlbmNpbmcsIEFyYm9yIHJlY29tbWVuZHMgYW1wbGlmeWluZyB0aGUgZW5yaWNoZWQgbGlicmFyeSB1c2luZyBhIHBvbHltZXJhc2Ugd2l0aCByZWR1Y2VkIEdDIGFuZCBsZW5ndGggYmlhcywgc3VjaCBhcyBLQVBBwq4gSGlGaSAoS2FwYSBCaW9zeXN0ZW1zOyBzZWUgUXVhaWwgZXQgYWwuIDIwMTI7IGRvaToxMC4xMDM4L25tZXRoLjE4MTQpLgoKCgpgYGB7ciBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQpzb2wgPC0gcmVhZF9jc3YoImNvbXBvbmVudCwgZmluX2NvbmMsIHVsX3Blcl9yeG4KICAgICAgICAgICAgICAgIHBIMk8sIE5BLCA1CiAgICAgICAgICAgICAgICAyeCBLQVBBIEhpRmkgSG90U3RhcnQgUmVhZHlNaXgsIDFYLCAyNQogICAgICAgICAgICAgICAgMTB1TSBGIHByaW1lciwgNTAwLCAyLjUKICAgICAgICAgICAgICAgIDEwdU0gUiBwcmltZXIsIDUwMCwgMi41CiAgICAgICAgICAgICAgICBsaWJyYXJ5LCBOQSwgMTUiKSAlPiUKICBtdXRhdGUodWxfZmluX3ZvbCA9IHVsX3Blcl9yeG4gKiBwYXJhbXMkbnVtX3J4bnMqMS4xKQprYWJsZShzb2wpICU+JQogIGthYmxlX3N0eWxpbmcoKQpgYGAKClJ1biB0aGUgIlJFQU1QIiBwcm90b2NvbCBpbiB0aGUgdGhlcm1hbCBjeWNsZXIuCgpJZiB0aGVyZSB3ZXJlIGJlYWRzIGluIHRoZSByZWFtcCwgcGxhY2Ugb24gbWFnbmV0IGFuZCBrZWVwIHN1cGVybmF0YW50LgoKQ2xlYW4gd2l0aCBBbXB1cmUgYW5kIHF1YW50aWZ5Lgo=