(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Wolfram 15.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       154,          7]
NotebookDataLength[     57725,       1505]
NotebookOptionsPosition[     47208,       1314]
NotebookOutlinePosition[     49621,       1368]
CellTagsIndexPosition[     49543,       1363]
WindowTitle->OracleScan
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[BoxData[GridBox[{
   {GridBox[{
      {
       ItemBox[Cell[BoxData[
         RowBox[{
          TemplateBox[{12},
           "Spacer1"], Cell[
          "WOLFRAM INSTITUTE/ PUZZLES SYMBOL", "PacletNameCell",
           TextAlignment->Center,ExpressionUUID->
           "6f61f6da-e7ed-41f7-b882-23718471501b"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "e7db025c-641c-47da-8aea-c70d5e08aedb"],
        Background->LightDarkSwitched[
          RGBColor[0.490196, 0.576471, 0.690196]],
        ItemSize->Full], ""}
     },
     GridBoxAlignment->{"Rows" -> {{Center}}},
     GridBoxItemSize->{"Columns" -> {Full, 
         Scaled[0.02]}, "Rows" -> {{2.5}}}], Cell[TextData[{
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "See Also",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "c2d08e6e-eb68-4045-bd60-6d91eb891897"]
         }],ExpressionUUID->"05bd4a68-736c-47db-9cb5-8fcbd880f661"],
         StripOnInput->False],{
        StyleBox["\"Pick\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup["paclet:ref/Pick"], 
         StyleBox["\"Select\"", "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup["paclet:ref/Select"], Delimiter, 
         StyleBox[
          "\"Functions\"", "SeeAlsoSection", FontSize -> 14, FontSlant -> 
           "Italic", StripOnInput -> False] :> 
         NotebookFind[EvaluationNotebook[], "SeeAlsoSection", All, CellStyle],
          StyleBox[
          StyleBox[
           "\"PuzzleOracle\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/PuzzleOracle"], 
         StyleBox[
          StyleBox[
           "\"OracleBenchmark\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/OracleBenchmark"], 
         StyleBox[
          StyleBox[
           "\"PuzzleOracleQ\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/PuzzleOracleQ"], 
         StyleBox[
          StyleBox["\"HashChain\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/HashChain"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "56907447-2886-4b23-bc81-e1e15beac680"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "Related Guides",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "482adb68-2f4f-4d58-9405-a4fd05d11cfc"]
         }],ExpressionUUID->"ef9fead0-e9b3-48b9-a9c5-1e023a5f6fc8"],
         StripOnInput->False],{
        "\"Oracles\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Oracles"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "69b16755-dac6-4d6c-a8ba-942bc937e6b9"],
     "\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\[ThickSpace]\
\[ThickSpace]",
     Cell[BoxData[
      TagBox[
       ActionMenuBox[
        FrameBox[Cell[TextData[{
          "URL",
          " ",
          Cell[BoxData[
           GraphicsBox[
            {GrayLevel[0.66667], Thickness[0.13], 
             LineBox[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]},
            AspectRatio->1,
            ImageSize->20,
            PlotRange->{{-3, 4}, {-1, 1}}]],ExpressionUUID->
           "34002e74-49bc-4917-b136-03f848938e9d"]
         }],ExpressionUUID->"06a8705c-2d0d-44f9-b8a5-2092d685c3ab"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/OracleScan\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/OracleScan"], 
         Delimiter, "\"Copy web URL\"" :> 
         Module[{DocumentationSearch`Private`nb$}, 
           DocumentationSearch`Private`nb$ = 
            NotebookPut[
             Notebook[{
               Cell[BoxData[
                 MakeBoxes[
                  Hyperlink[
                   "http://reference.wolfram.com/language/WolframInstitute/\
Puzzles/ref/OracleScan.html"], StandardForm]], "Input", TextClipboardType -> 
                 "PlainText"]}, Visible -> False]]; 
           SelectionMove[DocumentationSearch`Private`nb$, All, Notebook]; 
           FrontEndTokenExecute[DocumentationSearch`Private`nb$, "Copy"]; 
           NotebookClose[DocumentationSearch`Private`nb$]; Null], 
         "\"Go to web URL\"" :> 
         FrontEndExecute[{
           NotebookLocate[{
             URL[If[TrueQ[False], 
                 "http://reference.wolfram.com/system-modeler/", 
                 "http://reference.wolfram.com/language/"] <> 
               "WolframInstitute/Puzzles/ref/OracleScan" <> ".html"], 
              None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "1b51de03-f429-4a6a-bc42-a7b1e5166569"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "a0fc5be9-ebf1-412f-a2fe-1503e794632a"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"f1fecfce-8a95-4297-9420-650674b2ce5f"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"cd4d8be2-da4a-41db-bf3b-eae060be15a5"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "OracleScan", "ObjectName",ExpressionUUID->
      "6a398c86-b3f5-4426-9b81-545d9abcebfd"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"ead0ed51-f870-4d3a-9ad4-21c79bab735f"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "4374fe1e-173c-419d-87af-2454e8bfc0d3"]
    }],ExpressionUUID->"325ed85f-267f-441d-b580-b949557e891c"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"3bb5a80c-5483-48ca-ab30-\
508f86062a6b"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["OracleScan"]], 
         "paclet:WolframInstitute/Puzzles/ref/OracleScan", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       RowBox[{
        StyleBox["oracle", "TI"], ",", " ", 
        RowBox[{"{", 
         RowBox[{
          SubscriptBox[
           StyleBox["cand", "TI"], 
           StyleBox["1", "TR"]], ",", " ", 
          SubscriptBox[
           StyleBox["cand", "TI"], 
           StyleBox["2", "TR"]], ",", " ", "\[Ellipsis]"}], "}"}]}], "]"}]], 
      "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "413a79b2-841d-4c7a-8bc4-8cb42acaf66a"],
     "\[LineSeparator]",
     "gives the candidates that hit the target of the ",
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["PuzzleOracle"]], 
        "paclet:WolframInstitute/Puzzles/ref/PuzzleOracle", 
        "WolframInstitute/Puzzles Package Symbol"},
       "PackageLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "8fec3300-9831-4eee-8c53-b211f37af10d"],
     " ",
     StyleBox["oracle", "TI"],
     ", testing the whole batch in one pass."
    }],ExpressionUUID->"46067224-c05b-464e-8d75-ba8ba623bd43"]},
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["OracleScan"]], 
         "paclet:WolframInstitute/Puzzles/ref/OracleScan", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       RowBox[{
        StyleBox["oracle", "TI"], ",", " ", 
        StyleBox["candidates", "TI"], ",", " ", 
        StyleBox["form", "TI"]}], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "f73ae0ff-70dd-4c40-b79c-526be2fa002c"],
     "\[LineSeparator]",
     "gives the result as the matching ",
     Cell[BoxData["\"\<Candidates\>\""], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "9b6f0907-59f6-4942-a48e-f4e78c4c733b"],
     ", their ",
     Cell[BoxData["\"\<Positions\>\""], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "37bf1bc6-d74d-496c-9462-92011d7b0305"],
     ", or the full ",
     Cell[BoxData["\"\<Booleans\>\""], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "1ef36d75-d012-4b69-9689-8f7a50f69dc4"],
     " mask."
    }],ExpressionUUID->"8cdb01c0-a990-4fd3-ab1c-51cbbb516fb3"]}
  }]], "Usage",ExpressionUUID->"8ce778d9-83f3-4211-a3bc-285e554f6afd"]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[Cell[BoxData[Cell[TextData[{
  Cell[BoxData[
   DynamicBox[ToBoxes[
     If[CurrentValue[
        EvaluationCell[], "CellGroupOpen"] =!= Closed, 
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], 
      Rotate[
       Style[
        Graphics[{
          Thickness[0.18], 
          RGBColor[0.8509803921568627, 0.396078431372549, 0], 
          Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
         PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
        0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
    ImageSizeCache->{
     13.600000000000001`, {-0.1685058593749993, 13.768505859375}}]],
   ExpressionUUID->"9db36eff-0722-41fb-8181-dbabf5d68c59"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"0a335842-2f2b-4cdb-a99f-b1868e3445d5"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "d3eef89a-06e3-4f2e-a017-afc3adcd7b37"]],ExpressionUUID->"b7b39274-aee2-\
4ccd-8f1c-3ebf4239190c"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->842292601,ExpressionUUID->"6ad42b5b-d8a4-4c1d-8dab-3152a440881c"],

Cell[TextData[{
 StyleBox["oracle", "TI"],
 " must satisfy ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["PuzzleOracleQ"]], 
    "paclet:WolframInstitute/Puzzles/ref/PuzzleOracleQ", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "ce365283-5826-45e7-8cfc-f62521eef057"],
 "."
}], "Notes",ExpressionUUID->"64f95144-ff71-4673-8c3a-d57c6d74cac7"],

Cell[TextData[{
 "Each candidate must be a ",
 Cell[BoxData["String"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "156bfa36-9bc0-4c27-a316-18b4d9170ff5"],
 ", or a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ByteArray"]], "paclet:ref/ByteArray"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "cf9d64a5-b640-4fc7-b0fe-5b22b2d513b3"],
 " when ",
 StyleBox["oracle", "TI"],
 " has a digest target."
}], "Notes",ExpressionUUID->"edfe8fdd-457f-415f-a444-077077d6c2b1"],

Cell[TextData[{
 StyleBox["form", "TI"],
 " is one of ",
 Cell[BoxData["\<\"Candidates\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "981825cc-29bd-400a-b733-82afd9aaac4f"],
 " (the default), ",
 Cell[BoxData["\<\"Positions\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "b0fb074f-3e42-4f95-89f2-97252e838e2c"],
 " or ",
 Cell[BoxData["\<\"Booleans\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "6cba85e8-a3ea-4cbb-b8db-9921e03d9b77"],
 "."
}], "Notes",ExpressionUUID->"579d08ae-b910-4977-a609-da4696ca65bf"],

Cell[TextData[{
 "The answers are exactly those of mapping ",
 StyleBox["oracle", "TI"],
 " over the batch; the batch is a faster route to them, not a different \
question."
}], "Notes",ExpressionUUID->"13fbe08a-5d53-470e-919f-3315838a0b5b"],

Cell["\<\
The whole batch is converted once, hashed in one call, and resolved with one \
lookup, so the evaluator's per-call cost is paid once for the batch rather \
than once per candidate.\
\>", "Notes",ExpressionUUID->"b0c33ef0-2232-4907-949e-ad5b4f1eb367"],

Cell["\<\
A digest oracle whose method has a compiled kernel hashes a batch of \
equal-length candidates across threads; a ragged batch is hashed one \
candidate at a time, still by the compiled kernel.\
\>", "Notes",ExpressionUUID->"eff90343-00c6-488e-994e-91f6917351a0"],

Cell["\<\
A batch containing a candidate the oracle cannot read is out of scope and \
returned unevaluated, so a malformed candidate cannot be silently dropped \
from a sweep.\
\>", "Notes",ExpressionUUID->"0b9f30a4-8068-44c8-ad1f-4ab5711387aa"],

Cell["An empty batch gives an empty result.", "Notes",ExpressionUUID->"58f7d0b2-2519-4070-a380-cb0d822a98a8"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"37a1c503-d589-47ad-bd54-d6e52dccbcbe"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[
     MatchQ[
      CurrentValue[
       EvaluationNotebook[], {
       TaggingRules, "Openers", "PrimaryExamplesSection"}, Open], 
      Alternatives[True, Open]], 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]],
   ImageSizeCache->{
    13.600000000000001`, {4.251494140625001, 9.348505859375}}]],
  ExpressionUUID->"22e62368-8e84-41b6-bf8b-2c0b42d137c0"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"dcc2e1d9-76b7-4ef6-9d08-992d4270783a"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(13)", "ExampleCount",ExpressionUUID->
  "9d38f8c5-5585-4143-99b2-5637c9ca0a0c"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->199543983,ExpressionUUID->"4bf44f98-bcae-43ff-aaa5-4f7301d87f36"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"e90d2fa9-165e-467e-90b8-318515badccc"],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "c12e5322-3d40-413b-a560-c3280c5be4b2"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"cf90032c-6384-48c3-a288-62b1e925f973"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "3be83ce1-429b-4960-b9c5-841842195bb6"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1513749314,ExpressionUUID->"4f503922-cb5f-4c9d-952a-c6bba3349f5f"],

Cell["The candidates in a batch that hit the target:", "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"89777629-5f42-46a9-a3aa-146ebe6f50e2"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
     " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], ",", " ", 
   
   RowBox[{"{", 
    RowBox[{"\"\<aa\>\"", ",", " ", "\"\<abc\>\"", ",", " ", "\"\<zz\>\""}], 
    "}"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"ab766f7a-5dda-4cf3-ad2c-d859e680d623"],

Cell[BoxData[
 RowBox[{"{", "\<\"abc\"\>", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"1ab2d3e7-6dfb-4250-b27d-fc952724573d"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "87ed0830-68b9-4760-96da-16da79992572"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"793303f6-a695-438c-\
a7b3-e5a5ef4f9356"],

Cell["\<\
Scanning every three-letter string over a five-letter alphabet against the \
same target:\
\>", "ExampleText",ExpressionUUID->"cb0edfad-c579-4573-ad58-e356846e0fd4"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
     " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], ",", "\n",
    "\t", 
   RowBox[{"StringJoin", " ", "/@", " ", 
    RowBox[{"Tuples", "[", 
     RowBox[{
      RowBox[{"CharacterRange", "[", 
       RowBox[{"\"\<a\>\"", ",", " ", "\"\<e\>\""}], "]"}], ",", " ", "3"}], 
     "]"}]}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"703ce4a9-e641-42d8-a4bf-52595f1f9587"],

Cell[BoxData[
 RowBox[{"{", "\<\"abc\"\>", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"c5959bf2-b19e-4a1c-8053-66294d309229"]
}, Open  ]]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "665d0a6e-ab60-4d4a-9449-7dfa7ed27bf0"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"3d4c2c96-1587-47e5-993a-aa61c8eb8fba"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(7)", "ExampleCount",ExpressionUUID->
  "f721fb64-f9fb-4dd2-822b-ce8663809218"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"d1642dec-76f3-48e3-a567-6860b48c18d8"],

Cell[TextData[{
 "The ",
 Cell[BoxData["\<\"Positions\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "28589645-92d0-4e49-818c-95f2537caa8f"],
 " form gives where in the batch the hits are, which is what a \
generator-driven sweep needs to recover the candidate's index:"
}], "ExampleText",ExpressionUUID->"5e11838c-a5cf-4506-8067-90dc66e95dad"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
     " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], ",", " ", 
   
   RowBox[{"{", 
    RowBox[{"\"\<aa\>\"", ",", " ", "\"\<abc\>\"", ",", " ", "\"\<zz\>\""}], 
    "}"}], ",", " ", "\"\<Positions\>\""}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"31de3a09-8040-4332-bfa3-c9e039929c9a"],

Cell[BoxData[
 RowBox[{"{", "2", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"85e75006-b1cc-4918-b07c-f7ec5819cbf5"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "5e985fb3-84f1-48d2-bdea-2b32928e343a"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"3cb94aaf-4b58-4064-\
8ae3-dfd0611d6f70"],

Cell[TextData[{
 "The ",
 Cell[BoxData["\<\"Booleans\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "b642ccf2-1af9-472d-b38d-1f954ce86598"],
 " form gives the whole mask, one entry per candidate:"
}], "ExampleText",ExpressionUUID->"93dec711-43fd-42df-867d-ba292d72f8ae"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
     " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], ",", " ", 
   
   RowBox[{"{", 
    RowBox[{"\"\<aa\>\"", ",", " ", "\"\<abc\>\"", ",", " ", "\"\<zz\>\""}], 
    "}"}], ",", " ", "\"\<Booleans\>\""}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"82a68463-9fc0-470f-9c18-45fddadf5c4e"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"False", ",", "True", ",", "False"}], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"c01dfcb7-1871-4338-a65e-a0c503c1d4ad"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "8b33413c-f049-424e-9e0d-898f0008f1d6"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"613f03bf-9dfa-4006-\
9585-9d1ecade3041"],

Cell["A membership oracle scans a batch of addresses:", "ExampleText",ExpressionUUID->"036d86c6-0c83-48cc-8294-79288925904f"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", "\n", "\t", 
  RowBox[{
   RowBox[{
   "PuzzleOracle", "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}], ",",
    "\n", "\t", 
   RowBox[{"{", 
    RowBox[{"\"\<1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH\>\"", ",", 
     " ", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\""}], "}"}]}], "\n", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"22237a46-b479-4774-b3ad-84177aff17d9"],

Cell[BoxData[
 RowBox[{"{", "\<\"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\"\>", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"3c26c7e9-bd8c-4cbb-9139-a0c40ebbf718"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "8fef7f99-94f8-4b3d-9d3d-8c69548fd45c"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"e1c41591-d69c-4387-\
b495-7be41edd3196"],

Cell["\<\
A digest oracle also scans raw byte candidates, and they need not all be the \
same length:\
\>", "ExampleText",ExpressionUUID->"9caef952-1b44-4bd5-9f58-d19495af7a60"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{
     RowBox[{"Hash", "[", 
      RowBox[{
       RowBox[{"ByteArray", "[", 
        RowBox[{"{", 
         RowBox[{"7", ",", " ", "7", ",", " ", "7"}], "}"}], "]"}], ",", 
       " ", "\"\<SHA256\>\"", ",", " ", "\"\<HexString\>\""}], "]"}], ",", 
     " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], ",", "\n",
    "\t", 
   RowBox[{"{", 
    RowBox[{
     RowBox[{"ByteArray", "[", 
      RowBox[{"{", "1", "}"}], "]"}], ",", " ", 
     RowBox[{"ByteArray", "[", 
      RowBox[{"{", 
       RowBox[{"7", ",", " ", "7", ",", " ", "7"}], "}"}], "]"}]}], "}"}]}], 
  "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"8390a564-b1c7-44aa-8b19-9953d0243fe3"],

Cell[BoxData[
 RowBox[{"{", 
  InterpretationBox[
   RowBox[{
    TagBox["ByteArray",
     "SummaryHead"], "[", 
    DynamicModuleBox[{Typeset`open$$ = False, Typeset`embedState$$ = "Ready"}, 
     TemplateBox[{
       PaneSelectorBox[{False -> GridBox[{{
             GridBox[{{
                TagBox["\"3 bytes\"", "SummaryItem"]}}, 
              GridBoxAlignment -> {
               "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
              False, GridBoxItemSize -> {
               "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
              GridBoxSpacings -> {
               "Columns" -> {{2}}, "Rows" -> {{Automatic}}}, 
              BaseStyle -> {
               ShowStringCharacters -> False, NumberMarks -> False, 
                PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
           GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
           AutoDelete -> False, 
           GridBoxItemSize -> {
            "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
           BaselinePosition -> {1, 1}], True -> GridBox[{{
             GridBox[{{
                TagBox["\"3 bytes\"", "SummaryItem"]}}, 
              GridBoxAlignment -> {
               "Columns" -> {{Left}}, "Rows" -> {{Automatic}}}, AutoDelete -> 
              False, GridBoxItemSize -> {
               "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
              GridBoxSpacings -> {
               "Columns" -> {{2}}, "Rows" -> {{Automatic}}}, 
              BaseStyle -> {
               ShowStringCharacters -> False, NumberMarks -> False, 
                PrintPrecision -> 3, ShowSyntaxStyles -> False}]}}, 
           GridBoxAlignment -> {"Columns" -> {{Left}}, "Rows" -> {{Top}}}, 
           AutoDelete -> False, 
           GridBoxItemSize -> {
            "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, 
           BaselinePosition -> {1, 1}]}, 
        Dynamic[Typeset`open$$], ImageSize -> Automatic]},
      "SummaryPanel"],
     DynamicModuleValues:>{}], "]"}],
   ByteArray[{7, 7, 7}],
   Editable->False,
   SelectWithContents->True,
   Selectable->False], "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"aee58fcf-0384-4d1a-99b6-5b13296539dd"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "ef4307f3-91e8-4f3c-9968-2d719de2018a"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"c1936418-0867-4f3f-\
9272-964ce9c6ba40"],

Cell["An empty batch gives an empty result:", "ExampleText",ExpressionUUID->"5d48ad26-8be1-4cca-956c-8ab710d05862"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", "\"\<abc\>\"", "]"}], ",", " ", 
   RowBox[{"{", "}"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"d669bd20-2b38-4453-bd26-6c58f443322b"],

Cell[BoxData[
 RowBox[{"{", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"3225dd5b-7d4d-474f-a41d-95ba9b4f6878"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "d3424e98-fe1d-4dea-918b-a3cd48ccf88f"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"d6b74abc-7b27-4610-\
ad01-8d2665f416f6"],

Cell["\<\
A candidate the oracle cannot read leaves the whole scan unevaluated:\
\>", "ExampleText",ExpressionUUID->"0877389d-bfcd-4b89-8b66-8dc23fef973e"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", 
  RowBox[{
   RowBox[{
   "PuzzleOracle", "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}], ",",
    " ", 
   RowBox[{"{", 
    RowBox[{"\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", ",", " ", "42"}], 
    "}"}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"a3e855ce-48c8-4cda-adcf-38a98ce97e80"],

Cell[BoxData[
 RowBox[{"OracleScan", "[", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\[LeftAssociation]", 
     RowBox[{
      RowBox[{"\<\"Type\"\>", "\[Rule]", "\<\"Membership\"\>"}], ",", 
      RowBox[{"\<\"Method\"\>", "\[Rule]", "None"}], ",", 
      RowBox[{"\<\"Iterations\"\>", "\[Rule]", "0"}], ",", 
      RowBox[{"\<\"CandidateEncoding\"\>", "\[Rule]", "\<\"String\"\>"}], ",", 
      RowBox[{"\<\"TargetCount\"\>", "\[Rule]", "1"}], ",", 
      RowBox[{"\<\"Targets\"\>", "\[Rule]", 
       RowBox[{"\[LeftAssociation]", 
        RowBox[{"\<\"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\"\>", "\[Rule]", 
         "True"}], "\[RightAssociation]"}]}]}], "\[RightAssociation]"}], 
    "]"}], ",", 
   RowBox[{"{", 
    RowBox[{"\<\"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\"\>", ",", "42"}], "}"}], 
   ",", "\<\"Candidates\"\>"}], "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"042f16b8-4deb-4899-afeb-7ca5a6d41e1b"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "601c2cd4-28b3-42e2-80c5-6b422fe691ad"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"8dcba40d-5db9-4efb-\
b32f-a0602e270878"],

Cell["So does an unrecognized result form:", "ExampleText",ExpressionUUID->"77635ef2-410f-40f2-9083-cfd4a110986c"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
     " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], ",", " ", 
   
   RowBox[{"{", "\"\<abc\>\"", "}"}], ",", " ", "\"\<Matches\>\""}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"a6a0e984-810f-4284-b3b4-0e5c7aca58ee"],

Cell[BoxData[
 RowBox[{"OracleScan", "[", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\[LeftAssociation]", 
     RowBox[{
      RowBox[{"\<\"Type\"\>", "\[Rule]", "\<\"Digest\"\>"}], ",", 
      RowBox[{"\<\"Method\"\>", "\[Rule]", "\<\"SHA256\"\>"}], ",", 
      RowBox[{"\<\"Iterations\"\>", "\[Rule]", "1"}], ",", 
      RowBox[{"\<\"CandidateEncoding\"\>", "\[Rule]", "\<\"String\"\>"}], ",", 
      RowBox[{"\<\"TargetCount\"\>", "\[Rule]", "1"}], ",", 
      RowBox[{"\<\"Targets\"\>", "\[Rule]", 
       RowBox[{"\[LeftAssociation]", 
        RowBox[{"\<\"\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\"\>", "\[Rule]",
          "True"}], "\[RightAssociation]"}]}]}], "\[RightAssociation]"}], 
    "]"}], ",", 
   RowBox[{"{", "\<\"abc\"\>", "}"}], ",", "\<\"Matches\"\>"}], 
  "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"30330118-94bf-4e11-8adf-5aebc6c77bd1"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "16b3a858-2971-4e4f-84f8-9750e2eb5ea6"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"71772591-d5c7-4114-87c6-d81f9e8d7460"],
 "Applications",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "ffe5bdef-9527-4a0e-a010-75d6d8c4878e"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->258228157,ExpressionUUID->"de378829-d440-44b9-ab39-a0a169c10774"],

Cell["\<\
Sweeping a passphrase list against a HASH160 address payload:\
\>", "ExampleText",ExpressionUUID->"03b2aa62-1567-432e-800e-6b98c533b35f"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"OracleScan", "[", "\n", "\t", 
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\"\<010966776006953d5567439e5e39f86a0d273bee\>\"", ",", " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<RIPEMD160SHA256\>\""}], ",", " ", 
     
     RowBox[{"\"\<CandidateEncoding\>\"", " ", "->", " ", "\"\<Hex\>\""}]}], 
    "]"}], ",", "\n", "\t", 
   RowBox[{"{", "\n", "\t\t", 
    RowBox[{"\"\<\
0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453\
A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6\>\"", ",", "\n", 
     "\t\t", "\"\<\
040000000000000000000000000000000000000000000000000000000000000000000000000000\
00000000000000000000000000000000000000000000000000\>\""}], "\n", "\t", "}"}], 
   ",", "\n", "\t", "\"\<Positions\>\""}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"17d64e58-8920-4933-ac06-a9ff96fa87da"],

Cell[BoxData[
 RowBox[{"{", "1", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"770b0d77-b11d-46eb-95c9-985a358500c3"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "b013e47a-4464-462a-b1de-b74d2dd0482f"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"eb1a0e33-a94c-4f39-915c-fe63b95ef819"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "17637028-ce0f-4adc-b15d-507d79b1974a"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"7a4d5b5b-ac01-43ba-8b21-ba2d6f835af6"],

Cell["\<\
The batch answers agree with mapping the oracle over the same candidates:\
\>", "ExampleText",ExpressionUUID->"3fb337b9-2b11-4b14-9edf-bc8765ea0f2f"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"With", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"oracle", " ", "=", " ", 
      RowBox[{"PuzzleOracle", "[", 
       RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
        " ", 
        RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}]}], ",", 
     " ", 
     RowBox[{"candidates", " ", "=", " ", 
      RowBox[{"{", 
       RowBox[{"\"\<aa\>\"", ",", " ", "\"\<abc\>\"", ",", 
        " ", "\"\<zz\>\""}], "}"}]}]}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"OracleScan", "[", 
     RowBox[{"oracle", ",", " ", "candidates", ",", " ", "\"\<Booleans\>\""}],
      "]"}], " ", "===", " ", 
    RowBox[{"Map", "[", 
     RowBox[{"oracle", ",", " ", "candidates"}], "]"}]}]}], "\n", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"752f9ae0-7daf-4f67-aaef-39a15d6aa048"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"ee6a5c83-398c-4aa6-ae51-f0dad5cbdfe9"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "1b031df8-85a5-4a3e-89f9-652f96879ba4"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"b8d061b8-c062-4452-\
8af4-9e738dd174e8"],

Cell[TextData[{
 "The ",
 Cell[BoxData["\<\"Candidates\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "be66bf78-b679-413f-95b9-32414df71737"],
 " form is the ",
 Cell[BoxData["\<\"Booleans\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "508da5e8-9783-4de2-aabf-531ce6b3df1d"],
 " mask applied with ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Pick"]], "paclet:ref/Pick"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "2799677d-d7db-46ef-9942-396a13b45ada"],
 ":"
}], "ExampleText",ExpressionUUID->"19f4dab1-5220-41e6-b751-6eefff92812d"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"With", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{
     RowBox[{"oracle", " ", "=", " ", 
      RowBox[{"PuzzleOracle", "[", 
       RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
        " ", 
        RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}]}], ",", 
     " ", 
     RowBox[{"candidates", " ", "=", " ", 
      RowBox[{"{", 
       RowBox[{"\"\<aa\>\"", ",", " ", "\"\<abc\>\"", ",", 
        " ", "\"\<zz\>\""}], "}"}]}]}], "}"}], ",", "\n", "\t", 
   RowBox[{
    RowBox[{"OracleScan", "[", 
     RowBox[{"oracle", ",", " ", "candidates"}], "]"}], " ", "===", " ", 
    RowBox[{"Pick", "[", 
     RowBox[{"candidates", ",", " ", 
      RowBox[{"OracleScan", "[", 
       RowBox[{
       "oracle", ",", " ", "candidates", ",", " ", "\"\<Booleans\>\""}], 
       "]"}]}], "]"}]}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"31b9f2c0-9ea1-4181-b069-fcfc11b0da33"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"36c2c439-fd21-43ce-89c2-2afdc4ba7376"]
}, Open  ]]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell[TextData[{
 Cell[BoxData[
  DynamicBox[ToBoxes[
    If[CurrentValue[
       EvaluationCell[], "CellGroupOpen"] =!= Closed, 
     Style[
      Graphics[{
        Thickness[0.18], 
        RGBColor[0.8509803921568627, 0.396078431372549, 0], 
        Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
       PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
      0.68 Inherited], 
     Rotate[
      Style[
       Graphics[{
         Thickness[0.18], 
         RGBColor[0.8509803921568627, 0.396078431372549, 0], 
         Line[{{-1.8, 0.5}, {0, 0}, {1.8, 0.5}}]}, AspectRatio -> 1, 
        PlotRange -> {{-3, 4}, {-1, 1}}, ImageSize -> 20], Magnification -> 
       0.68 Inherited], Rational[1, 2] Pi, {-1.65, -1}]]]]],ExpressionUUID->
  "ada440ca-1f54-4f7b-874e-b84375ec00ab"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"e0363631-e3f5-4819-aef7-b4c44da68a1b"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(1)", "ExampleCount",ExpressionUUID->
  "3ed2a3d4-e50a-424f-9ecc-6deb47528448"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"2385638d-341b-448f-adb0-39a2554ffb78"],

Cell[TextData[{
 "The whole batch is held in memory and hashed at once, so a sweep of a \
billion candidates is run as many scans of a manageable batch, not one scan \
of the lot. ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["OracleBenchmark"]], 
    "paclet:WolframInstitute/Puzzles/ref/OracleBenchmark", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "8fb2e9b9-69af-4153-8d56-34609ac3c1b5"],
 " reports the rate a batch of a given size achieves:"
}], "ExampleText",ExpressionUUID->"8248856b-61f3-4535-89d1-5cb9e2a2560a"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"OracleBenchmark", "[", 
   RowBox[{
    RowBox[{"PuzzleOracle", "[", 
     RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
      " ", 
      RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], ",", " ",
     "20000"}], "]"}], "[", "\"\<CandidatesPerSecond\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"5ddd881a-976e-4ccf-9945-e95f488767e9"],

Cell[BoxData["223164"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"a8623c67-e146-49cd-b5c5-5737e307ea4f"]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]],
     ImageSizeCache->{50., {26.47265625, 33.52734375}}], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["PuzzleOracle"]], 
           "paclet:WolframInstitute/Puzzles/ref/PuzzleOracle", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "8cf032a5-a741-4d3d-8b3b-c4374ae053f1"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["OracleBenchmark"]], 
           "paclet:WolframInstitute/Puzzles/ref/OracleBenchmark", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "63057a9f-5132-4024-9596-7dc397613870"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["PuzzleOracleQ"]], 
           "paclet:WolframInstitute/Puzzles/ref/PuzzleOracleQ", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "e6ef72fe-b9cc-4f68-a486-22213a1d659c"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["HashChain"]], 
           "paclet:WolframInstitute/Puzzles/ref/HashChain", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "678334aa-7b31-45ff-b925-b528452fe595"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Pick"]], "paclet:ref/Pick"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "4b8799ad-1079-4bd1-9763-378d042609a1"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Select"]], "paclet:ref/Select"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "4ecc3ad1-174e-4c00-b8d6-182f857c6651"]
       }], "SeeAlso",ExpressionUUID->"3ffba380-50f7-4569-af40-0309f8e1c102"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"9b694475-dd40-4efc-94bf-\
71ec0d508822"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, "RelatedGuide.png"]],
     ImageSizeCache->{50., {26.47265625, 33.52734375}}], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Oracles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Oracles"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "167d5fcc-0b70-43e7-b761-f389e48c1bb0"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"8820884b-3767-47ff-8501-\
ffd114a1dcdd"],

Cell[" ", "FooterCell",ExpressionUUID->"5c174a27-1a53-4e50-9c68-1080aed05436"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"OracleScan",
TaggingRules->{
 "ModificationHighlight" -> False, "ColorType" -> "", "LinkTrails" -> "", 
  "ExampleCounter" -> 1, 
  "Openers" -> {
   "PrimaryExamplesSection" -> Open, "ExampleSection" -> {"0" -> Open}, 
    "AllOptsTable" -> Closed}, "NewStyles" -> True, 
  "CitationPopupData" -> $Failed, "ShowCitation" -> False, "HasOptions" -> 
  True, "RootCaptions" -> "", "HeaderCoreAreaLink" -> {}, 
  "Metadata" -> {
   "built" -> "{2026, 8, 27, 0, 11, 47.521591}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[OracleScan,paclet : WolframInstitute/Puzzles/ref/OracleScan, \
WolframInstitute/Puzzles Package Symbol][oracle, {cand1, cand2, ...}] gives \
the candidates that hit the target of the PackageLink[PuzzleOracle, paclet : \
WolframInstitute/Puzzles/ref/PuzzleOracle, WolframInstitute/Puzzles Package \
Symbol] oracle, testing the whole batch in one pass. \
PackageLink[OracleScan,paclet : WolframInstitute/Puzzles/ref/OracleScan, \
WolframInstitute/Puzzles Package Symbol][oracle, candidates, form] gives the \
result as the matching Candidates, their Positions, or the full Booleans \
mask.", "synonyms" -> {}, "tabletags" -> {}, "title" -> "OracleScan", 
    "titlemodifier" -> "", "metadescription" -> "", "windowtitle" -> 
    "OracleScan", "type" -> "Symbol", "uri" -> 
    "WolframInstitute/Puzzles/ref/OracleScan", "WorkflowDockedCell" -> ""}, 
  "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"66880c2c-b1a7-4902-ae54-bb7c1c30b03a"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[17981, 485, 156, 2, 70, "ExampleText",ExpressionUUID->"89777629-5f42-46a9-a3aa-146ebe6f50e2",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 49386, 1357}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[578, 21, 6372, 154, 70, "AnchorBarGrid",ExpressionUUID->"f1fecfce-8a95-4297-9420-650674b2ce5f",
 CellID->1],
Cell[6953, 177, 107, 0, 70, "ContextNameCell",ExpressionUUID->"cd4d8be2-da4a-41db-bf3b-eae060be15a5"],
Cell[CellGroupData[{
Cell[7085, 181, 553, 14, 70, "ObjectNameGrid",ExpressionUUID->"3bb5a80c-5483-48ca-ab30-508f86062a6b"],
Cell[7641, 197, 2901, 77, 70, "Usage",ExpressionUUID->"8ce778d9-83f3-4211-a3bc-285e554f6afd"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10579, 279, 1443, 34, 70, "NotesSection",ExpressionUUID->"6ad42b5b-d8a4-4c1d-8dab-3152a440881c",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->842292601],
Cell[12025, 315, 502, 15, 70, "Notes",ExpressionUUID->"64f95144-ff71-4673-8c3a-d57c6d74cac7"],
Cell[12530, 332, 627, 19, 70, "Notes",ExpressionUUID->"edfe8fdd-457f-415f-a444-077077d6c2b1"],
Cell[13160, 353, 675, 18, 70, "Notes",ExpressionUUID->"579d08ae-b910-4977-a609-da4696ca65bf"],
Cell[13838, 373, 241, 5, 70, "Notes",ExpressionUUID->"13fbe08a-5d53-470e-919f-3315838a0b5b"],
Cell[14082, 380, 260, 4, 70, "Notes",ExpressionUUID->"b0c33ef0-2232-4907-949e-ad5b4f1eb367"],
Cell[14345, 386, 272, 4, 70, "Notes",ExpressionUUID->"eff90343-00c6-488e-994e-91f6917351a0"],
Cell[14620, 392, 245, 4, 70, "Notes",ExpressionUUID->"0b9f30a4-8068-44c8-ad1f-4ab5711387aa"],
Cell[14868, 398, 109, 0, 70, "Notes",ExpressionUUID->"58f7d0b2-2519-4070-a380-cb0d822a98a8"]
}, Closed]],
Cell[14992, 401, 80, 0, 70, "PageDelimiter",ExpressionUUID->"37a1c503-d589-47ad-bd54-d6e52dccbcbe"],
Cell[CellGroupData[{
Cell[15097, 405, 1401, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"4bf44f98-bcae-43ff-aaa5-4f7301d87f36",
 CellID->199543983],
Cell[16501, 444, 216, 4, 70, "Input",ExpressionUUID->"e90d2fa9-165e-467e-90b8-318515badccc",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[16742, 452, 1236, 31, 70, "ExampleSection",ExpressionUUID->"4f503922-cb5f-4c9d-952a-c6bba3349f5f",
 CellID->1513749314],
Cell[17981, 485, 156, 2, 70, "ExampleText",ExpressionUUID->"89777629-5f42-46a9-a3aa-146ebe6f50e2",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[18162, 491, 528, 13, 70, "Input",ExpressionUUID->"ab766f7a-5dda-4cf3-ad2c-d859e680d623"],
Cell[18693, 506, 139, 2, 70, "Output",ExpressionUUID->"1ab2d3e7-6dfb-4250-b27d-fc952724573d"]
}, Open  ]],
Cell[CellGroupData[{
Cell[18869, 513, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"793303f6-a695-438c-a7b3-e5a5ef4f9356"],
Cell[19096, 520, 175, 3, 70, "ExampleText",ExpressionUUID->"cb0edfad-c579-4573-ad58-e356846e0fd4"],
Cell[CellGroupData[{
Cell[19296, 527, 661, 16, 70, "Input",ExpressionUUID->"703ce4a9-e641-42d8-a4bf-52595f1f9587"],
Cell[19960, 545, 139, 2, 70, "Output",ExpressionUUID->"c5959bf2-b19e-4a1c-8053-66294d309229"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[20160, 554, 1227, 31, 70, "ExampleSection",ExpressionUUID->"d1642dec-76f3-48e3-a567-6860b48c18d8",
 CellID->1293636265],
Cell[21390, 587, 399, 8, 70, "ExampleText",ExpressionUUID->"5e11838c-a5cf-4506-8067-90dc66e95dad"],
Cell[CellGroupData[{
Cell[21814, 599, 559, 13, 70, "Input",ExpressionUUID->"31de3a09-8040-4332-bfa3-c9e039929c9a"],
Cell[22376, 614, 129, 2, 70, "Output",ExpressionUUID->"85e75006-b1cc-4918-b07c-f7ec5819cbf5"]
}, Open  ]],
Cell[CellGroupData[{
Cell[22542, 621, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"3cb94aaf-4b58-4064-8ae3-dfd0611d6f70"],
Cell[22769, 628, 325, 7, 70, "ExampleText",ExpressionUUID->"93dec711-43fd-42df-867d-ba292d72f8ae"],
Cell[CellGroupData[{
Cell[23119, 639, 558, 13, 70, "Input",ExpressionUUID->"82a68463-9fc0-470f-9c18-45fddadf5c4e"],
Cell[23680, 654, 173, 3, 70, "Output",ExpressionUUID->"c01dfcb7-1871-4338-a65e-a0c503c1d4ad"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[23902, 663, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"613f03bf-9dfa-4006-9585-9d1ecade3041"],
Cell[24129, 670, 125, 0, 70, "ExampleText",ExpressionUUID->"036d86c6-0c83-48cc-8294-79288925904f"],
Cell[CellGroupData[{
Cell[24279, 674, 477, 11, 70, "Input",ExpressionUUID->"22237a46-b479-4774-b3ad-84177aff17d9"],
Cell[24759, 687, 170, 2, 70, "Output",ExpressionUUID->"3c26c7e9-bd8c-4cbb-9139-a0c40ebbf718"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[24978, 695, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"e1c41591-d69c-4387-b495-7be41edd3196"],
Cell[25205, 702, 177, 3, 70, "ExampleText",ExpressionUUID->"9caef952-1b44-4bd5-9f58-d19495af7a60"],
Cell[CellGroupData[{
Cell[25407, 709, 853, 23, 70, "Input",ExpressionUUID->"8390a564-b1c7-44aa-8b19-9953d0243fe3"],
Cell[26263, 734, 2230, 48, 70, "Output",ExpressionUUID->"aee58fcf-0384-4d1a-99b6-5b13296539dd"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[28542, 788, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"c1936418-0867-4f3f-9272-964ce9c6ba40"],
Cell[28769, 795, 115, 0, 70, "ExampleText",ExpressionUUID->"5d48ad26-8be1-4cca-956c-8ab710d05862"],
Cell[CellGroupData[{
Cell[28909, 799, 287, 6, 70, "Input",ExpressionUUID->"d669bd20-2b38-4453-bd26-6c58f443322b"],
Cell[29199, 807, 124, 2, 70, "Output",ExpressionUUID->"3225dd5b-7d4d-474f-a41d-95ba9b4f6878"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[29372, 815, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"d6b74abc-7b27-4610-ad01-8d2665f416f6"],
Cell[29599, 822, 155, 2, 70, "ExampleText",ExpressionUUID->"0877389d-bfcd-4b89-8b66-8dc23fef973e"],
Cell[CellGroupData[{
Cell[29779, 828, 408, 10, 70, "Input",ExpressionUUID->"a3e855ce-48c8-4cda-adcf-38a98ce97e80"],
Cell[30190, 840, 939, 19, 70, "Output",ExpressionUUID->"042f16b8-4deb-4899-afeb-7ca5a6d41e1b"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[31178, 865, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"8dcba40d-5db9-4efb-b32f-a0602e270878"],
Cell[31405, 872, 114, 0, 70, "ExampleText",ExpressionUUID->"77635ef2-410f-40f2-9083-cfd4a110986c"],
Cell[CellGroupData[{
Cell[31544, 876, 492, 12, 70, "Input",ExpressionUUID->"a6a0e984-810f-4284-b3b4-0e5c7aca58ee"],
Cell[32039, 890, 916, 19, 70, "Output",ExpressionUUID->"30330118-94bf-4e11-8adf-5aebc6c77bd1"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[33016, 916, 1233, 31, 70, "ExampleSection",ExpressionUUID->"de378829-d440-44b9-ab39-a0a169c10774",
 CellID->258228157],
Cell[34252, 949, 147, 2, 70, "ExampleText",ExpressionUUID->"03b2aa62-1567-432e-800e-6b98c533b35f"],
Cell[CellGroupData[{
Cell[34424, 955, 938, 18, 70, "Input",ExpressionUUID->"17d64e58-8920-4933-ac06-a9ff96fa87da"],
Cell[35365, 975, 129, 2, 70, "Output",ExpressionUUID->"770b0d77-b11d-46eb-95c9-985a358500c3"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[35543, 983, 1244, 31, 70, "ExampleSection",ExpressionUUID->"7a4d5b5b-ac01-43ba-8b21-ba2d6f835af6",
 CellID->2123667759],
Cell[36790, 1016, 159, 2, 70, "ExampleText",ExpressionUUID->"3fb337b9-2b11-4b14-9edf-bc8765ea0f2f"],
Cell[CellGroupData[{
Cell[36974, 1022, 935, 24, 70, "Input",ExpressionUUID->"752f9ae0-7daf-4f67-aaef-39a15d6aa048"],
Cell[37912, 1048, 110, 1, 70, "Output",ExpressionUUID->"ee6a5c83-398c-4aa6-ae51-f0dad5cbdfe9"]
}, Open  ]],
Cell[CellGroupData[{
Cell[38059, 1054, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"b8d061b8-c062-4452-8af4-9e738dd174e8"],
Cell[38286, 1061, 757, 22, 70, "ExampleText",ExpressionUUID->"19f4dab1-5220-41e6-b751-6eefff92812d"],
Cell[CellGroupData[{
Cell[39068, 1087, 1026, 26, 70, "Input",ExpressionUUID->"31b9f2c0-9ea1-4181-b069-fcfc11b0da33"],
Cell[40097, 1115, 110, 1, 70, "Output",ExpressionUUID->"36c2c439-fd21-43ce-89c2-2afdc4ba7376"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[40268, 1123, 1237, 31, 70, "ExampleSection",ExpressionUUID->"2385638d-341b-448f-adb0-39a2554ffb78",
 CellID->1305812373],
Cell[41508, 1156, 683, 16, 70, "ExampleText",ExpressionUUID->"8248856b-61f3-4535-89d1-5cb9e2a2560a"],
Cell[CellGroupData[{
Cell[42216, 1176, 495, 11, 70, "Input",ExpressionUUID->"5ddd881a-976e-4ccf-9945-e95f488767e9"],
Cell[42714, 1189, 112, 1, 70, "Output",ExpressionUUID->"a8623c67-e146-49cd-b5c5-5737e307ea4f"]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[42865, 1195, 3513, 94, 70, "SeeAlsoSection",ExpressionUUID->"9b694475-dd40-4efc-94bf-71ec0d508822"],
Cell[46381, 1291, 742, 19, 70, "MoreAboutSection",ExpressionUUID->"8820884b-3767-47ff-8501-ffd114a1dcdd"],
Cell[47126, 1312, 78, 0, 70, "FooterCell",ExpressionUUID->"5c174a27-1a53-4e50-9c68-1080aed05436"]
}
]
*)

(* End of internal cache information *)

