text:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=8" />
        <meta http-equiv="pragma" content="no-cache" />
        <meta http-equiv="cache-control" content="no-cache,must-revalidate" />
        <meta http-equiv="expires" content="0" />
        <link rel="shortcut icon" href="/javax.faces.resource/favicon.ico.xhtml?ln=images" /><link type="text/css" rel="stylesheet" href="/javax.faces.resource/cssLayout.css.xhtml?ln=css" /><link type="text/css" rel="stylesheet" href="/javax.faces.resource/static.css.xhtml?ln=css" />

            This page is better viewed with a JavaScript enabled browser.

                    Home

                    Search & Browse

                    Currency and Updating

                    Classification Tables

                    Popular Name Tool

                    Other Tables and Tools

                    Cite Checker

                    Table III - Statutes at Large

                    Other Tables

                    Understanding the Code

                    About the Code and Website

                    About Classification

                    Detailed Guide to the Code

                    FAQ and Glossary

                    Positive Law Codification

                    Editorial Reclassification

                    Downloads

                    THOMAS

                    FDsys

<title>TABLE III TOOL</title>

Home

Search

USCprelim

Download

Classification

Codification

Popular Names

Table III

Other Tables

About

Currency

   <form name='selectionform' onsubmit='loadContent()'>

       <input type='text'  size='15' name='documentcriteria' onKeyPress='return disableEnterKey(event)'/>

       <input type='button' value='Get Document' name='getdoc' onclick='loadContent()'/>

   </form>

Table III Tool

The Table III Tool enables you to browse the United States Code Table III. For printing purposes, the PDF file is recommended. A detailed explanation of the Table is located here.

  111th Cong.  ↑

  124   Stat.  ↑

  Mar. 23, 2010  ↑

  111–147

  111–148

  111–149

  Act Section

  Stat. Pg.

  United States Code

  Title

  Section

  Status

  1(a)

  119

  42

  18001 nt

  1001(2)

  130

  42

  300gg–25

  1001(2)

  130

  42

  300gg–26

  1001(2)

  130

  42

  300gg–27

  1001(2)

  130

  42

  300gg–28

  1001(3)

  130

  42

  300gg–9

  1001(3)

  130

  42

  300gg–11

  1001(3)

  130

  42

  300gg–12

  1001(4)

  130

  42

  300gg–21

  1001(4)

  130

  42

  300gg–22

  1001(4)

  130

  42

  300gg–23

  1001(5)

  131

  42

  300gg–11

  1001(5)

  131

  42

  300gg–12

  1001(5)

  131

  42

  300gg–13

  1001(5)

  132

  42

  300gg–14

  1001(5)

  132

  42

  300gg–15

  1001(5)

  135

  42

  300gg–16

  1001(5)

  135

  42

  300gg–17

  1001(5)

  136

  42

  300gg–18

  1001(5)

  137

  42

  300gg–19

  1002

  138

  42

  300gg–93

  1003

  139

  42

  300gg–94

  1004

  140

  42

  300gg–11 nt

  1101

  141

  42

  18001

  1102

  143

  42

  18002

  1103

  146

  42

  18003

  1104(a)

  146

  42

  1320d nt

  1104(b)(1)

  146

  42

  1320d

  1104(b)(2)

  147

  42

  1320d–2

  1104(c)

  153

  42

  1320d–2 nt

  1104(d)

  153

  42

  1395y

  1105

  154

  42

  1320d nt

  1201(2)

  154

  42

  300gg–3

  1201(3)

  154

  42

  300gg–1

  1201(3)

  154

  42

  300gg–4

  1201(4)

  155

  42

  300gg

  1201(4)

  156

  42

  300gg–1

  1201(4)

  156

  42

  300gg–2

  1201(4)

  156

  42

  300gg–4

  1201(4)

  160

  42

  300gg–5

  1201(4)

  161

  42

  300gg–6

  1201(4)

  161

  42

  300gg–7

  1251

  161

  42

  18011

  1252

  162

  42

  18012

  1253

  42

  18013

  1255

  42

  300gg nt

  1301

  162

  42

  18021

  1302

  163

  42

  18022

  1303

  168

  42

  18023

  1304

  171

  42

  18024

  1311

  173

  42

  18031

  1312

  182

  42

  18032

  1313

  184

  42

  18033

  1321

  186

  42

  18041

  1322

  187

  42

  18042

  1322(h)(1)

  191

  26

  501

  1322(h)(2)

  192

  26

  6033

  1322(h)(3)

  192

  26

  4958

  1323

  192

  42

  18043

  Rep.

  1323

  42

  18043

  1324

  199

  42

  18044

  1331

  199

  42

  18051

  1332

  203

  42

  18052

  1333

  206

  42

  18053

  1334

  42

  18054

  1341

  208

  42

  18061

  1342

  211

  42

  18062

  1343

  212

  42

  18063

  1401(a)

  213

  26

  36B

  1401(b)

  219

  26

  280C

  1401(d)(1)

  220

  31

  1324

  1401(d)(2)

  220

  26

  prec. 31

  1401(d)(3)

  26

  6211

  1401(e)

  220

  26

  36B nt

  1402

  220

  42

  18071

  1411

  224

  42

  18081

  1412

  231

  42

  18082

  1413

  233

  42

  18083

  1414(a)(1)

  236

  26

  6103

  1414(a)(2)

  237

  42

  405

  1414(b), (c)

  237

  26

  6103

  1414(d)

  237

  26

  7213

  1415

  237

  42

  18084

  1421(a)

  237

  26

  45R

  1421(b), (c)

  241, 242

  26

  38

  1421(d)(1)

  242

  26

  280C

  1421(d)(2)

  242

  26

  196

  1421(e)

  242

  26

  prec. 38

  1421(f)

  242

  26

  38 nt

  1501(a)

  242

  42

  18091

  1501(b)

  244

  26

  prec. 5000A

  1501(b)

  244

  26

  5000A

  1501(c)

  249

  26

  prec. 4001

  1501(d)

  249

  26

  5000A nt

  1502(a)

  250

  26

  prec. 6055

  1502(a)

  250

  26

  6055

  1502(b)

  251

  26

  6724

  1502(c)

  251

  42

  18092

  1502(d)

  251

  26

  prec. 6031

  1502(e)

  252

  26

  6055 nt

  1511

  252

  29

  218a

  1512

  252

  29

  218b

  1513(a)

  253

  26

  4980H

  1513(b)

  256

  26

  prec. 4971

  1513(d)

  256

  26

  4980H nt

  1514(a)

  256

  26

  6056

  1514(b)

  257

  26

  6724

  1514(c)

  258

  26

  prec. 6055

  1514(d)

  258

  26

  6056 nt

  1515(a), (b)

  258

  26

  125

  1515(c)

  258

  26

  125 nt

  1551

  258

  42

  18111

  1552

  258

  42

  18112

  1553

  259

  42

  18113

  1554

  259

  42

  18114

  1555

  260

  42

  18115

  1556(a)

  260

  30

  921

  1556(b)

  260

  30

  932

  1556(c)

  260

  30

  921 nt

  1557

  260

  42

  18116

  1558

  261

  29

  218c

  1559

  261

  42

  18117

  1560

  261

  42

  18118

  1561

  262

  42

  300jj–51

  1563(a)

  264

  42

  300gg–21

  1563(b)

  264

  42

  300gg–91

  1563(c)(1)

  264

  42

  300gg–3

  1563(c)(3)

  265

  42

  300gg–25

  1563(c)(4)

  265

  42

  300gg–26

  1563(c)(5)

  266

  42

  300gg–27

  1563(c)(6)

  266

  42

  300gg–28

  1563(c)(8)

  266

  42

  300gg–1

  1563(c)(9)

  267

  42

  300gg–12

  1563(c)(10)

  268

  42

  300gg–9

  1563(c)(12)

  268

  42

  300gg–21

  1563(c)(13)

  269

  42

  300gg–22

  1563(c)(14)

  269

  42

  300gg–23

  1563(c)(15)

  269

  42

  300gg–62

  1563(c)(16)

  269

  42

  300gg–91

  1563

  42

  18119

  1563(d)

  42

  18120

  1563(e)

  29

  1185d

  1563(f)

  26

  9815

  2001(a)(1), (2)(A)

  271

  42

  1396a

  2001(a)(2)(B)

  272

  42

  1396b

  2001(a)(3)

  272

  42

  1396d

  2001(a)(4)(A)

  274

  42

  1396a

  2001(a)(4)(B)

  274

  42

  1396r–1

  2001(a)(5)(A), (B)

  274

  42

  1396a

  2001(a)(5)(C)

  275

  42

  1396d

  2001(a)(5)(D)

  275

  42

  1396b

  2001(a)(5)(E)

  275

  42

  1396u–7

  2001(b)

  275

  42

  1396a

  2001(c)

  276

  42

  1396u–7

  2001(d)(1)

  277

  42

  1396a

  2001(d)(2)

  278

  42

  1396a nt

  2001(e)(1)

  278

  42

  1396a

  2001(e)(2)(A)

  279

  42

  1396d

  2001(e)(2)(B)

  279

  42

  1396b

  2001(e)(2)(C)

  279

  42

  1396r–1

  2002(a), (b)

  279, 282

  42

  1396a

  2002(c)

  282

  42

  1396a nt

  2003(a), (b)

  282, 283

  42

  1396e–1

  2003(c)

  283

  42

  1396e–1 nt

  2004(a)

  283

  42

  1396a

  2004(b)

  283

  42

  1396r–1

  2004(c)(1)

  283

  42

  1396b

  2004(c)(2)

  283

  42

  1396u–7

  2004(d)

  283

  42

  1396a nt

  2005(a), (b)

  283

  42

  1308

  2005(c)(1)

  284

  42

  1396d

  2005(c)(2)

  284

  42

  1396d nt

  2006

  284

  42

  1396d

  2007(b)

  285

  42

  1396w–1

  2101(a)–(c)

  286, 287

  42

  1397ee

  2101(d)(1)

  287

  42

  1397bb

  2101(d)(2), (e)

  287

  42

  1397gg

  2101(f)

  287

  42

  1397jj nt

  2102(a)

  288

  42

  1396b nt

  2102(a)(1)

  288

  42

  1397dd

  2102(a)(2)

  288

  42

  1396 nt

  2102(a)(3)–(5)

  288

  42

  1397ee

  2102(a)(6)

  288

  42

  1397ii

  2102(a)(7)

  288

  42

  1397jj

  2102(a)(8)

  288

  42

  1396b

  2102(b)

  289

  42

  1396o–1

  2102(b)

  289

  42

  1396o–1 nt

  2201

  289

  42

  1396w–3

  2202(a)

  291

  42

  1396a

  2202(b)

  291

  42

  1396b

  2202(c)

  292

  42

  1396a nt

  2301(a)

  292

  42

  1396d

  2301(b)

  292

  42

  1396a

  2301(c)

  293

  42

  1396a nt

  2302(a)

  293

  42

  1396d

  2302(b)

  293

  42

  1397jj

  2303(a)(1)–(3)

  293, 294

  42

  1396a

  2303(a)(4)(A)

  294

  42

  1396d

  2303(a)(4)(B)

  294

  42

  1396b

  2303(b)(1)

  294

  42

  1396r–1c

  2303(b)(2)(A)

  296

  42

  1396a

  2303(b)(2)(B)

  296

  42

  1396b

  2303(c)

  296

  42

  1396u–7

  2303(d)

  296

  42

  1396a nt

  2304

  296

  42

  1396d

  2401

  297

  42

  1396n

  2402(a)

  301

  42

  1396n nt

  2402(b), (c)

  302, 303

  42

  1396n

  2402(d)(1)

  303

  42

  1396a

  2402(d)(2)(A)

  303

  42

  1396b

  2402(d)(2)(B)

  304

  42

  1396d

  2402(e), (f)

  304

  42

  1396n

  2402(g)

  304

  42

  1396a nt

  2403(a), (b)(1)

  304, 305

  42

  1396a nt

  2403(b)(2)

  305

  42

  1396a nt

  2404

  305

  42

  1396r–5 nt

  2501(a), (b)

  306, 307

  42

  1396r–8

  2501(c)(1)

  308

  42

  1396b

  2501(c)(2), (d)(1)

  308, 309

  42

  1396r–8

  2501(d)(2)

  309

  42

  1396r–8 nt

  2501(e)

  309

  42

  1396r–8

  2501(f)(1)

  309

  42

  256b

  2501(f)(2)

  310

  42

  256b nt

  2502(a)

  310

  42

  1396r–8

  2502(b)

  310

  42

  1396r–8 nt

  2503(a)–(c)

  310, 312

  42

  1396r–8

  2503(d)

  312

  42

  1396r–8 nt

  2551(a)

  312

  42

  1396r–4

  2551(b)

  314

  42

  1396r–4 nt

  Rep.

  2601(a), (b)(1)

  314, 315

  42

  1396n

  2601(b)(2)

  315

  42

  1315

  2602

  315

  42

  1315b

  2701

  317

  42

  1320b–9b

  2702

  318

  42

  1396b–1

  2703(a)

  319

  42

  1396w–4

  2703(b)(2)

  322

  42

  1396w–4 nt

  2704

  323

  42

  1396a nt

  2705

  324

  42

  1315a nt

  2706

  325

  42

  1396a nt

  2707

  326

  42

  1396a nt

  2801(a)

  328

  42

  1396

  2801(b)

  332

  42

  1395b–6

  2901(a), (b)

  333

  25

  1623

  2901(c)

  333

  42

  1396a

  2901(d)

  333

  42

  1320b–9

  2902(a)

  333

  42

  1395qq

  2902(b)

  333

  42

  1395qq nt

  2951

  334

  42

  711

  2952(a)

  344

  42

  712 nt

  2952(b)

  345

  42

  712

  2953

  347

  42

  713

  2954

  352

  42

  710

  2955(a)

  352

  42

  675

  2955(b)

  352

  42

  677

  2955(c)

  352

  42

  622

  2955(d)

  353

  42

  622 nt

  3001(a)(1)–(3)

  353–360

  42

  1395ww

  3001(b)

  362

  42

  1395ww nt

  3002(a)–(c)(1)

  363–365

  42

  1395w–4

  3002(c)(2)

  365

  42

  1395w–4 nt

  3002(c)(3)

  42

  1395w–4 nt

  3002(d)–(f)

  365

  42

  1395w–4

  3003(a)

  366

  42

  1395w–4

  3003(b)

  367

  42

  1395aaa

  3004(a), (b)

  368, 369

  42

  1395ww

  3004(c)

  370

  42

  1395f

  3005

  371

  42

  1395cc

  3007

  373

  42

  1395w–4

  3008(a)

  376

  42

  1395ww

  3011

  378

  42

  280j

  3012

  380

  42

  280j nt

  3013(a)(2)

  381

  42

  299c

  3013(a)(2)

  381

  42

  299c–1

  3013(a)(2)

  381

  42

  299c–2

  3013(a)(2)

  381

  42

  299c–3

  3013(a)(2)

  381

  42

  299c–4

  3013(a)(2)

  381

  42

  299c–5

  3013(a)(2)

  381

  42

  299c–6

  3013(a)(2)

  381

  42

  299c–7

  3013(a)(3)

  381

  42

  299c–7

  3013(a)(4)

  381

  42

  299b–31

  3013(b)

  383

  42

  1395aaa–1

  3014(a)

  384

  42

  1395aaa

  3014(b)

  385

  42

  1395aaa–1

  3015

  387

  42

  280j–1

  3015

  388

  42

  280j–2

  3021(a)

  389

  42

  1315a

  3021(b)

  394

  42

  1396a

  3021(c)

  395

  42

  1395cc–3

  3022

  395

  42

  1395jjj

  3023

  399

  42

  1395cc–4

  3024

  404

  42

  1395cc–5

  3025(a)

  408

  42

  1395ww

  3025(b)

  412

  42

  280j–3

  3026

  413

  42

  1395b–1 nt

  3027

  415

  42

  1395ww nt

  3101

  415

  42

  1395w–4

  3102

  416

  42

  1395w–4

  3103

  417

  42

  1395l

  3104

  417

  42

  1395w–4 nt

  3105(a)

  417

  42

  1395m

  3105(b)

  417

  42

  1395m nt

  3105(c)

  418

  42

  1395m

  3106(a)

  418

  42

  1395ww nt

  3106(b)

  418

  42

  1395ww nt

  3107

  418

  42

  1395w–4 nt

  3108(a)

  418

  42

  1395f

  3108(b)

  418

  42

  1395f nt

  3109(a)

  418

  42

  1395m

  3109(b)

  419

  42

  1395m nt

  3109(c)

  420

  42

  1395m nt

  3110(a)(1)

  420

  42

  1395p

  3110(a)(2)

  420

  42

  1395p nt

  3110(b)

  420

  42

  1395r

  3111(a)(1)

  421

  42

  1395w–4

  3111(a)(2)

  421

  42

  1395w–4 nt

  3112

  421

  42

  1395iii

  3113

  422

  42

  1395l nt

  3114

  423

  42

  1395l

  3121

  423

  42

  1395l

  3122

  423

  42

  1395l nt

  3123

  423

  42

  1395ww nt

  3124(a), (b)(1)

  424, 425

  42

  1395ww

  3124(b)(2)

  425

  42

  1395ww nt

  3125

  425

  42

  1395ww

  3126

  425

  42

  1395i–4 nt

  3128(a)

  426

  42

  1395m

  3128(b)

  426

  42

  1395m nt

  3129(a), (b)

  426

  42

  1395i–4

  3129(c)

  427

  42

  1395i–4 nt

  3131(a)(1)

  427

  42

  1395fff

  3131(b)

  428

  42

  1395fff

  3131(c)

  428

  42

  1395fff nt

  3131(d)

  429

  42

  1395fff nt

  3132

  430

  42

  1395f

  3133

  432

  42

  1395ww

  3134(a)

  434

  42

  1395w–4

  3134(b)(1)

  435

  42

  1395w–4 nt

  3134(b)(1)(C)

  435

  42

  1395w–4 nt

  Rep.

  3134(b)(2)

  435

  42

  1395ee

  3135(a), (b)

  436, 437

  42

  1395w–4

  3136(a), (b)

  437, 438

  42

  1395m

  3136(c)

  438

  42

  1395m nt

  3137(a)(1)

  438

  42

  1395ww nt

  3137(a)(2)

  438

  42

  1395ww nt

  3137(b), (c)

  438, 439

  42

  1395ww nt

  3138

  439

  42

  1395l

  3139(a)

  439

  42

  1395w–3a

  3139(b)

  440

  42

  1395w–3a nt

  3140

  440

  42

  1395d nt

  3141

  441

  42

  1395ww nt

  3143

  442

  42

  1395d nt

  3201(a)(1), (2)(A)

  442, 444

  42

  1395w–23

  3201(a)(2)(B)

  444

  42

  1395w–24

  3201(a)(2)(C)

  444

  42

  1395w–27a

  3201(a)(2)(D)

  444

  42

  1395w–29

  Rep.

  3201(b)

  444

  42

  1395w–23

  3201(c)–(d)(2)

  444

  42

  1395w–24

  3201(d)(3)

  445

  42

  1395w–24 nt

  Rep.

  3201(e)(1)

  445

  42

  1395w–23

  3201(e)(2)(A)(i)

  446

  42

  1395w–21

  3201(e)(2)(A)(ii)–(iv)

  446, 447

  42

  1395w–23

  3201(e)(2)(A)(v)

  447

  42

  1395w–24

  3201(e)(2)(B)

  447

  42

  1395w–21 nt

  Rep.

  3201(f)(1)

  447

  42

  1395w–23

  3201(f)(2)

  450

  42

  1395w–27a

  3201(g), (h)

  450, 452

  42

  1395w–23

  3201(i)(1)

  453

  42

  1395eee

  3201(i)(2)

  454

  42

  1395w–23

  3202(a)(1)

  454

  42

  1395w–22

  3202(a)(2)

  454

  42

  1395w–22 nt

  3202(b)(1)

  454

  42

  1395w–24

  3202(b)(2)

  455

  42

  1395w–23

  3202(b)(3)

  455

  42

  1395w–24

  3203

  456

  42

  1395w–23

  3204(a)(1)

  456

  42

  1395w–21

  3204(a)(2)

  456

  42

  1395w–21 nt

  3204(b)

  456

  42

  1395w–21

  3205(a)

  457

  42

  1395w–28

  3205(b)

  457

  42

  1395w–23

  3205(c)

  457

  42

  1395w–28

  3205(d)

  458

  42

  1395w–28 nt

  3205(e)

  458

  42

  1395w–28

  3205(f)

  458

  42

  1395w–23

  3205(g)

  459

  42

  1395w–28

  3206

  459

  42

  1395mm

  3207

  459

  42

  1395w–27 nt

  3208(a)

  459

  42

  1395w–28

  3208(b)

  460

  42

  1395w–28 nt

  3209(a)

  460

  42

  1395w–24

  3209(b)

  460

  42

  1395w–111

  3209(c)

  460

  42

  1395w–24 nt

  3210

  460

  42

  1395ss

  3301(a)

  461

  42

  1395w–153

  3301(b)

  462

  42

  1395w–114a

  3301(c)(1)

  467

  42

  1395w–102

  3301(c)(2)

  468

  42

  1395w–102 nt

  3301(d)(1)

  468

  42

  1320a–7b

  3301(d)(2)

  468

  42

  1396r–8

  3301(d)(3)

  468

  42

  1320a–7b nt

  3302(a)

  468

  42

  1395w–114

  3302(b)

  468

  42

  1395w–114 nt

  3303(a)

  469

  42

  1395w–114

  3303(b)

  469

  42

  1395w–101

  3303(c)

  469

  42

  1395w–101 nt

  3304(a)

  469

  42

  1395w–114

  3304(b)

  470

  42

  1395w–114 nt

  3305

  470

  42

  1395w–114

  3306

  470

  42

  1395b–3 nt

  3307(a)

  471

  42

  1395w–104

  3307(b)

  472

  42

  1395w–104 nt

  3308(a), (b)(1)

  472, 474

  42

  1395w–113

  3308(b)(2)

  474

  26

  6103

  3309

  475

  42

  1395w–114

  3310(a)

  475

  42

  1395w–104

  3310(b)

  475

  42

  1395w–104 nt

  3311

  475

  42

  1395w–154

  3312(a)

  476

  42

  1395w–104

  3312(b)

  476

  42

  1395w–104 nt

  3313

  477

  42

  1395w–101 nt

  3314(a)

  478

  42

  1395w–102

  3314(b)

  479

  42

  1395w–102 nt

  3315

  479

  42

  1395w–102

  3401(a)

  480

  42

  1395ww

  3401(b)

  481

  42

  1395yy

  3401(c), (d)

  481, 482

  42

  1395ww

  3401(e)

  483

  42

  1395fff

  3401(f)

  483

  42

  1395ww

  3401(g)

  484

  42

  1395f

  3401(h)

  485

  42

  1395rr

  3401(i)

  485

  42

  1395l

  3401(j)

  486

  42

  1395m

  3401(k), (l)

  486, 487

  42

  1395l

  3401(m), (n)

  487

  42

  1395m

  3401(o)

  488

  42

  1395u

  3401(p)

  488

  42

  1395ww nt

  3402

  488

  42

  1395r

  3403(a)(1)

  489

  42

  1395kkk

  3403(a)(2)

  506

  18

  207

  3403(b)

  506

  42

  1395kkk–1

  3403(c)

  507

  42

  1395b–6

  3501

  508

  42

  299b–33

  3501

  511

  42

  299b–34

  3502

  513

  42

  256a–1

  3503

  516

  42

  299b–35

  3504(a)(1)

  518

  42

  300d–5

  3504(a)(2)

  518

  42

  300d–6

  3504(a)(3)

  520

  42

  300d–32

  3504(b)

  521

  42

  289g–4

  3505(a)(1)

  522

  42

  300d–41

  3505(a)(2)

  523

  42

  300d–42

  3505(a)(3)

  524

  42

  300d–43

  3505(a)(4)

  524

  42

  300d–44

  3505(a)(5)

  525

  42

  300d–45

  3505(a)(6)

  525

  42

  300d–46

  3505(b)

  525

  42

  300d–81

  3505(b)

  527

  42

  300d–82

  3506

  527

  42

  299b–36

  3507

  530

  21

  352 nt

  3508

  530

  42

  294j

  3509(a)(1)

  531

  42

  237a

  3509(a)(2)

  533

  42

  237a nt

  3509(b)

  533

  42

  242s

  3509(c)

  534

  42

  287d

  3509(d)

  534

  42

  290aa

  3509(e)(1)

  534

  42

  299b–25

  3509(e)(1)

  534

  42

  299b–26

  3509(e)(2)

  534

  42

  299b–24a

  3509(f)

  535

  42

  914

  3509(g)

  536

  21

  399b

  3509(h)

  537

  42

  237a nt

  3509(i)

  537

  42

  237a nt

  3509(j)

  537

  42

  237a nt

  3510

  537

  42

  256a

  3601

  538

  42

  1395 nt

  3602

  538

  42

  1395w–21 nt

  4001

  538

  42

  300u–10

  4002

  541

  42

  300u–11

  4003(a)

  541

  42

  299b–4

  4003(b)(1)

  543

  42

  280g–10

  4003(b)(2)(A)

  544

  42

  280g–7

  4003(b)(2)(B)

  544

  42

  280g–8

  4004

  544

  42

  300u–12

  4101(a)

  546

  42

  280h–4

  4101(b)

  547

  42

  280h–5

  4102(a)

  550

  42

  280k

  4102(a)

  551

  42

  280k–1

  4102(a)

  551

  42

  280k–2

  4102(b), (c)

  551, 552

  42

  247b–14

  4102(d)

  552

  42

  280k–3

  4103(a), (b)

  553

  42

  1395x

  4103(c)(1)

  555

  42

  1395l

  4103(c)(2)

  556

  42

  1395w–4

  4103(c)(3), (4)

  556

  42

  1395l

  4103(d)

  556

  42

  1395y

  4103(e)

  557

  42

  1395l nt

  4104(a)

  557

  42

  1395x

  4104(b), (c)

  557, 558

  42

  1395l

  4104(d)

  558

  42

  1395l nt

  4105(a)

  558

  42

  1395m

  4105(b)

  559

  42

  1395m nt

  4106(a), (b)

  559

  42

  1396d

  4106(c)

  560

  42

  1396d nt

  4107(a)

  560

  42

  1396d

  4107(b)

  560

  42

  1396r–8

  4107(c)(1)

  561

  42

  1396o

  4107(c)(2)

  561

  42

  1396o–1

  4107(d)

  561

  42

  1396d nt

  4108

  561

  42

  1396a nt

  4201

  564

  42

  300u–13

  4202

  566

  42

  300u–14

  4203

  570

  29

  794f

  4204(a)–(c)

  571, 572

  42

  247b

  4204(d)

  572

  42

  247b nt

  4205(a), (b)

  573

  21

  343

  4205(c)

  576

  21

  343–1

  4205(d)

  576

  21

  343 nt

  4206

  576

  42

  254b

  4207

  577

  29

  207

  4301

  578

  42

  300u–15

  4302(a)

  578

  42

  300kk

  4302(b)(1)(A)

  581

  42

  1396a

  4302(b)(1)(B)

  581

  42

  1397hh

  4302(b)(2)

  581

  42

  1396w–5

  4303

  583

  42

  280l

  4303

  583

  42

  280l–1

  4303

  583

  42

  280l–2

  4303

  583

  42

  280l–3

  4304

  584

  42

  300hh–31

  4305(b)

  585

  42

  284q

  4305(c)

  586

  42

  294i

  4306

  587

  42

  1320b–9a

  5001

  588

  42

  294q nt

  5002(a)

  588

  42

  294q nt

  5002(b)

  590

  42

  295p

  5002(c)

  591

  42

  296

  5101

  592

  42

  294q

  5102

  599

  42

  294r

  5103(a)

  603

  42

  294n

  5103(b)

  605

  42

  294n nt

  5103(c)

  605

  42

  295j

  5103(d)(1)

  605

  42

  293l

  5103(d)(2)

  606

  42

  294f

  5103(d)(3)

  606

  42

  294o

  5201(a)

  606

  42

  292s

  5201(b)

  607

  42

  292s nt

  5202

  607

  42

  297b

  5203

  607

  42

  295f

  5204

  609

  42

  295f–1

  5205(a)

  611

  20

  1078–11 nt

  5205(b)

  611

  20

  1078–11

  5206(a)

  611

  42

  295

  5206(b)

  612

  42

  295f–2

  5207

  612

  42

  254q

  5208(a)

  612

  42

  254c–1a nt

  5208(b)

  613

  42

  254c–1a

  5209

  613

  42

  238f nt

  5210

  614

  42

  204

  5301

  615

  42

  293k

  Rep.

  5301

  615

  42

  293k

  5302

  617

  42

  293k–1

  5303(1)

  618

  42

  293l

  5303(2)

  618

  42

  293k–2

  5304

  621

  42

  256g–1

  5305(a), (b)

  622, 624

  42

  294c

  5305(c)

  625

  42

  298

  5306(a)(1)

  626

  42

  294g

  Rep.

  5306(a)(2)

  626

  42

  294f

  5306(a)(3)

  626

  42

  294e–1

  5306(b)

  628

  42

  294f

  5307(a)

  628

  42

  293e

  5307(b)

  628

  42

  296e–1

  5308

  629

  42

  296j

  5309(a)

  629

  42

  296p

  5309(b)

  630

  42

  296p–1

  5310(a)

  631

  42

  297n

  5310(b)(1)

  631

  42

  296g

  5310(b)(2)

  631

  42

  297a

  5310(b)(2)

  631

  42

  297b

  5310(b)(2)

  631

  42

  297d

  5310(b)(2)

  631

  42

  297g

  5310(b)(2)

  631

  42

  297i

  5310(b)(3), (4)

  631

  42

  297b

  5310(b)(5)

  631

  42

  297e

  5310(b)(6)

  631

  42

  297a

  5310(b)(7)

  631

  42

  298d

  5310(b)(8)(A)

  631

  42

  297t

  5310(b)(9)(A)

  631

  42

  297w

  5310(b)(9)(A)

  631

  42

  297x

  5310(b)(10)(A)

  631

  42

  298

  5311(a)

  631

  42

  297n–1

  5311(b)

  632

  42

  297o

  5312

  633

  42

  298d

  5313(a)

  633

  42

  280g–11

  5314

  636

  42

  295f–3

  5315

  637

  42

  239l

  5315

  637

  42

  239l–1

  5315

  639

  42

  239l–2

  5315

  642

  42

  239l–3

  5316

  42

  296j–1

  5401

  642

  42

  293

  5402(a)

  644

  42

  293b

  5402(b)–(d)

  644

  42

  293d

  5403(a)

  644

  42

  294a

  5403(b)

  648

  42

  294b

  Rep.

  5403(b)

  648

  42

  294b

  5404

  649

  42

  296m

  5405

  649

  42

  280g–12

  5501(a)(1)

  652

  42

  1395l

  5501(a)(2)

  653

  42

  1395m

  5501(b)(1)

  653

  42

  1395l

  5501(b)(2)

  654

  42

  1395m

  5501(c)

  654

  42

  1395w–4

  5502(a)(1)

  654

  42

  1395x

  5502(a)(2)

  654

  42

  1395x nt

  Rep.

  5502(b)

  654

  42

  1395m

  5503(a), (b)

  655, 658

  42

  1395ww

  5503(c)

  659

  42

  1395ww nt

  5504(a), (b)

  659

  42

  1395ww

  5504(c)

  660

  42

  1395ww nt

  5505(a), (b)

  660

  42

  1395ww

  5505(c)

  661

  42

  1395ww nt

  5505(d)

  42

  1395ww nt

  5506(a), (b)

  661, 662

  42

  1395ww

  5506(c)

  662

  42

  1395ww nt

  5506(d)

  662

  42

  1395ww nt

  5506(e)

  663

  42

  1395ww

  5507(a)

  663

  42

  1397g

  5507(b)

  668

  42

  701

  5508(a)

  668

  42

  293l–1

  5508(b)

  670

  42

  254m

  5508(c)

  670

  42

  256h

  5509

  674

  42

  1395ww nt

  5601

  676

  42

  254b

  5602

  677

  42

  254b nt

  5603

  679

  42

  300w–9

  5604

  679

  42

  290bb–42

  5605

  680

  36

  150303 nt

  5606

  42

  254b–1

  5701

  684

  42

  204 nt

  6001(a)

  684

  42

  1395nn

  6001(b)

  689

  42

  1395nn nt

  6002

  689

  42

  1320a–7h

  6003(a)

  697

  42

  1395nn

  6003(b)

  697

  42

  1395nn nt

  6004

  697

  42

  1320a–7i

  6005

  698

  42

  1320b–23

  6101(a)

  699

  42

  1320a–3

  6101(b)

  702

  42

  1320a–3 nt

  6101(c)(1)(A)

  702

  42

  1395i–3

  6101(c)(1)(B)

  702

  42

  1396r

  6101(c)(2)

  702

  42

  1395i–3 nt

  6102

  702

  42

  1320a–7j

  6103(a)(1), (2)(A)

  704, 706

  42

  1395i–3

  6103(a)(2)(B)

  706

  42

  1395i–3 nt

  6103(a)(3)

  706

  42

  1395i–3

  6103(b)(1), (2)(A)

  707, 708

  42

  1396r

  6103(b)(2)(B)

  709

  42

  1396r nt

  6103(b)(3)

  709

  42

  1396r

  6103(c)(1)

  709

  42

  1395i–3

  6103(c)(2)

  709

  42

  1396r

  6103(c)(3)

  710

  42

  1395i–3 nt

  6103(d)(1)

  710

  42

  1395i–3 nt

  6103(d)(2)

  710

  42

  1396a

  6103(d)(3)

  710

  42

  1395i–3 nt

  6103(e)

  710

  42

  1395i–3 nt

  6104

  711

  42

  1395yy

  6105(a)

  711

  42

  1320a–7j

  6105(b)

  712

  42

  1320a–7j nt

  6106

  712

  42

  1320a–7j

  6111(a)

  713

  42

  1395i–3

  6111(b)

  715

  42

  1396r

  6111(c)

  716

  42

  1395i–3 nt

  6112

  716

  42

  1320a–7j nt

  6113(a)

  718

  42

  1320a–7j

  6113(b)

  719

  42

  1395i–3

  6113(c)

  720

  42

  1320a–7j nt

  6114

  720

  42

  1395i–3 nt

  6121(a)

  720

  42

  1395i–3

  6121(b)

  721

  42

  1396r

  6121(c)

  721

  42

  1395i–3 nt

  6201

  721

  42

  1320a–7l

  6301(a)

  727

  42

  1320e

  6301(b)

  738

  42

  299b–37

  6301(c)

  740

  42

  1320e–1

  6301(d)

  741

  42

  1320e–2

  6301(e)(1)(A)

  742

  26

  9511

  6301(e)(1)(B)

  743

  26

  prec. 9501

  6301(e)(2)(A)

  743

  26

  prec. 4375

  6301(e)(2)(A)

  743

  26

  4375

  6301(e)(2)(A)

  744

  26

  4376

  6301(e)(2)(A)

  746

  26

  4377

  6301(e)(2)(B)(i)

  746

  26

  prec. 4371

  6301(e)(2)(B)(ii)

  747

  26

  prec. 4001

  6301(f)

  747

  26

  501

  6302

  747

  42

  299b–8 nt

  Elim.

  6401(a)

  747

  42

  1395cc

  6401(b)(1)

  751

  42

  1396a

  6401(b)(2)

  752

  42

  1395cc nt

  6401(b)(3)

  753

  42

  1396a

  6401(c)

  753

  42

  1397gg

  6402(a)

  753

  42

  1320a–7k

  6402(b)(1)

  756

  42

  1395w–115

  6402(b)(2)

  756

  5

  552a

  6402(b)(3)

  756

  42

  405

  6402(c)

  757

  42

  1396b

  6402(d)(1)

  757

  42

  1320a–7

  6402(d)(2)

  757

  42

  1320a–7a

  6402(e)

  759

  42

  1320a–7

  6402(f)

  759

  42

  1320a–7b

  6402(g)(1)

  759

  42

  1395m

  6402(g)(2)

  759

  42

  1395x

  6402(g)(3), (h)(1)

  759, 760

  42

  1395y

  6402(h)(2)

  760

  42

  1396b

  6402(i)

  760

  42

  1395i

  6402(j)(1)

  762

  42

  1395ddd

  6402(j)(2)

  762

  42

  1396u–6

  6402(k)

  763

  42

  1320a–7

  6403(a)

  763

  42

  1320a–7e

  6403(b)

  764

  42

  1396r–2

  6403(c)

  766

  42

  1320a–7c

  6403(d)

  766

  42

  1320a–7e nt

  6404(a)(1)

  767

  42

  1395f

  6404(a)(2)(A)

  767

  42

  1395u

  6404(a)(2)(B)

  768

  42

  1395n

  6404(b)

  768

  42

  1395f nt

  6405(a)

  768

  42

  1395m

  6405(b)(1)

  768

  42

  1395f

  6405(b)(2)

  768

  42

  1395n

  6405(c)

  768

  42

  1395f nt

  6405(d)

  769

  42

  1395f nt

  6406(a)

  769

  42

  1395u

  6406(b)

  769

  42

  1395cc

  6406(c)

  769

  42

  1320a–7

  6406(d)

  769

  42

  1320a–7 nt

  6407(a)(1)

  769

  42

  1395f

  6407(a)(2)

  770

  42

  1395n

  6407(b)

  770

  42

  1395m

  6407(c)

  770

  42

  1395f nt

  6407(d)

  770

  42

  1395f nt

  6408(a)

  770

  42

  1320a–7a

  6408(b)

  771

  42

  1395w–27

  6408(c)

  772

  42

  1320a–7

  6408(d)

  772

  42

  1320a–7 nt

  6409

  772

  42

  1395nn nt

  6410(a)

  773

  42

  1395w–3

  6410(b)

  773

  42

  1395m

  6411(a)(1)

  773

  42

  1396a

  6411(a)(2)

  775

  42

  1396a nt

  6411(b)

  775

  42

  1395ddd

  6411(c)

  775

  42

  1396a nt

  6501–6503

  776

  42

  1396a

  6504(a), (b)(1)

  776, 777

  42

  1396b

  6504(b)(2)

  777

  42

  1396b nt

  6505

  777

  42

  1396a

  6506(a)(1)

  777

  42

  1396b

  6506(a)(2)

  777

  42

  1396b nt

  6506(b)

  777

  42

  1396b nt

  6507

  778

  42

  1396b

  6508

  778

  42

  1396a nt

  6601(a)

  779

  29

  1149

  6601(b)

  779

  29

  1131

  6602

  780

  18

  24

  6603

  780

  42

  300gg–95

  6604(a)

  780

  29

  1150

  6605(a)

  780

  29

  1151

  6606

  781

  29

  1021

  6607

  781

  29

  1134

  6701

  782

  42

  1305 nt

  6702

  782

  42

  1395i–3a nt

  6703(a)(1)(C)

  782

  42

  1397j

  6703(a)(1)(C)

  785

  42

  1397j–1

  6703(a)(1)(C)

  786

  42

  1397k

  6703(a)(1)(C)

  787

  42

  1397k–1

  6703(a)(1)(C)

  789

  42

  1397k–2

  6703(a)(1)(C)

  790

  42

  1397k–3

  6703(a)(1)(C)

  790

  42

  1397l

  6703(a)(1)(C)

  791

  42

  1397m

  6703(a)(1)(C)

  794

  42

  1397m–1

  6703(a)(1)(C)

  796

  42

  1397m–2

  6703(a)(1)(C)

  796

  42

  1397m–3

  6703(a)(1)(C)

  797

  42

  1397m–4

  6703(a)(1)(C)

  798

  42

  1397m–5

  6703(a)(2)(A)

  798

  42

  602

  6703(a)(2)(B)

  798

  42

  602 nt

  6703(b)(1), (2)

  798, 799

  42

  1395i–3a

  6703(b)(3)

  800

  42

  1320b–25

  6703(d)(1)(A)

  803

  42

  1397

  6703(d)(1)(B)

  803

  42

  1397

  6703(d)(1)(B)

  803

  42

  1397a

  6703(d)(1)(B)

  803

  42

  1397c

  6703(d)(1)(B)

  803

  42

  1397d

  6703(d)(1)(B)

  803

  42

  1397e

  6703(d)(1)(B)

  803

  42

  1397g

  6703(d)(2)(A)

  803

  42

  604

  6703(d)(2)(B)

  803

  42

  622

  6703(d)(2)(B)

  803

  42

  671

  6703(d)(2)(B)

  803

  42

  672

  6703(d)(2)(B)

  803

  42

  673

  6703(d)(3)(A)

  804

  42

  1320a–7

  6703(d)(3)(B)

  804

  42

  1320a–7a

  7001(a)

  804

  42

  201 nt

  7002(a), (b)

  804, 814

  42

  262

  7002(c)(1)

  815

  35

  271

  7002(c)(2)

  816

  28

  2201

  7002(d)(1)

  816

  21

  355

  7002(d)(2)

  816

  21

  355c

  7002(e)

  817

  42

  262 nt

  7002(f)(3)(A)

  818

  21

  379g

  7002(f)(3)(B), (C)

  818, 819

  42

  262 nt

  7002(g)(1)

  819

  42

  262

  7002(g)(2)(A)

  820

  42

  284m

  7002(g)(2)(B)

  820

  21

  355a

  7002(h)

  821

  42

  262 nt

  7003

  821

  42

  262 nt

  7101(a)–(d)

  821–823

  42

  256b

  7101(e)

  823

  42

  256b nt

  7102

  823

  42

  256b

  8001

  828

  42

  201 nt

  Rep.

  8002(a)(1)

  828–846

  42

  300ll to 300ll–9

  Rep.

  8002(a)(2), (b)

  846

  42

  1396a

  8002(c)

  846

  42

  300ll nt

  Rep.

  8002(d)

  847

  42

  1396p nt

  8002(e)

  847

  42

  300ll nt

  Rep.

  8002(f)

  847

  42

  300ll nt

  Rep.

  9001(a)

  847

  26

  4980I

  9001(b)

  853

  26

  prec. 4971

  9001(c)

  853

  26

  4980I nt

  9002(a)

  853

  26

  6051

  9002(b)

  854

  26

  6051 nt

  9003(a)

  854

  26

  223

  9003(b)

  854

  26

  220

  9003(c)

  854

  26

  106

  9003(d)(1)

  854

  26

  220 nt

  9003(d)(2)

  854

  26

  106 nt

  9004(a)

  854

  26

  223

  9004(b)

  854

  26

  220

  9004(c)

  854

  26

  220 nt

  9005(a)

  854

  26

  125

  9005(b)

  855

  26

  125 nt

  9006(a), (b)

  855

  26

  6041

  9006(c)

  855

  26

  6041 nt

  9007(a)

  855

  26

  501

  9007(b)(1)

  857

  26

  4959

  9007(b)(2)

  857

  26

  prec. 4958

  9007(c)

  857

  26

  501 nt

  9007(d)

  857

  26

  6033

  9007(e)

  858

  26

  501 nt

  9007(f)

  858

  26

  501 nt

  9008

  859

  26

  nt. prec. 4001

  9008(k)

  862

  42

  1395t

  9009

  862

  26

  nt. prec. 4001

  Rep.

  9010

  865

  26

  nt. prec. 4001

  9012(a)

  868

  26

  139A

  9012(b)

  868

  26

  139A nt

  9013(a), (b)

  868

  26

  213

  9013(c)

  868

  26

  56

  9013(d)

  868

  26

  56 nt

  9014(a)

  868

  26

  162

  9014(b)

  870

  26

  162 nt

  9015(a)(1)

  870

  26

  3101

  9015(a)(2)

  871

  26

  3102

  9015(b)(1)

  871

  26

  1401

  9015(b)(2)(A)

  871

  26

  164

  9015(b)(2)(B)

  871

  26

  1402

  9015(c)

  872

  26

  164 nt

  9016(a)

  872

  26

  833

  9016(b)

  872

  26

  833 nt

  9017(a)

  872

  26

  prec. 5000B

  Elim.

  9017(a)

  872

  26

  5000B

  Elim.

  9017(b)

  873

  26

  prec. 4001

  Elim.

  9017(c)

  873

  26

  5000B nt

  Elim.

  9021(a)

  873

  26

  139D

  9021(b)

  874

  26

  prec. 101

  9021(c)

  874

  26

  139D nt

  9021(d)

  874

  26

  139D nt

  9022(a)

  874

  26

  125

  9022(b)

  876

  26

  125 nt

  9023(a)

  877

  26

  48D

  9023(b)

  880

  26

  46

  9023(c)(1)

  880

  26

  49

  9023(c)(2)

  880

  26

  280C

  9023(d)

  881

  26

  prec. 46

  9023(e)

  881

  26

  48D nt

  9023(f)

  883

  26

  46 nt

  10101(a)

  883

  42

  300gg–11

  10101(b)

  884

  42

  300gg–15

  10101(c)

  884

  42

  300gg–15a

  10101(d)

  884

  42

  300gg–16

  10101(e)

  884

  42

  300gg–17

  10101(f)

  885

  42

  300gg–18

  10101(g)

  887

  42

  300gg–19

  10101(h)

  888

  42

  300gg–19a

  10101(i)

  891

  42

  300gg–94

  10102(a)

  892

  42

  18002

  10102(b)

  892

  42

  18003

  10103(a)

  892

  42

  300gg

  10103(b)

  892

  42

  300gg–7

  10103(c)

  892

  42

  300gg–8

  10103(d)

  895

  42

  18011

  10103(e)

  895

  42

  300gg nt

  10103(f)(1)

  895

  42

  300gg nt

  10103(f)(2)

  895

  42

  18013

  10104(a)

  896

  42

  18021

  10104(b)

  896

  42

  18022

  10104(c)

  896

  42

  18023

  10104(d)

  900

  42

  18024

  10104(e)–(h)

  900, 901

  42

  18031

  10104(i)

  901

  42

  18032

  10104(j)(1)

  901

  42

  18033 nt

  10104(j)(2)

  901

  31

  3730

  10104(k)

  902

  42

  18033

  10104(l)

  902

  42

  18042

  10104(m)

  902

  42

  18043

  Rep.

  10104(n)

  902

  42

  18044

  10104(o)

  902

  42

  18051

  10104(p)

  902

  42

  18053

  10104(q)

  902

  42

  18054

  10104(r)

  906

  42

  18061

  10105(a)–(c)

  906

  26

  36B

  10105(d)

  906

  26

  6211

  10105(e)(1), (2)

  906

  26

  45R

  10105(e)(3)

  906

  26

  280C

  10105(e)(4)

  907

  26

  38 nt

  10105(e)(5)

  907

  26

  45R nt

  10106(a)

  907

  42

  18091

  10106(b)–(d)

  909, 910

  26

  5000A

  10106(e)–(f)(2)

  910

  26

  4980H

  10106(f)(3)

  911

  26

  4980H nt

  10106(g)

  911

  26

  6056

  10107(a)

  911

  42

  300gg–21

  10107(b)(1)

  911

  26

  9815

  10107(b)(1)

  911

  29

  1185d

  10107(b)(1)

  911

  42

  300gg–1

  10107(b)(1)

  911

  42

  300gg–2

  10107(b)(1)

  911

  42

  300gg–3

  10107(b)(1)

  911

  42

  300gg–9

  10107(b)(1)

  911

  42

  300gg–11

  10107(b)(1)

  911

  42

  300gg–12

  10107(b)(1)

  911

  42

  300gg–21

  10107(b)(1)

  911

  42

  300gg–22

  10107(b)(1)

  911

  42

  300gg–23

  10107(b)(1)

  911

  42

  300gg–25

  10107(b)(1)

  911

  42

  300gg–26

  10107(b)(1)

  911

  42

  300gg–27

  10107(b)(1)

  911

  42

  300gg–28

  10107(b)(1)

  911

  42

  300gg–62

  10107(b)(1)

  911

  42

  300gg–91

  10107(b)(1)

  911

  42

  18120

  10107(b)(2)

  912

  42

  18119

  10108(a)–(e)

  912, 913

  42

  18101

  Rep.

  10108(f)(1)

  913

  26

  139D

  Rep.

  10108(f)(2)

  913

  26

  prec. 101

  10108(f)(3)

  913

  26

  139D nt

  10108(g)(1)

  913

  26

  162

  10108(g)(2)

  914

  26

  162 nt

  10108(h)(1)

  914

  26

  36B

  10108(h)(2)

  914

  26

  36B nt

  10108(i)(1)(A)

  914

  26

  4980H

  10108(i)(1)(B)

  914

  26

  4980H nt

  10108(i)(2)

  914

  29

  218b

  10108(j)(1)–(3)(D)

  914, 915

  26

  6056

  10108(j)(3)(E), (F)

  915

  26

  6724

  10108(j)(3)(G)

  915

  26

  prec. 6055

  10108(j)(4)

  915

  26

  6056 nt

  10109(a)

  915

  42

  1320d–2

  10109(b), (c)

  916

  42

  1320d–2 nt

  10201(a)(1), (2)

  917

  42

  1396a

  10201(a)(3)

  918

  42

  1396a nt

  10201(b)

  918

  42

  1396a

  10201(c)

  918

  42

  1396d

  10201(d)

  919

  42

  1308

  10201(e)

  920

  42

  1396r–4

  10201(f)

  922

  42

  1396r–4 nt

  Rep.

  10201(g)

  922

  42

  1397ee

  10201(h)

  922

  42

  713

  10201(i)

  922

  42

  1315

  10202

  923

  42

  1396d nt

  10203(a)

  927

  42

  18031

  10203(b)

  927

  42

  1396e nt

  10203(b)(1)

  927

  42

  1396e

  10203(b)(2)

  927

  42

  1396e–1

  10203(b)(2)(B)

  927

  42

  1396e–1 nt

  10203(b)(3), (4), (c)

  927, 928

  42

  1397ee

  10203(d)(1)–(2)(B)

  928–930

  42

  1397dd

  10203(d)(2)(C)

  930

  42

  1397ee

  10203(d)(2)(D)

  930

  42

  1397jj

  10203(d)(2)(E)

  931

  42

  1397mm

  10211

  931

  42

  18201

  10212

  932

  42

  18202

  10213

  932

  42

  18203

  10214

  935

  42

  18204

  10221(a)

  935

  25

  1601 nt

  10221(a)

  935

  25

  1680o

  10221(a)

  935

  25

  1616p

  Rep.

  10221(a)

  935

  25

  1621h

  10221(a)

  935

  25

  1621j

  10221(a)

  935

  25

  1621o

  10221(a)

  935

  25

  1621w

  Rep.

  10221(a)

  935

  25

  1638a

  Rep.

  10221(a)

  935

  25

  1647

  Rep.

  10221(a)

  935

  25

  1660b

  10221(a)

  935

  25

  1660d

  Rep.

  10221(a)

  935

  25

  1663

  Rep.

  10221(a)

  935

  25

  1675

  Rep.

  10221(a)

  935

  25

  1621c

  10221(a)

  935

  25

  1621l

  10221(a)

  935

  25

  1638b

  10221(a)

  935

  25

  1601

  10221(a)

  935

  25

  1602

  10221(a)

  935

  25

  1603

  10221(a)

  935

  25

  1616l

  10221(a)

  935

  25

  1616p

  10221(a)

  935

  25

  1616q

  10221(a)

  935

  25

  1616r

  Rep.

  10221(a)

  935

  25

  1621

  10221(a)

  935

  25

  1621a

  10221(a)

  935

  25

  1621c

  10221(a)

  935

  25

  1621d

  10221(a)

  935

  25

  1680k

  Rep.

  10221(a)

  935

  25

  1680l

  10221(a)

  935

  25

  1621e

  10221(a)

  935

  25

  1621f

  10221(a)

  935

  25

  1621h

  10221(a)

  935

  25

  1621k

  10221(a)

  935

  25

  1621l

  10221(a)

  935

  25

  1621m

  10221(a)

  935

  25

  1621o

  10221(a)

  935

  25

  1621p

  10221(a)

  935

  25

  1621q

  10221(a)

  935

  25

  1621t

  10221(a)

  935

  25

  1616r

  10221(a)

  935

  25

  1615

  10221(a)

  935

  25

  1621u

  10221(a)

  935

  25

  1621v

  10221(a)

  935

  25

  1621y

  10221(a)

  935

  25

  1631

  10221(a)

  935

  25

  1637

  10221(a)

  935

  25

  1638a

  10221(a)

  935

  25

  1638e

  10221(a)

  935

  25

  1638f

  10221(a)

  935

  25

  1638g

  10221(a)

  935

  25

  1641

  10221(a)

  935

  25

  1642

  10221(a)

  935

  25

  1644

  10221(a)

  935

  25

  1645

  10221(a)

  935

  25

  1647

  10221(a)

  935

  25

  1647a

  10221(a)

  935

  25

  1647b

  10221(a)

  935

  25

  1647c

  10221(a)

  935

  25

  1647d

  10221(a)

  935

  25

  1659

  10221(a)

  935

  25

  1660b

  10221(a)

  935

  25

  1660d

  10221(a)

  935

  25

  1652

  10221(a)

  935

  25

  1660e

  10221(a)

  935

  25

  1660f

  10221(a)

  935

  25

  1660g

  10221(a)

  935

  25

  1660h

  10221(a)

  935

  25

  1661

  10221(a)

  935

  25

  1663

  10221(a)

  935

  25

  1663a

  10221(a)

  935

  25

  1665

  10221(a)

  935

  25

  1665a

  10221(a)

  935

  25

  1665b

  10221(a)

  935

  25

  1665c

  10221(a)

  935

  25

  1665d

  10221(a)

  935

  25

  1665e

  10221(a)

  935

  25

  1665f

  10221(a)

  935

  25

  1665g

  10221(a)

  935

  25

  1665h

  10221(a)

  935

  25

  1665i

  10221(a)

  935

  25

  1665j

  10221(a)

  935

  25

  1665k

  10221(a)

  935

  25

  1665l

  10221(a)

  935

  25

  1665m

  10221(a)

  935

  25

  1665n

  10221(a)

  935

  25

  1667

  10221(a)

  935

  25

  1667a

  10221(a)

  935

  25

  1667b

  10221(a)

  935

  25

  1667c

  10221(a)

  935

  25

  1667d

  10221(a)

  935

  25

  1667e

  10221(a)

  935

  25

  1675

  10221(a)

  935

  25

  1678

  10221(a)

  935

  25

  1678

  Rep.

  10221(a)

  935

  25

  1678a

  10221(a)

  935

  25

  1679

  10221(a)

  935

  25

  1679

  Rep.

  10221(a)

  935

  25

  1680b

  10221(a)

  935

  25

  1680c

  10221(a)

  935

  25

  1680p

  10221(a)

  935

  25

  1680q

  10221(a)

  935

  25

  1680r

  10221(a)

  935

  25

  1680s

  10221(a)

  935

  25

  1680t

  10221(a)

  935

  25

  1680u

  10221(a)

  935

  25

  1680v

  10221(a)

  935

  42

  1395qq

  10221(a)

  935

  42

  1395l

  10221(a)

  935

  42

  11705

  10221(a)

  935

  42

  11706

  10221(a)

  935

  42

  11709

  10221(a)

  935

  42

  11705

  10221(a)

  935

  42

  11705 nt

  10221(a)

  935

  42

  11711

  10221(b)(1)

  935

  25

  1616l

  10221(b)(2)

  936

  25

  1616r

  Rep.

  10221(b)(3)

  936

  25

  1676

  10221(b)(4)

  936

  42

  1395l

  10221(b)(4)

  936

  42

  1395qq

  10302

  937

  42

  280j

  10303(a)

  937

  42

  299b–31

  10303(b)

  938

  42

  1395aaa–1

  10303(c)

  938

  42

  299 nt

  10304

  938

  42

  1395aaa

  10304

  938

  42

  1395aaa–1

  10305

  938

  42

  280j–1

  10306

  939

  42

  1315a

  10307

  940

  42

  1395jjj

  10308(a), (b)(1)

  941, 942

  42

  1395cc–4

  10308(b)(2)

  942

  42

  1395cc–5

  10309

  942

  42

  1395ww

  10310

  942

  42

  1395w–4

  10311(a)

  942

  42

  1395m

  10311(b)

  943

  42

  1395m nt

  10311(c)

  943

  42

  1395m

  10312(a)

  943

  42

  1395ww nt

  10312(b)

  943

  42

  1395ww nt

  10313

  943

  42

  1395ww nt

  10314

  944

  42

  1395ww

  10315(a)

  944

  42

  1395fff

  10315(b)

  944

  42

  1395fff nt

  10316

  946

  42

  1395ww

  10317

  947

  42

  1395ww nt

  10317

  947

  42

  1395ww nt

  10318

  948

  42

  1395w–23

  10319(a)–(c)

  948

  42

  1395ww

  10319(d)

  949

  42

  1395fff

  10319(e)

  949

  42

  1395ww

  10319(f)

  949

  42

  1395f

  10319(g)

  949

  42

  1395l

  10320(a), (b)

  949, 952

  42

  1395kkk

  10320(b)

  952

  18

  207

  10320(b)

  952

  42

  1395b–6

  10320(b)

  952

  42

  1395kkk nt

  10320(b)

  952

  42

  1395kkk–1

  10320(c)

  952

  42

  1395kkk nt

  10321

  952

  42

  256a–1

  10322(a)

  952

  42

  1395ww

  10322(b)

  954

  42

  1395aaa

  10323(a)

  954

  42

  1395rr–1

  10323(b)

  957

  42

  1397h

  10324(a)

  959

  42

  1395ww

  10324(b)

  960

  42

  1395l

  10324(c)

  960

  42

  1395w–4

  10326

  961

  42

  1395b–1 nt

  10327(a)

  962

  42

  1395w–4

  10327(b)

  963

  42

  1395w–4 nt

  10327(c)(1)

  964

  42

  1395w–27a

  10327(c)(2)

  964

  42

  1395w–27a nt

  10328(a)

  964

  42

  1395w–104

  10328(b)

  965

  42

  1395w–104 nt

  10331

  966

  42

  1395w–5

  10332(a)

  968

  42

  1395kk

  10332(b)

  970

  42

  1395kk nt

  10333

  970

  42

  256i

  10334(a)(1)

  971

  42

  300u–6

  10334(a)(2)

  971

  42

  300u–6 nt

  10334(a)(3)

  972

  42

  300u–6 nt

  10334(b)(1)

  972

  42

  300u–6a

  10334(b)(2)

  973

  42

  300u–6a nt

  10334(b)(3)

  973

  42

  300u–6a nt

  10334(c)(1)(D)(i)

  973

  42

  285t

  10334(c)(1)(D)(i)

  973

  42

  285t–1

  10334(c)(1)(D)(i)

  973

  42

  285t–2

  10334(c)(1)(D)(i)

  973

  42

  285t–3

  10334(c)(1)(D)(ii)

  973

  42

  285t

  10334(c)(1)(D)(iii)

  973

  42

  285t

  10334(c)(1)(D)(iii)

  973

  42

  285t–1

  10334(c)(1)(D)(iii)

  973

  42

  285t–2

  10334(c)(1)(D)(iii)

  973

  42

  285t–3

  10334(c)(2)

  973

  42

  285t

  10334(c)(3)(A)

  974

  42

  281

  10334(c)(3)(B)

  974

  42

  299a–1

  10335

  974

  42

  1395ww

  10401(a)

  974

  42

  300u–10

  10401(b)

  974

  42

  300u–11

  10401(c)

  975

  42

  300u–12

  10402(a)

  975

  42

  280h–5

  10402(b)

  975

  42

  1395x

  10403

  975

  42

  300u–13

  10404

  975

  42

  280l

  10406

  975

  42

  1395l

  10407

  976

  42

  247b–9a

  10408

  977

  42

  280l nt

  10409(a)

  978

  42

  201 nt

  10409(b)

  978

  42

  282

  10409(c)

  978

  42

  290b

  10409(d)

  978

  42

  287a

  10410(a)

  984

  42

  201 nt

  10410(b)

  984

  42

  290bb–33

  10411(a)

  988

  42

  201 nt

  10411(b)(1)

  988

  42

  280g–13

  10411(b)(2)

  989

  42

  285b–8

  10412

  990

  42

  244

  10413(a)

  990

  42

  201 nt

  10413(b)

  991

  42

  280m

  10501(a)

  993

  42

  294q

  10501(c)

  994

  42

  280g–11

  10501(d)

  995

  42

  293b

  10501(e)

  995

  42

  296j–1

  10501(f)(1), (2)

  996

  42

  280g–12

  10501(f)(3)

  996

  42

  299b–34

  10501(f)(4)

  996

  42

  299b–35

  10501(g)

  996

  42

  280g–14

  10501(h)

  997

  42

  1395w–4

  10501(i)(1)

  997

  42

  1395m

  10501(i)(1)

  997

  42

  1395x

  10501(i)(1)

  997

  42

  1395x nt

  Rep.

  10501(i)(2)(A)

  997

  42

  1395x

  10501(i)(2)(B)

  997

  42

  1395x nt

  10501(i)(3)(A)

  997

  42

  1395m

  10501(i)(3)(B), (C)

  998, 999

  42

  1395l

  10501(j)

  999

  42

  1395ww nt

  10501(k)

  999

  42

  254b–1

  10501(l)(2)

  1000

  42

  293m

  10501(m)(1)

  1001

  42

  295c

  10501(m)(2)

  1002

  42

  295e

  10501(n)(1), (2)

  1002, 1003

  42

  254d

  10501(n)(3)

  1003

  42

  254j

  10501(n)(4)

  1003

  42

  254l–1

  10501(n)(5)

  1003

  42

  254m

  10503

  1004

  42

  254b–2

  10504

  1004

  42

  256 nt

  10601(a)

  1005

  42

  1395nn

  10601(b)

  1005

  42

  1395nn nt

  10602

  1005

  42

  1320e

  10603

  1006

  42

  1395cc

  10604

  1006

  42

  1395f

  10604

  1006

  42

  1395n

  10605(a)

  1006

  42

  1395f

  10605(b)

  1006

  42

  1395n

  10606(a)

  1006

  28

  994 nt

  10606(b)

  1008

  18

  1347

  10606(c)

  1008

  18

  24

  10606(d)(1)

  1008

  18

  1510

  10606(d)(2)

  1008

  42

  1997a–1

  10607

  1009

  42

  280g–15

  10608(a)

  1014

  42

  233

  10608(b)

  1014

  42

  233 nt

  10609

  1014

  21

  355

  10801(a)(1), (2)

  1015

  42

  300ll–2, 300ll–3

  10801(c)

  1015

  42

  1396p nt

  10901(a), (b)

  1015, 1016

  26

  4980I

  10901(c)

  1016

  26

  4980I nt

  10902(a)

  1016

  26

  125

  10902(b)

  1016

  26

  125 nt

  10903(a)

  1016

  26

  501

  10903(b)

  1016

  26

  501 nt

  10904(a)

  1016

  26

  nt. prec. 4001

  Rep.

  10904(b)

  1017

  26

  nt. prec. 4001

  10905(a)–(f)

  1017–1019

  26

  nt. prec. 4001

  10905(g)

  1019

  26

  nt. prec. 4001

  10906(a)

  1020

  26

  3101

  10906(b)

  1020

  26

  1401

  10906(c)

  1020

  26

  1401 nt

  10907(a)

  1020

  26

  prec. 4001

  10907(a)

  1020

  26

  prec. 5000B

  10907(a)

  1020

  26

  5000B, 5000B nt

  Rep.

  10907(b)

  1020

  26

  prec. 5000B

  10907(b)

  1020

  26

  5000B

  10907(c)

  1020

  26

  prec. 4001

  10907(d)

  1021

  26

  5000B nt

  10908(a)

  1021

  26

  108

  10908(b)

  1021

  26

  108 nt

  10909(a)(1)

  1021

  26

  23

  10909(a)(2)

  1022

  26

  137

  10909(b)(1)

  1022

  26

  23

  10909(b)(2)(A)

  1023

  26

  24

  10909(b)(2)(B)

  1023

  26

  25

  10909(b)(2)(C)

  1023

  26

  25A

  10909(b)(2)(D)

  1023

  26

  25B

  10909(b)(2)(E)

  1023

  26

  26

  10909(b)(2)(F)

  1023

  26

  30

  10909(b)(2)(G)

  1023

  26

  30B

  10909(b)(2)(H)

  1023

  26

  30D

  10909(b)(2)(I)

  1023

  26

  23

  10909(b)(2)(J)

  1023

  26

  137

  10909(b)(2)(K)

  1023

  26

  904

  10909(b)(2)(L)

  1023

  26

  1016

  10909(b)(2)(M)

  1023

  26

  1400C

  10909(b)(2)(N)

  1023

  26

  6211

  10909(b)(2)(O)

  1023

  26

  prec. 21

  10909(b)(2)(P)

  1023

  31

  1324

  10909(b)(2)(Q)

  1023

  26

  prec. 31

  10909(c)

  1023

  26

  1 nt

  10909(c)

  1023

  26

  prec. 21

  10909(c)

  1023

  26

  23

  10909(c)

  1023

  26

  24

  10909(c)

  1023

  26

  25

  10909(c)

  1023

  26

  25A

  10909(c)

  1023

  26

  25B

  10909(c)

  1023

  26

  26

  10909(c)

  1023

  26

  30

  10909(c)

  1023

  26

  30B

  10909(c)

  1023

  26

  30D

  10909(c)

  1023

  26

  prec. 31

  10909(c)

  1023

  26

  137

  10909(c)

  1023

  26

  904

  10909(c)

  1023

  26

  1016

  10909(c)

  1023

  26

  1400C

  10909(c)

  1023

  26

  6211

  10909(d)

  1024

  26

  1 nt

            <form target="_blank" action="http://twitter.com/uscode">
                <input type="image" src="/javax.faces.resource/u35.png.xhtml?ln=images" style="width: 160px; height: 27px;" />
            </form>

                About the Office
                          Privacy Policy
                      Sitemap

<form id="form1" name="form1" method="post" action="/static.xhtml;jsessionid=629C2B019419362DC648DD591D4BD959" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="form1" value="form1" />
<input id="winTop" type="hidden" name="winTop" value="0" /><input id="left" type="hidden" name="left" value="0" /><input id="width" type="hidden" name="width" value="0" /><input id="height" type="hidden" name="height" value="0" /><input id="submitBtn" type="submit" name="submitBtn" value="change value" onclick="jsf.ajax.request(this, event, {execute:'@form', render: '@form'}); return false;" /><input id="refreshBtn" type="submit" name="refreshBtn" value="refresh value" onclick="jsf.ajax.request(this, event, {render: '@form'}); return false;" /><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="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" autocomplete="off" />
</form>
<form id="formStdRef" name="formStdRef" method="post" action="/static.xhtml;jsessionid=629C2B019419362DC648DD591D4BD959" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="formStdRef" value="formStdRef" />
<input id="first" type="hidden" name="first" value="" /><input id="second" type="hidden" name="second" value="" /><input id="type" type="hidden" name="type" value="" /><input id="url" type="hidden" name="url" value="" /><input id="stdRefBtn" type="submit" name="stdRefBtn" value="open std ref value" onclick="jsf.ajax.request(this, event, {execute:'@form', render: '@form'}); return false;" /><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="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" autocomplete="off" />
</form>


text:
simplejson
lxml
httplib2
simplejson
bs4

repo_name: unitedstates/uscode

repo_language: Python


text:
import re
import itertools
from collections import namedtuple

from .utils import CachedAttribute
from .schemes import Enum
from .structure import GPOLocatorParser

class DataQualityError(Exception):
    pass

class Registry(type):

    _classes = {}

    def __new__(meta, name, bases, attrs):
        cls = type.__new__(meta, name, bases, attrs)
        if 'applies_to' in attrs:
            meta._classes[attrs['applies_to']] = cls
        return cls

getclass = Registry._classes.get

def _subdoc_generator(key1, key2=('I', '21')):
    if key2 is None:
        key2 = key1

    def func(self):
        for doc in self.data.docs.get(key1, []):
            for line in doc.codemap.get(key2, []):
                yield line
    return func

def jsonval(*funcs):
    '''Decorator to mark functions for
    inclusion in json conversion. *funcs is a
    list of functions to run the value through
    before it gets added to the json--i.e.,
    list for an iterator or generator.
    '''
    def decorator(f):
        f.jsonval = True
        f.jsonval_funcs = funcs
        return f

    return decorator

class Base(object):

    __metaclass__ = Registry

    class meta:
        abstract = True

    def __init__(self, data):
        self.sub = []
        self.data = data

    @property
    def codemap(self):
        return self.data['codemap']

    def json(self):
        res = {}
        for attr in dir(self):
            method = getattr(self, attr)
            if hasattr(method, 'jsonval') and method.jsonval:
                value = method()
                for func in filter(callable, method.jsonval_funcs):
                    value = func(value)
                res[attr] = value
        return res

    def extract_footnote_refs(self, text):
        '''If any footnotes[^2] are in `text`, return
        a sequence of number, offset pairs.
        '''
        for matchobj in re.finditer(r'\\(\d+)\\\x07N', text):
            offset = matchobj.start()
            number = matchobj.group(1)
            yield number, offset

    def parse_footenote_content(self, text):
        '''Given text constituting a footnote ("[^2] So in original.")
        return the footnote number and the text.
        '''
        matchobj = re.match(r'^\x07N\\(\d+)\\\s+', text)
        if matchobj:
            number = matchobj.group(1)
            text = text.replace(matchobj.group(), '', 1)
            return number, text

    def get_notes(self):
        notes = self.data['docs'][('I', '93')][0]['codemap'][('I', '28')]
        for line in notes:
            yield self.parse_footenote_content(line.data)

class Title(Base):
    applies_to = ('F', '5800')

    @CachedAttribute
    def enum_title(self):
        line = self.codemap[('I', '06')].first
        m = re.search(r'\w+ (\d+).(.+)', line.data.strip())
        if m:
            return m.groups()
        else:
            msg = 'unexpected format: %r'
            raise DataQualityError(msg % line.data)

    @jsonval()
    def enum(self):
        return self.enum_title[0]

    @jsonval()
    def name(self):
        return self.enum_title[1]

class TitleTOC(Base):
    '''Table of contents for a title. This model assumes
    a 2-column layout. See Title 8 for an example.
    '''
    applies_to = ('R', '01')

    repeals = _subdoc_generator('Repeals')
    positive_law = _subdoc_generator('Positive Law; Citation')
    census = _subdoc_generator('References To Census Office')
    separability = _subdoc_generator('Separability')
    construction = _subdoc_generator('Legislative Construction')
    effective_date = _subdoc_generator('Effective Date')

    @jsonval(list)
    def items(self, toc=namedtuple('TitleTocRow', 'chapter name section')):
        '''Returns a sequence of 4-tuples like
        (chapter, name, section, notes).
        '''

        lines = self.data['docs'][('I', '93')][0]['lines']
        lines = iter(lines[3:])
        footnote_dict = dict(self.get_notes())
        while True:
            try:
                chapter, name, section = list(itertools.islice(lines, 3))
            except ValueError:
                return

            for obj in chapter, name, section:
                obj._footnote_dict = footnote_dict

            chapter = re.sub(r'[.\s]+', '', chapter.data)
            name = name.data.strip()
            section = section.data.strip()

            yield toc(chapter, name, section)

class Subtitle(Base):
    pass

class Chapter(Base):
    pass

class ChapterHeading(Base):
    '''Heading element for a chapter.
    '''
    applies_to = ('R', '10')

    amendments = _subdoc_generator('Amendments')

    @CachedAttribute
    def enum_title(self):
        line = self.codemap[('I', '81')].first
        text = line.data.strip()
        text = re.sub(r'^\x07T2', '', text)
        m = re.search(r'\w+ (\d+).(.+)', text)
        if m:
            return m.groups()
        else:
            msg = 'unexpected format: %r'
            raise DataQualityError(msg % line.data)

    @jsonval()
    def enum(self):
        return self.enum_title[0]

    @jsonval()
    def name(self):
        return self.enum_title[1]

    def toc_items(self, toc=namedtuple('ChapterTocRow', 'section name')):
        lines = self.data.docs[('I', '70')].first.lines.rest
        lines = iter(lines)
        while True:
            try:
                section, name = list(itertools.islice(lines, 2))
            except ValueError:
                return
            section = re.sub(r'[.\s]+', '', section.data)
            name = name.data.strip()
            yield toc(section, name)

class Subchapter(Base):
    pass

class Part(Base):
    pass

class Subpart(Base):
    pass

class Section(Base):
    applies_to = ('I', '80')

    def enum(self):
        _, id_ = self.codemap[('I', '80')].first.data.split(' ', 1)
        return id_.strip()

    history = _subdoc_generator(('I', '53'), ('I', '53'))
    amendments = _subdoc_generator('Amendments')
    derivation = _subdoc_generator('Derivation')
    refs = _subdoc_generator('References In Text')
    codification = _subdoc_generator('Codification')

    def __repr__(self):
        return '<Section %s>' % self.enum()

    def name(self):
        name = self.data.docs[('I', '89')].first.lines.first
        return re.sub(r'^[\s.]+', '', name.data).strip()

    def body_lines(self):

        # Test some assumptions...
        assert len(self.data.docs[('I', '89')]) == 1

        lines = self.data.docs[('I', '89')].first.lines.rest
        for line in lines:
            if line.code != 'I':
                continue
            text = line.data
            if not text.startswith('('):
                body = text
                enum = None
                yield (enum, body, line)
            else:
                enum_text, body = re.split(r'\s+', text, 1)
                enums = re.findall(r'\((\S+?)\)', enum_text)
                enums = map(Enum, enums)
                for enum in enums[1:]:
                    enum._was_nested = True

                # In the case of "(B)(i)(1) blah blah" yield data like:
                #  (B, None, None)
                #  (i, None, None)
                #  (1, blah blah, GPOLocatorCode(...))
                enums = enums[::-1]
                while enums:
                    enum = enums.pop()
                    if not enums:
                        yield (enum, body, line)
                    else:
                        yield (enum, None, None)

    def misc(self):
        ignored = '''Amendments, Derivation, References In Text,
                     Codification'''
        ignored = re.split(r'[,\s+]+', ignored)
        print set(self.data.docs) - set(ignored)
        for k in set(self.data.docs) - set(ignored):
            if isinstance(k, basestring):
                yield k, list(_subdoc_generator(k)(self))

    def as_tree(self):
        return GPOLocatorParser(self.body_lines()).parse()


text:
'''
.. moduleauthor:: Thom Neale <twneale@gmail.com>

This module exports an API for modeling the enumerations (aka "enums") found
in documents that contain numbered paragraphs that are hierarchically related.

Example Use
+++++++++++++++

Use it like this:

>>> Token('a') < Token('b')
>>> True
>>>
>>> Enum('3-a') < Enum('3-b')
>>> True
'''
import re
import operator
import itertools
import collections

#-----------------------------------------------------------------------------
#  Prepare schemes data.
#-----------------------------------------------------------------------------
_alphabet = 'abcdefghijklmnopqrstuvwxyz'
_alphabet_upper = _alphabet.upper()
_digits = '123456789'

def romans():
    '''Produce data for roman numeral schemes.'''
    ones = ('', 'i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix')
    tens = ('', 'x', 'xx', 'xxx', 'l')
    res = []
    for x in tens:
        res += [x + y for y in ones]
    return filter(None, res)
_romans = romans()
del romans

# List (rather than set) versions of the schemes sets. Necessary to
# compare ordinality of tabs.
_schemes_lists = {
    'lower':         list(_alphabet),
    'upper':         list(_alphabet_upper),
    'lower_doubles': [c * 2 for c in _alphabet],
    'upper_doubles': [c * 2 for c in _alphabet_upper],
    'lower_triples': [c * 3 for c in _alphabet],
    'upper_triples': [c * 3 for c in _alphabet_upper],
    'lower_quads':   [c * 4 for c in _alphabet],
    'upper_quads':   [c * 4 for c in _alphabet_upper],
    'lower_roman':   _romans,
    'upper_roman':   map(str.upper, _romans),
    'digits':        map(str, range(1, 200)),
    }

del _alphabet
del _alphabet_upper
del _digits

# The same dict as _schemes_lists, only with sets. Helpful for fast
# membership testing.
_schemes = dict(
    (k, set(v)) for k, v in _schemes_lists.items()
    )

# Used for testing whether tab is first-in-scheme.
_first_scheme_tokens_dict = {}
for k, v in _schemes_lists.items():
    _first_scheme_tokens_dict[v[0]] = set([k])

_first_scheme_tokens = set(_first_scheme_tokens_dict)

_all_scheme_tokens = reduce(operator.or_, _schemes.values())

# If these aren't the same length, one was modified without
# corresponding changes to the other, so complain and fail.
assert len(_schemes) == len(_first_scheme_tokens)

#-----------------------------------------------------------------------------
#  Scheme identification helpers.
#-----------------------------------------------------------------------------
class UnrecognizedSchemeError(Exception):
    '''
    If an enum's scheme can't be determined using simple
    techniques, the tab warrants an inspection, so raise
    an error.
    '''
    pass

def get_common_schemes(*entities):
    '''
    Given an arbitrary list of instances supporting the "get_schemes"
    method, return all common schemes that apply.
    '''
    return reduce(operator.and_, (e.get_schemes() for e in entities))

class SchemeEntity(object):
    '''
    This class exists simply as a way to allow its inheritants to share
    the schemes data. Its inheritants are "Token" and "Enum".
    '''
    # Schemes data.
    _schemes_lists = _schemes_lists
    _schemes = _schemes
    _first_scheme_tokens = _first_scheme_tokens
    _all_scheme_tokens = _all_scheme_tokens

    # Defaults.
    schemes = None
    ordinality = None

class Token(SchemeEntity):

    def __init__(self, t):

        self.text = t

    def __repr__(self):
        return self.text

    def __eq__(self, other):

        try:
            # Other is a Token.
            return self.text == other.text
        except AttributeError:
            # Other is subtype of basestring.
            return self.text == other

    def __ne__(self, other):
        try:
            # Other is a Token.
            return not self.text == other.text
        except AttributeError:
            # Other is subtype of basestring.
            return not self.text == other

    def __and__(self, other):
        return self.get_schemes() & other.get_schemes()

    def get_schemes(self):
        '''
        Get a set of names of all schemes that could apply to this token.

        This function is lengthy in an attempt to optimize it, it possibly
        being worst performing aspect of parsing statutes.
        '''
        if self.schemes:
            return self.schemes

        t = self.text
        tlen = len(t)
        schemes = _schemes

        # Tab is only 1 char. No need to test for doubles, etc.
        # Most tabs fall into this branch, so this ought
        # to speed things up.
        if tlen == 1:

            if t.isalpha():

                case = ('upper' if t.isupper() else 'lower')
                tset = set(list(t))
                res = set([case])
                roman = '%s_roman' % case

                if tset & schemes[roman]:
                    res.add(roman)

                self.schemes = res
                return res

            elif t.isdigit():
                res = set(['digits'])

                self.schemes = res
                return res

        # More than one char. Conduct additional tests.
        else:

            if t.isalpha():

                case = ('upper' if t.isupper() else 'lower')
                tset = set(list(t))
                tsetlen = len(tset)
                res = []

                # Test if it's multiple.
                if (tsetlen == 1) and (tsetlen < tlen):
                    res.append('%s_%s' % (
                        case,
                        {2: 'doubles', 3: 'triples', 4: 'quads'}[tlen]
                        ))

                # Test if it's upper_roman.
                if t in schemes['%s_roman' % case]:
                    res.append('%s_roman' % case)

                res = set(res)
                self.schemes = res
                return res

            elif t.isdigit():
                res = set(['digits'])
                self.schemes = res
                return res

        msg = 'Couldn\'t determine scheme type of "%s"' % t
        raise UnrecognizedSchemeError(msg)

    def is_first_in_scheme(self):
        '''
        Determine whether this token is the first token in any scheme.
        '''
        return self.text in self._first_scheme_tokens

    def get_ordinality(self):
        '''
        Return a dict with this token's schemes as keys and the token's
        ordinality within each scheme as the corresponding value.
        '''
        _ord = self.ordinality
        if _ord:
            return _ord
        else:
            t = self.text
            _ord = {}
            _schemes_lists = self._schemes_lists
            for sc in self.get_schemes():
                _ord[sc] = _schemes_lists[sc].index(t)
            self.ordinality = _ord
            return _ord

    def could_be_next_after(self, other):
        '''
        Determine whether this token "could be next" after other
        in a scheme.

        :param other: another token
        :type other: statutils.Token
        '''
        if self == other:
            return 'equal'

        common_schemes = self & other
        if not common_schemes:
            return False
        else:
            for c in common_schemes:
                ord1 = other.get_ordinality()
                ord2 = self.get_ordinality()
                if ord2[c] - ord1[c] == 1:
                    return 'consecutive'
            return False

#-----------------------------------------------------------------------------
#  Main Enum class
#-----------------------------------------------------------------------------
class Enum(list, SchemeEntity):
    '''
    This class models a single enumeration character, such as "a" or "3"
    or "viii". It can model complex enums like "a-3" as long as each component
    is a valid scheme token. That means numbers can't have decimals, but
    an assumption underlying this API is no scheme token will ever be a
    decimal number. It might for a section number, but not a mere scheme token.
    '''

    class UnrecognizedTokenError(Exception):
        '''
        Prevent this class from being instantiated with text containing
        any scheme tokens not in the set _all_scheme_tokens. So in other
        words, raise an error for any like these:

            * Enum('$')
            * Enum('1-a*')

        If the statute's enumerations do contain any of these characters, they
        probably indicate something of importance, such as a note, and
        should be stripped from the enum text before passing it to the
        Enum class.
        '''
        pass

    #-------------------------------------------------------------------------
    #  Token extraction regexes.
    #-------------------------------------------------------------------------
    rgxs = (
        re.compile(r'[A-Z]+', re.I),    # alphas
        re.compile(r'[\d.]+'),          # numbers
        re.compile(r'[-]+'),            # connectors
        re.compile(r'^\(.+\)$'),        # parens
        re.compile(r'\.$'),             # points
        )

    def __init__(self, text, **kwargs):
        '''
        :param text: the enum text (not stripped of punctuation)
        :type text: str or unicode
        :param kwargs: any other information to cache in the instance dict

        This method does the following:

          * Screen the input to make sure no invalid scheme tokens are present
          * Cache arbitrary kwargs for later use
          * Cache the passed-in text as ``self.original_text`` for use in
            later substitutions
          * Cache any parenthesis or punctuation surrounding the enum tokens
            for use in later comparison and formatting operations, since some
            statutes incorporate enum style in defining the document hierarchy
          * Find all match objects for self.rgxs and sort them by start()
          * Extend self, a list, with the sorted matches
          * Cache self.text, which appears to be redundant of original text.
        '''
        # A quick test to verify that no unrecognized tokens are present,
        # (like "$")
        unrec = set(text) - (self._all_scheme_tokens | set('-0.()'))
        if unrec:
            msg = (
                'Can\'t instantiate Enum from text %s with'
                'unrecognized tokens "%s"'
                ) % (text, unrec)

            raise self.UnrecognizedTokenError(msg)

        # Cache any info passed in.
        # Aug 31, 2010 - Enable caching of info helpful in parse.
        for k, v in kwargs.items():
            setattr(self, k, v)

        # Cache the original text
        self.original_text = text

        # Cache any parens or periods surrounding the tokens.
        # These can be reused to recreate the style of the enum.
        text = text.strip()
        format_left = []
        format_right = []

        if text:
            first_char = text[0]
            while first_char in '(':
                format_left.append(first_char)
                text = text[1:]
                first_char = text[0]

            last_char = text[-1]
            while last_char in '.)':
                format_right.append(last_char)
                text = text[:-1]
                last_char = text[-1]

        self.format_left = format_left
        self.format_right = format_right

        # Get all match strings.
        matches = itertools.chain.from_iterable(
            m.finditer(text) for m in self.rgxs
            )

        # Sort by start position and wrap in Token class.
        matches = [Token(m.group()) for m in
                   sorted(matches, key=lambda m: m.start())]

        super(Enum, self).__init__(matches)

        # Cache text in instance.
        self.text = text

    def __repr__(self):
        return 'Enum(\'%s\')' % self.text

    def __eq__(self, other):
        return self.text == other.text

    def __ne__(self, other):
        return not (self == other)

    def __lt__(self, other):
        '''
        <  less than

        This actually tests whether self COULD BE less than
        other under any of the schemes they share.
        '''
        ord1 = self.get_ordinality()
        ord2 = other.get_ordinality()
        common_schemes = set(ord1) & set(ord2)
        if common_schemes:
            return any((ord1[s] < ord2[s]) for s in common_schemes)
        else:
            return False

    def __le__(self, other):
        '''
        <= less than/equal
        '''
        return (self == other) or (self < other)

    def __gt__(self, other):
        ord1 = self.get_ordinality()
        ord2 = other.get_ordinality()
        common_schemes = set(ord1) & set(ord2)
        if common_schemes:
            return any((ord1[s] > ord2[s]) for s in common_schemes)
        else:
            return False

    def __ge__(self, other):
        '''
        => greater than/equal
        '''
        return (self == other) or (self > other)

    def __lshift__(self, other):
        return other.could_be_next_after(self)

    def __rshift__(self, other):
        return self.could_be_next_after(other)

    def __and__(self, other):
        return self.get_common_schemes(other)

    def __nonzero__(self):
        return bool(self.text)

    def _itertokens(self):
        return (x for x in self if x.text != '-')

    def get_schemes(self):
        '''
        Get a set of names of all schemes that
        could apply to the provided tabtext.

        Note that for compound tabs, this function
        bails after determining the scheme of the first token.
        '''
        if self.schemes:
            return self.schemes
        else:
            for t in self:
                res = t.get_schemes()
                self.schemes = res
                return res

    def get_common_schemes(self, *others):
        '''
        Get common schemes between ``self`` and ``other``.
        Can also do this: self & other
        '''
        tabs = [self] + list(others)
        return reduce(operator.and_, (t.get_schemes() for t in tabs))

    def get_ordinality(self):
        '''
        Figure out what this tab's possible scheme orders are.
        '''

        # Try returning cached value.
        ordinality = self.ordinality
        if ordinality:
            return ordinality

        text = self.text

        # Calculate ordinality.
        ordinality = collections.defaultdict(lambda: [])
        for s in self.get_schemes():
            try:
                ord_ = _schemes_lists[s].index(text)
            except ValueError:
                pass
            else:
                ordinality[s].append(ord_)
                continue
            # Not in the schemes list; probably a compound tab like "4-a".
            # Repeat the test with each token in the tab.
            # Break on success?
            tokens = list(self._itertokens())
            if len(tokens) == 1:
                continue
            for t in tokens:
                for sc in t.get_schemes():
                    try:
                        ord_ = _schemes_lists[sc].index(t.text)
                    except ValueError:
                        continue
                    ordinality[s].append(ord_)
        self.ordinality = ordinality
        return ordinality

    def is_first_in_scheme(self):
        '''
        Determine whether this Tab instance is first in any scheme.
        '''
        return self.text in self._first_scheme_tokens

    def could_be_next_after(self, other):
        '''
        Determine whether self would be
        a valid consecutive tab following other
        per any scheme.

        Alternatively: other << self
        '''
        if self == other:
            return False

        extra_tokens = filter(lambda x: x != '-', self[len(other):])
        if extra_tokens:
            if not all(t.is_first_in_scheme() for t in extra_tokens):
                return False

        comparisons = (x.could_be_next_after(y) for x, y in
                       zip(self, other))

        consecutive = False
        for c in comparisons:
            if not c:
                return False
            elif c == 'equal':
                continue
            elif consecutive:
                # Here the tabs must be like '4-a' and 5-b'.
                # Only one consecutive result allowed; all
                return False
            else:
                consecutive = True
                continue
        return True

    @property
    def was_nested(self):
        try:
            was_nested = self._was_nested
        except AttributeError:
            return False
        else:
            if was_nested:
                return True

if __name__ == '__main__':

    import pdb;pdb.set_trace()

##class TabbedSequence(list):
##    '''
##    This class models a sequence of tabs or tabbed elements, each having
##    a "tab" attribute.
##    '''
##    _ERROR_PROTOCOL = {
##        'strict': 0,
##        'lax': 1,
##        'forceappend': 2,
##        }
##
##    class SequenceError(Exception): pass
##    class SchemeMismatch(SequenceError): pass
##    class TabNotFirstInScheme(SequenceError): pass
##    class TabNotConsecutive(SequenceError): pass
##    class TabNotGreaterThan(SequenceError): pass
##
##    _first_scheme_tokens_dict = _first_scheme_tokens_dict
##
##    def appendsingle(self, tabbed_item, error_protocol="strict"):
##        '''
##        :param tab: A schemeutils.Tab instance
##        :type tab: schemeutils.Tab
##
##        :param error_protocol: "strict", "lax", or "forceappend"
##        :type error_protocol: str
##
##        :param recurse: On failure, try to append to TabSequence.parent?
##        :type recurse: bool
##
##
##        Performs a normal list append but first checks to see whether
##        item added has a "tab" attribute (which is an instance of the
##        Tab class) that is valid within the current scheme.
##
##        Depending on the error_protocol selected, this function follows
##        different procedures for appending the tab:
##
##          * If error_protocol is "strict", the append will fail unless
##            tab could be next after the last tab in the sequence.
##          * If error_protocol is "lax",  the append will succeed if the
##            the tab is simply "greater than" the last tab in the sequence.
##            In other words, the tab doesn't have to be a valid consecutive
##            tab.
##        '''
##        # --------------------------------------------------------------------
##        #  Sort out locals.
##        # --------------------------------------------------------------------
##        ep = error_protocol
##        error_protocol = self._ERROR_PROTOCOL.get(ep, ep)
##
##        try:
##            # Item has a tab.
##            tab = tabbed_item.tab
##        except AttributeError:
##            # Item is a tab.
##            tab = tabbed_item
##
##        # --------------------------------------------------------------------
##        #  Commence append attempt.
##        # --------------------------------------------------------------------
##
##        if len(self) == 0:
##            if not tab.is_first_in_scheme():
##                raise self.TabNotFirstInScheme('Purported first tab %s isn\'t'
##                                       ' first in scheme.' % tab)
##
##            else:
##                # The scheme of the first Tab in the sequence determines
##                # the scheme for the entire TabSequence.
##                scheme = self._first_scheme_tokens_dict[tab.text]
##                self.scheme = scheme
##                list.append(self, tab)
##
##        else:
##            # Could the item be a member of this scheme?
##            scheme = self.scheme
##            if not scheme & tab.get_schemes():
##                raise self.SchemeMismatch("Item with tab %s doesn't fit in "
##                                       "this sequence's scheme, which is %s."
##                                       % (tab, scheme,))
##            else:
##                # Here add first could be next, then the fallback
##                # of allowing nonconsecutive but greater tabs.
##
##                if error_protocol == 0:
##                    # strict: append only if tab could be next.
##                    if self[-1] << tab:
##                        list.append(self, tab)
##                    else:
##                        raise self.TabNotConsecutive(
##                            "%s isn't consecutive after %s" \
##                            % (tab, self[-1],))
##
##                elif error_protocol == 1:
##                    # lax: append if tab is greater than last in sequence.
##                    if self[-1] < tab:
##                        list.append(self, tab)
##                    else:
##                        raise self.TabNotGreaterThan(
##                            "%s isn't greatern than %s" \
##                            % (tab, self[-1],))
##
##                if error_protocol == 2:
##                    # Force the append.
##                    list.append(self, tab)
##
##    def append(self, tab, error_protocol='strict'):
##
##
##class TabbedDocument(TabbedSequence):
##
##    def build(self):
##
##        previous = self
##
##        # SequenceError locals
##        WasNotFirstInScheme = TabbedSequence.WasNotFirstInScheme
##        SchemeMismatch = TabbedSequence.SchemeMismatch
##        TabNotConsecutive = TabbedSequence.TabNotConsecutive
##        TabNotGreaterThan = TabbedSequence.TobNotGreaterThan
##
##        def append(previous, current, error_protocol='strict'):
##
##            try:
##                # First, try to add current as a sibling of previous.
##                previous.parent.append(current, error_protocol)
##                previous = current
##                return
##
##            except (TabNotConsecutive, AttributeError):
##                # --------------------------------------------------------
##                # Try to make current a child of previous.
##                #
##                # If AttributeError, previous.parent was None. Usually
##                # in that situation "previous" is the root element.
##                # --------------------------------------------------------
##
##                try:
##                    previous.append(current, error_protocol)
##                except WasNotFirstInScheme:
##                    append(previous.parent.parent, current, error_protocol)


text:
'''
R01 - beginning of title title summary (chapter TOC, amendments, table)

I74 - heading (distinct chunk of info follows)

Tables

-------------------
Title Summary

- chapter-title concordance
 I93 "\u2003" - beginning of table
 I70 - left column heading
 I29 - right column heading
 I07 - left column value
 I08 - center column value
 I09 - right column value

-Amendments
 I21 - amendment

-Table (statutes at large)
 c* - column_count, ?, ?, ?, ?, ?
 I95 - beginning of rows
 H1 - column heading
 j - end of table header
 I1 - data like "{td1}\x07{td2}\x07 {td3}"
    ... basically, \x07 marks the column boundary

-Positive Law; Citation
 I21 - paragragh

-Repeals
 I21 - paragragh

---------------------
Chapter Summary

 R10 - beginning of chapter summary
 I81 - flat citation

-Table of section numbers, names
 I70 - heading "Sec." for first column
 I20 - row n, cell 0
 I46 - row n, cell 1

-Amendments
 I21 - amendment

--------------------
Section Data
 I80 - section number, like '\xa7 1'
 I89 - section name/title
 I53 - section "source"

- Derivation
 I21 - paragraph

- References in Text (I75)

----------------------
Statute Body
 I11 - root level text
 I12 - level 1
 Q04 - dedent
'''
from collections import defaultdict
from operator import itemgetter

from .utils import NiceList
from .models import getclass

class Document(dict):
    lines = property(itemgetter('lines'))
    codemap = property(itemgetter('codemap'))
    docs = property(itemgetter('docs'))
    id = property(itemgetter('id'))

    @property
    def first_code(self):
        return self.lines.first.as_tuple()

    @property
    def instance(self):
        '''Return this doc's model instance.'''
        cls = getclass(self.first_code)
        return cls(self)

boundaries = {

    # title
    ('R', '01'): [('I', '93')],

    # chapter
    ('R', '10'): [('I', '70')],

    # section
    ('I', '80'): [('I', '89'), ('I', '53')],

    }

def group(iterator, boundaries=boundaries):
    '''
    Regroup the GPOLocator lines into chunks relating to title,
    chapters, and sections, each with internal sections grouped into
    'sub documents', for lack of a more imaginitive name. Each document
    contains a list of lines and mapping of code-argument tuples to
    lines with those codeargs.

    This code is lengthy and convoluted in order to achieve the
    regrouping in a single pass.
    '''

    I74 = ('I', '74')
    res = []

    lines = NiceList()
    subdoc = None
    subdoc_id = None
    subdocs = defaultdict(NiceList)
    codemap = defaultdict(NiceList)
    doc = Document({'lines': lines, 'docs': subdocs,
                    'codemap': codemap})
    in_subdoc = False
    sub_boundaries = [I74]

    while True:

        try:
            line = next(iterator)
        except StopIteration:
            break

        code, arg = codearg = line[:2]

        if codearg in boundaries:
            sub_boundaries = boundaries[codearg] + [I74]

        #starting_complex_table = (code == 'c')

        if codearg in sub_boundaries:  # or starting_complex_table:

            # If already in a subdoc, append it
            if in_subdoc:
                subdoc['codemap'] = dict(subdoc['codemap'])
                subdocs[subdoc_id].append(subdoc)

            # Start a new subdoc
            subdoc_lines = NiceList([line])
            subdoc_codemap = defaultdict(NiceList, {codearg: subdoc_lines})
            if codearg == I74:
                subdoc_id = line.data.strip()
            else:
                subdoc_id = codearg
            subdoc = Document({'lines': subdoc_lines,
                               'codemap': subdoc_codemap})
            in_subdoc = True

        elif codearg in boundaries:

            if in_subdoc:
                subdoc['codemap'] = dict(subdoc['codemap'])
                subdocs[subdoc_id].append(subdoc)

            # append the current doc
            doc['codemap'] = dict(doc['codemap'])
            res.append(doc)

            # start a new one
            lines = NiceList([line])
            codemap = defaultdict(NiceList, {codearg: lines})
            subdocs = defaultdict(NiceList)
            doc = Document({'lines': lines, 'docs': subdocs,
                            'codemap': codemap, 'id': codearg})
            in_subdoc = False

        else:
            if in_subdoc:
                subdoc_lines.append(line)
                subdoc_codemap[codearg].append(line)
            else:
                lines.append(line)
                codemap[codearg].append(line)

    return res


text:
from .parser import getlines
from .grouper import group
from .models import *

def title_for(filename):
    return File(open(filename))

class File(object):

    hierarchy = [
        Title,
        Subtitle,
        Chapter,
        Subchapter,
        Section,
        Part,
        Subpart,
        ]

    def __init__(self, fp):
        '''Pass it an open gpo locator file.
        '''
        self._lines = lines = getlines(fp)
        self._grouped = grouped = group(lines)
        self.instances = [g.instance for g in grouped]
        # self._build()

    def sections(self):
        return [inst for inst in self.instances if isinstance(inst, Section)]

    # def _build(self):
    #     '''Assembly the titles, chapters, headings, sections into a tree.
    #     '''
    #     instances = self.instances
    #     classmap = defaultdict(list)

    #     current = instances[0]
    #     classmap[current.__class__].append(current)

    #     # The first entry should be a title.
    #     msg = "The first entry in the file wasn't a title!"
    #     assert isinstance(head, Title), msg

    #     for inst in instances[1:]: