(* 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[     80090,       2043]
NotebookOptionsPosition[     64898,       1774]
NotebookOutlinePosition[     67494,       1830]
CellTagsIndexPosition[     67416,       1825]
WindowTitle->PuzzleOracle
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->
           "797ffb91-64ee-48ae-b834-5c52bdc1c13c"], 
          TemplateBox[{8},
           "Spacer1"]}]],
         TextAlignment->Center,ExpressionUUID->
         "f20361e9-3d60-43d9-956d-8efc7012a492"],
        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->
           "2a686e03-6e92-4903-a440-8de5838cf81d"]
         }],ExpressionUUID->"37b04a3c-c402-4adf-98fd-3c5ac2da3a07"],
         StripOnInput->False],{
        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[
           "\"PuzzleOracleQ\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/PuzzleOracleQ"], 
         StyleBox[
          StyleBox["\"OracleScan\"", "SeeAlsoRelated", StripOnInput -> False],
            "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/OracleScan"], 
         StyleBox[
          StyleBox[
           "\"OracleBenchmark\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/OracleBenchmark"], 
         StyleBox[
          StyleBox["\"HashChain\"", "SeeAlsoRelated", StripOnInput -> False], 
           "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/HashChain"], 
         StyleBox[
          StyleBox[
           "\"$OracleHashMethods\"", "SeeAlsoRelated", StripOnInput -> False],
            "SeeAlsoRelated", StripOnInput -> False] :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/ref/$OracleHashMethods"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"SeeAlso"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "1bbdacb3-0423-47f2-a906-e3cb7a614a9f"],
     "\[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->
           "6d3096c6-d571-4847-aa07-6416a36d348c"]
         }],ExpressionUUID->"ec82a70d-fec7-4e0a-b48a-3df34c1fc76f"],
         StripOnInput->False],{
        "\"Oracles\"" :> 
         Documentation`HelpLookup[
          "paclet:WolframInstitute/Puzzles/guide/Oracles"]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"MoreAbout"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "53171a19-2fe8-4ac9-9370-6eb23e215d59"],
     "\[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->
           "f949da39-a482-4e2d-b948-74f6a9c83744"]
         }],ExpressionUUID->"1d31e03b-ee35-4ffd-9871-5ac8d4e54786"],
         StripOnInput->False],{
        "\"WolframInstitute/Puzzles/ref/PuzzleOracle\"" :> None, 
         "\"Copy Wolfram Documentation Center URL\"" :> 
         CopyToClipboard["WolframInstitute/Puzzles/ref/PuzzleOracle"], 
         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/PuzzleOracle.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/PuzzleOracle" <> ".html"], 
              None}]}]},
        Appearance->None,
        MenuAppearance->Automatic,
        MenuStyle->"URLMenu"],
       MouseAppearanceTag["LinkHand"]]],
      LineSpacing->{1.4, 0},ExpressionUUID->
      "889352ee-5fb4-4ab4-b498-7d9a22e3e40b"]
    }], "AnchorBar",
     CacheGraphics->False,ExpressionUUID->
     "2b769aed-1690-4fff-829a-197588f52106"]}
  }]], "AnchorBarGrid",
 CellID->1,ExpressionUUID->"b064ef27-0edc-4b42-90af-e4deea505a70"],

Cell["WolframInstitute`Puzzles`", "ContextNameCell",ExpressionUUID->"227beece-1fb0-435b-ac94-3ce546a76a68"],

Cell[CellGroupData[{

Cell[BoxData[GridBox[{
   {Cell[TextData[{
     Cell[
     "PuzzleOracle", "ObjectName",ExpressionUUID->
      "496c47f0-24c0-4781-a44f-a024ae10c200"],
     Cell[BoxData[
      TemplateBox[{8},
       "Spacer1"]],ExpressionUUID->"c1fc9e5a-5dd3-475b-b88a-f99079d5ea61"],
     Cell[BoxData[
     ""], "ObjectNameTranslation",ExpressionUUID->
      "2e9df65b-fc9b-41de-97fb-082bc390e9ba"]
    }],ExpressionUUID->"b43da8c6-0011-455a-ba55-7e7d8b54aeae"], 
    "\[SpanFromLeft]"}
  }]], "ObjectNameGrid",ExpressionUUID->"c0456968-153f-4873-b7d1-\
3715775acab8"],

Cell[BoxData[GridBox[{
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["PuzzleOracle"]], 
         "paclet:WolframInstitute/Puzzles/ref/PuzzleOracle", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       StyleBox["target", "TI"], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "1c9defbe-038e-41e3-be29-52b0c3cdb528"],
     "\[LineSeparator]",
     "gives an oracle that tests a candidate string for equality with ",
     StyleBox["target", "TI"],
     ", or with any member of ",
     StyleBox["target", "TI"],
     " when ",
     StyleBox["target", "TI"],
     " is a list of strings."
    }],ExpressionUUID->"5f2633f2-b56f-438e-bfd6-44dfeb6ad93a"]},
   {"", Cell[TextData[{
     Cell[BoxData[
      RowBox[{
       TemplateBox[{
         Cell[
          TextData["PuzzleOracle"]], 
         "paclet:WolframInstitute/Puzzles/ref/PuzzleOracle", 
         "WolframInstitute/Puzzles Package Symbol"},
        "PackageLink",
        BaseStyle->"InlineFormula"], "[", 
       RowBox[{
        StyleBox["target", "TI"], ",", " ", 
        RowBox[{
         TemplateBox[{
           Cell[
            TextData["Method"]], "paclet:ref/Method"},
          "RefLink",
          BaseStyle->{"InlineFormula"}], " ", "->", " ", 
         StyleBox["method", "TI"]}]}], "]"}]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "e5ce1460-976b-47f2-b952-4475c6edb9b5"],
     "\[LineSeparator]",
     "gives an oracle that tests whether the named digest of a candidate \
equals the hexadecimal digest ",
     StyleBox["target", "TI"],
     "."
    }],ExpressionUUID->"8db42282-da8c-445b-8d1f-09c67c3076cb"]},
   {"", Cell[TextData[{
     "The option ",
     Cell[BoxData["\"\<Iterations\>\""], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "33791aae-ca0a-4cac-b5b4-d8ee4283c66d"],
     " sets how many times the digest is applied, so that a target stated as \
an ",
     Cell[BoxData[
      StyleBox["n", "TI"]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "6e08af55-be30-49d4-98d8-0cfd76e8e555"],
     "-fold hash chain is matched directly."
    }],ExpressionUUID->"a32b0a9d-965f-4703-aaa4-25304e60d78b"]},
   {"", Cell[TextData[{
     "The option ",
     Cell[BoxData["\"\<CandidateEncoding\>\""], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "33ec5350-f260-4104-8889-2fada9a09196"],
     " sets whether a string candidate is hashed as text or read as \
hexadecimal bytes."
    }],ExpressionUUID->"ce5c4bde-bd65-48aa-b9a9-c25ac8fbc935"]}
  }]], "Usage",ExpressionUUID->"504e55dd-6ba4-41dc-9cef-7e8af707b2d3"]
}, 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->"7ab4c1fb-c4b6-41a8-8fe4-1e51fcd57aa4"],
  Cell[BoxData[
   TemplateBox[{1},
    "Spacer1"]],ExpressionUUID->"351ceb1e-a30e-4fe6-a13a-9e2a163f95cd"],
  "Details and Options"
 }], "NotesFrameText",ExpressionUUID->
  "a8397095-e315-4f62-b477-729ab840c98b"]],ExpressionUUID->"f113b25c-581e-\
4e0d-ad7e-7fe5b16915d9"]], "NotesSection",
 ShowGroupOpener->"Thumbnail",
 WholeCellGroupOpener->True,
 CellGroupingRules->{"SectionGrouping", 50},
 CacheGraphics->False,
 CellID->1715948471,ExpressionUUID->"aaf54b59-de8d-439a-b532-8e4929285c12"],

Cell[TextData[{
 "The result is a ",
 Cell[BoxData["PuzzleOracle"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "7d0747ad-3b2d-4c36-af25-41df94bdc416"],
 " object holding its whole target set, so it is a value: it can be named, \
mapped, passed to ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["OracleScan"]], 
    "paclet:WolframInstitute/Puzzles/ref/OracleScan", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "8b2a5f09-63b9-4b05-a038-342840c76fea"],
 ", or sent to a parallel kernel."
}], "Notes",ExpressionUUID->"c8dd69c5-8956-446b-b4bb-2ea6e2bcf576"],

Cell[TextData[{
 StyleBox["oracle", "TI"],
 "[",
 StyleBox["candidate", "TI"],
 "] gives ",
 Cell[BoxData["True"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "627b4f26-db7e-4d14-84c5-c851ea9d2858"],
 " if ",
 StyleBox["candidate", "TI"],
 " hits the target and ",
 Cell[BoxData["False"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "60623a0a-e0ad-4a28-981d-eb45dc393872"],
 " otherwise."
}], "Notes",ExpressionUUID->"f149364d-5e0d-4949-b1ba-c37ad15f6d6d"],

Cell[TextData[{
 StyleBox["oracle", "TI"],
 "[] gives an ",
 Cell[BoxData["Association"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "43a23e00-80ea-411e-bb29-b0ae80eb8ca0"],
 " describing the oracle: its ",
 Cell[BoxData["\<\"Type\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "12a0e85f-d259-4e45-8635-b05226d5d2f2"],
 ", ",
 Cell[BoxData["\<\"Method\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "6166385d-c18d-4465-a238-60d5752ae821"],
 ", ",
 Cell[BoxData["\<\"Iterations\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "3f9f6e72-1d67-4aeb-a926-2b9ae3a0b128"],
 ", ",
 Cell[BoxData["\<\"CandidateEncoding\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "9adc2f26-d30f-40ec-b4d6-5e896a96453d"],
 " and ",
 Cell[BoxData["\<\"TargetCount\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "e3e15f08-6022-4e65-8558-cd91c365b19e"],
 ", without the target set itself."
}], "Notes",ExpressionUUID->"583d400c-36c3-40ed-a700-dcfb3c665eb6"],

Cell[TextData[{
 "A membership oracle takes ",
 Cell[BoxData["String"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "7f001c88-f8e9-4f99-9e17-58116050228e"],
 " candidates and matches by exact equality, so it is case sensitive, as \
Base58 addresses are."
}], "Notes",ExpressionUUID->"11006079-f1fa-4bd8-aa32-f4baa5b246a3"],

Cell[TextData[{
 "A digest oracle takes a ",
 Cell[BoxData["String"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "5911c49b-d90f-4d86-81ba-e995cea1c2a8"],
 " or a ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["ByteArray"]], "paclet:ref/ByteArray"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a74518ce-e565-4f89-b5ef-8fda74b71c43"],
 " candidate."
}], "Notes",ExpressionUUID->"9bb248a3-f2f6-4dba-9e8a-fcae431388da"],

Cell["\<\
Matching is a hash-table lookup, so the cost of an oracle does not grow with \
the number of targets it holds.\
\>", "Notes",ExpressionUUID->"34a44205-12ff-4d71-9d03-027cbc733928"],

Cell[TextData[{
 "Duplicate targets are dropped, and ",
 Cell[BoxData["\<\"TargetCount\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a11b67b2-ceae-49de-81f3-6a4790c60c27"],
 " reports the number that remain."
}], "Notes",ExpressionUUID->"e021f561-9263-48ee-8c61-919250337f4a"],

Cell["\<\
A digest target is read case-insensitively and must be hexadecimal of the \
width the method produces; a target of any other width could never match and \
does not build an oracle.\
\>", "Notes",ExpressionUUID->"1fefa957-fb08-4df0-b7fd-0269cd803e5c"],

Cell["\<\
Out-of-scope input is returned unevaluated: an unknown method, a malformed \
target, or a candidate the oracle cannot read.\
\>", "Notes",ExpressionUUID->"024bdd64-ca55-4209-8e5d-fba2c0fb34e4"],

Cell["\<\
An oracle never derives anything. An address oracle is fed the addresses a \
deriver produced; it does not turn a private key into an address.\
\>", "Notes",ExpressionUUID->"0e5883ae-954f-466e-af6f-a2141910a67d"],

Cell[BoxData[GridBox[{
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "9d1fb931-278f-4f67-be64-9c456757ac96"], Cell["", "TableText",
     FontWeight->Bold,ExpressionUUID->"6d68ca0b-859b-4db6-bcfe-c93a9682742e"],
     Cell["", "TableText",
     FontWeight->Bold,ExpressionUUID->"ec5a4903-e1f8-4676-b977-1a4708ded6cb"],
     Cell["", "TableText",
     FontWeight->Bold,ExpressionUUID->"f51e40da-c528-47b0-be28-94c362329752"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "2f1d8d3c-72b0-41df-9f43-6810c7e54e5b"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["Method"]], "paclet:ref/Method"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "703b9571-d6e2-431c-a9ec-8f8fbeaae11c"]], "TableText",ExpressionUUID->
     "52d5cb28-b8fe-443d-bf9f-bc6d06a3ccdc"], Cell[TextData[Cell[BoxData[
     TemplateBox[{
       Cell[
        TextData["None"]], "paclet:ref/None"},
      "RefLink",
      BaseStyle->"InlineFormula"]], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "d0cb779d-497f-429d-8b82-d3e871a8abc5"]], "TableText",ExpressionUUID->
     "3daebfed-fb98-4736-8fd9-8ab954d0f3c2"], Cell[TextData[{
     Cell[BoxData["None"], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "bdb35962-d693-46ee-b318-956ea81373ca"],
     " matches candidates against the targets directly; a member of ",
     Cell[BoxData[
      TemplateBox[{
        Cell[
         TextData["$OracleHashMethods"]], 
        "paclet:WolframInstitute/Puzzles/ref/$OracleHashMethods", 
        "WolframInstitute/Puzzles Package Symbol"},
       "PackageLink",
       BaseStyle->"InlineFormula"]], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "6fe31e05-e589-45ed-8b90-b4a0c3497a8b"],
     " matches the named digest of the candidate instead"
    }], "TableText",ExpressionUUID->"056b773a-b61d-4d33-80e3-4ec2ddc7ace0"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "23424525-7c57-45b2-b33d-bea7eb9c7345"], Cell[TextData[Cell[
    BoxData["\"\<Iterations\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "7c04993e-3551-467e-b85c-08c80f5d9d72"]], "TableText",ExpressionUUID->
     "9dda5df9-ccdb-4321-85e5-372262a2cfc4"], Cell[TextData[Cell[BoxData[
    "1"], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "289bfb0a-5de9-4a0e-8dcc-e59c9f2c47c4"]], "TableText",ExpressionUUID->
     "23168c8d-37fc-49c6-af61-1c1283385cd1"], Cell[TextData[{
     "how many times the digest is applied, so ",
     Cell[BoxData["2"], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "8448b6fe-93de-422b-b9da-a97b8abdbdbe"],
     " with ",
     Cell[BoxData["\"\<SHA256\>\""], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "9f48063a-f6d4-4730-b6db-03484bbf20df"],
     " matches a double SHA-256 target"
    }], "TableText",ExpressionUUID->"6503773c-ea37-4ece-bc62-1a9d79001a80"]},
   {Cell["      ", "TableRowIcon",ExpressionUUID->
     "c869cb2c-ee87-4e29-89c8-4920f975f534"], Cell[TextData[Cell[
    BoxData["\"\<CandidateEncoding\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "f093b8be-baa4-4cee-ae64-c1bf3934a988"]], "TableText",ExpressionUUID->
     "45c1fe4a-0645-4236-bac9-1053eb5db327"], Cell[TextData[Cell[
    BoxData["\"\<String\>\""], "InlineFormula",
     FontFamily->"Source Sans Pro",
     FontSize->0.9 Inherited,ExpressionUUID->
     "37ec50ff-dabd-41a6-abfa-427efe05949c"]], "TableText",ExpressionUUID->
     "a48c67c3-8a70-43a9-bb0f-16f66029ab3b"], Cell[TextData[{
     Cell[BoxData["\"\<String\>\""], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "53fa6a7e-0bec-43e1-a78d-e115e3468f1e"],
     " hashes a string candidate as its UTF-8 bytes; ",
     Cell[BoxData["\"\<Hex\>\""], "InlineFormula",
      FontFamily->"Source Sans Pro",
      FontSize->0.9 Inherited,ExpressionUUID->
      "4c6bd3f6-fa96-4804-9b51-1608c8590182"],
     " reads it as hexadecimal bytes"
    }], "TableText",ExpressionUUID->"306f4ec4-5297-4727-b676-d6826dffa3dc"]}
  }]], "3ColumnTableMod",
 GridBoxOptions->{
 GridBoxBackground->{
  "Columns" -> {{None}}, "Rows" -> {None, None, None, {None}}},
 GridBoxDividers->{
  "Rows" -> {{
     True, True, True, True, 
      True}}}},ExpressionUUID->"74dd6b75-c4ba-49c7-8bb4-d929b9eb1f44"]
}, Closed]],

Cell["", "PageDelimiter",ExpressionUUID->"7a011f55-d29e-4c33-92d6-fb3ae2aae5f1"],

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->"a06fb0cc-9766-45aa-8f10-c48b74cdde81"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"66c5dc2e-49a8-4bb9-974b-4b5027a23bd3"],
 "Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(22)", "ExampleCount",ExpressionUUID->
  "50243b33-9e49-4a7b-b6d3-ccd809c59a2f"]
}], "PrimaryExamplesSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1388056534,ExpressionUUID->"5c067342-0ccf-4e7c-bb6a-2b2a570c4bce"],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<WolframInstitute`Puzzles`\>\"", "]"}]], "Input", \
"ExampleInitialization",
 CellLabel->"In[1]:=",
 CellID->1969679695,ExpressionUUID->"6c440e7c-b222-4f30-858e-97b3d7f70d04"],

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->
  "61ccb4ee-f7af-47f9-9dbe-3e0f2d65a784"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"6d159101-f8de-4fc1-b5cc-9e2a74097432"],
 "Basic Examples",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(4)", "ExampleCount",ExpressionUUID->
  "90fde997-59ba-4093-b8e9-db9289bcaed2"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->951309577,ExpressionUUID->"202ab242-5720-4c09-a57f-932958683f73"],

Cell["\<\
An oracle over one address answers whether a candidate string is that address:\
\>", "ExampleText",
 CellTags->
  "TextAnnotation",ExpressionUUID->"f6f1d3c0-b203-484b-83b8-7f9d93ba05a3"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
  "PuzzleOracle", "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}], 
  "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"dbfdd664-8175-4c96-a683-a56bd5fade88"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"8f37e4ba-c500-4f9b-91b0-b6920a062021"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "81e76a80-199d-43de-9bcd-d3bcc0e89a04"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"9f7f3cb4-e3ea-4294-\
9b71-033288085717"],

Cell["A candidate that is not the target is a miss:", "ExampleText",ExpressionUUID->"8a579805-cbb7-43e2-a4e0-bc079a7ebf6a"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
  "PuzzleOracle", "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}], 
  "[", "\"\<16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"cc87f060-d724-405a-8fb1-36521c3beed9"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"d283d8ed-9770-4123-99d6-5c7ad9a289e0"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "0335c867-7fed-4e3c-8230-347ef8438eb0"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"77451c45-9c61-4c09-\
9b49-0c1691d53d4b"],

Cell[TextData[{
 "With a ",
 Cell[BoxData["Method"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "b621fb16-5d09-43c9-adad-61893afa7730"],
 ", the oracle matches the digest of the candidate instead, so it recognizes \
the preimage of a SHA-256 target:"
}], "ExampleText",ExpressionUUID->"4a87d764-ebd2-408d-aa68-54836e0e5e54"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
    " ", 
    RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], 
  "[", "\"\<abc\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"afc5418c-4acf-4946-8222-9fc1046bbb2c"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"8167e443-5e8a-4abf-a560-71644f88d4b7"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "ec5cb408-d14f-40e5-b274-8c71a465cb2b"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"965a443e-823e-4477-\
9737-98f3e94e7152"],

Cell[TextData[{
 "Because the oracle is an ordinary predicate, a candidate list can be \
filtered with ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["Select"]], "paclet:ref/Select"},
   "RefLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c626d10e-264e-4bce-9ce2-46285c1d3409"],
 ":"
}], "ExampleText",ExpressionUUID->"363f36a1-403a-4675-b37e-3bb642235719"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Select", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"\"\<aa\>\"", ",", " ", "\"\<ab\>\"", ",", " ", "\"\<abc\>\"", ",",
      " ", "\"\<abcd\>\""}], "}"}], ",", " ", 
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
     " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}]}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"2bd9f597-b7a2-4e92-8414-90e9e7d402f0"],

Cell[BoxData[
 RowBox[{"{", "\<\"abc\"\>", "}"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"355ba187-0e23-41e6-b6cc-05e98fcd2eb8"]
}, 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->
  "0e9f097c-1a1d-4381-9e49-eff937963c2d"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"330e4176-f95a-40a5-8b8a-d7cb15479e2e"],
 "Scope",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(7)", "ExampleCount",ExpressionUUID->
  "886afbee-b7f2-4b89-b982-29fd8d381530"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1293636265,ExpressionUUID->"298d80ce-856f-47f5-aee5-c6e26bf30643"],

Cell["\<\
An oracle over a set of addresses costs the same as an oracle over one:\
\>", "ExampleText",ExpressionUUID->"40a43739-69e6-41dc-a44d-e691e1daadcd"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"{", "\n", "\t", 
    RowBox[{"\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", ",", "\n", 
     "\t", "\"\<16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM\>\"", ",", "\n", 
     "\t", "\"\<12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX\>\""}], "\n", "}"}], "]"}],
   "[", "\"\<12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"0e24c3cb-ff6f-4993-ba4c-236eb1c1f6d1"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"7ddf750e-617a-4887-87f6-b924d7f9feb3"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "7a5d2fe8-c82c-4550-8ae2-02cdf9c61e38"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"f15322b1-205b-4d53-\
b9dc-8d02b725a1c2"],

Cell["\<\
Applying the oracle to no arguments describes it, without printing its target \
set:\
\>", "ExampleText",ExpressionUUID->"9184f24d-c892-4e01-b3b8-af9c38e33733"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"{", 
    RowBox[{"\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", ",", 
     " ", "\"\<16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM\>\""}], "}"}], "]"}], "[", 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"4b0bcfaf-0e40-41f1-bc83-378130c5b4a8"],

Cell[BoxData[
 RowBox[{"\[LeftAssociation]", 
  RowBox[{
   RowBox[{"\<\"Type\"\>", "\[Rule]", "\<\"Membership\"\>"}], ",", 
   RowBox[{"\<\"Method\"\>", "\[Rule]", "None"}], ",", 
   RowBox[{"\<\"Iterations\"\>", "\[Rule]", "0"}], ",", 
   RowBox[{"\<\"CandidateEncoding\"\>", "\[Rule]", "\<\"String\"\>"}], ",", 
   RowBox[{"\<\"TargetCount\"\>", "\[Rule]", "2"}]}], 
  "\[RightAssociation]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"0afd9a88-ad3e-43c7-af20-dd937697fb95"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "8da86e34-06cd-4158-9d82-f4edcf63df64"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"c148e9ae-b1c5-4767-\
be43-06b30020e40e"],

Cell["\<\
Base58 addresses are case sensitive, so a case variant of the target is a \
miss rather than a hit:\
\>", "ExampleText",ExpressionUUID->"7ee7097c-ac12-4104-a1d0-b869eb4ffa40"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
  "PuzzleOracle", "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}], 
  "[", "\"\<1a1zp1ep5qgefi2dmptftl5slmv7divfna\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"8df50a04-c0fd-4bc9-bcec-fce7ccc155d4"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"8227188f-c886-4a27-9b15-14b27ea1e6e7"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "1f7f0f47-2bbf-4558-a912-e1095a912d3a"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"088ea693-cd9a-449d-\
9188-ab5c697d6d04"],

Cell["A digest oracle also accepts raw bytes as the candidate:", "ExampleText",ExpressionUUID->"e07d39a4-65a1-420b-9b60-5b89d4c0f02c"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\"\<010966776006953d5567439e5e39f86a0d273bee\>\"", ",", " ", 
    RowBox[{"Method", " ", "->", " ", "\"\<RIPEMD160SHA256\>\""}]}], "]"}], "[",
   "\n", "\t", 
  RowBox[{"BaseDecode", "[", "\n", "\t\t", 
   RowBox[{
    RowBox[{"\"\<\
0450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23\>\"", " ", "<>",
      "\n", "\t\t", \
"\"\<522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582b\>\"", 
     " ", "<>", "\n", "\t\t", "\"\<a6\>\""}], ",", "\n", 
    "\t\t", "\"\<Base16\>\""}], "\n", "\t", "]"}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"c0eeb3f9-8748-4aeb-8d46-da24394e30f8"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"152f412a-cca6-4734-a3e2-48fd0fe55143"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "5a636a65-6db8-4a13-b2e5-78af3f0b5094"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"c0201966-4367-4fa9-\
ba99-9d40f642d9c1"],

Cell["\<\
A digest target of the wrong width for its method could never match, so it \
does not build an oracle and the call is returned unevaluated:\
\>", "ExampleText",ExpressionUUID->"22535015-2308-443c-a0a7-96402356d1aa"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"PuzzleOracle", "[", 
  RowBox[{"\"\<deadbeef\>\"", ",", " ", 
   RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"8df2b518-63c1-4d5f-bf5c-d9fdb87c7da8"],

Cell[BoxData[
 RowBox[{"PuzzleOracle", "[", 
  RowBox[{"\<\"deadbeef\"\>", ",", 
   RowBox[{"Method", "\[Rule]", "\<\"SHA256\"\>"}]}], "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"e0845c7d-f87e-4842-a292-413d0b64cdfe"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "b3cf863d-5eb3-4ee7-b2ea-1aa83e5fe79b"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"45b6b1a1-6ed8-4d82-\
a6ae-9cd2dd94a3ed"],

Cell["So does a method the kernel does not provide:", "ExampleText",ExpressionUUID->"63553414-e583-4e55-9b4b-9bb05354a4d6"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"PuzzleOracle", "[", 
  RowBox[{"\"\<deadbeef\>\"", ",", " ", 
   RowBox[{"Method", " ", "->", " ", "\"\<SHA255\>\""}]}], "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"62869ff0-2ef2-4401-9839-56f112a22a67"],

Cell[BoxData[
 RowBox[{"PuzzleOracle", "[", 
  RowBox[{"\<\"deadbeef\"\>", ",", 
   RowBox[{"Method", "\[Rule]", "\<\"SHA255\"\>"}]}], "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"8e25207e-70b8-499d-8974-6bfffc7623ee"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "2c0923a9-76f6-41e4-a738-312d0da23706"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"b74f0e71-a2c4-4619-\
8faa-cf3546c20dd5"],

Cell["\<\
A membership oracle reads text, so raw bytes are out of scope and the \
application is returned unevaluated:\
\>", "ExampleText",ExpressionUUID->"a78fd691-a270-445c-8318-37eff6017349"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
  "PuzzleOracle", "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}], "[", 
  RowBox[{"ByteArray", "[", 
   RowBox[{"{", 
    RowBox[{"1", ",", " ", "2", ",", " ", "3"}], "}"}], "]"}], "]"}]], "Input",\

 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"d1f26302-97ad-4392-8cbe-0cd0cf48c25f"],

Cell[BoxData[
 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]"}], "]"}],
   "[", 
  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[{1, 2, 3}],
   Editable->False,
   SelectWithContents->True,
   Selectable->False], "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"348bc1b4-7421-43fc-9345-99aa46347846"]
}, 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->
  "2937c22e-b3c1-40b0-ad2e-c2c68e6f2060"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"be9db46f-f277-46bc-8c73-a58b73869026"],
 "Options",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(4)", "ExampleCount",ExpressionUUID->
  "d51a9da2-cd87-4208-9f6c-2b5fd342c055"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2061341341,ExpressionUUID->"33bbec46-48c7-41c9-a01c-733acc26c580"],

Cell[TextData[{
 Cell[BoxData["Method"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "c569cbdb-418b-42f1-9c51-43c9ee6c24d5"],
 " names the digest the oracle matches, here the MD5 digest of the \
candidate:"
}], "ExampleText",ExpressionUUID->"553e9560-b6dc-4a75-9271-1b65418c3b3d"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\"\<900150983cd24fb0d6963f7d28e17f72\>\"", ",", " ", 
    RowBox[{"Method", " ", "->", " ", "\"\<MD5\>\""}]}], "]"}], 
  "[", "\"\<abc\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"6feb8779-b751-49dc-9cb1-ffa437c797b3"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"465463fa-452b-4409-b30a-977af2446897"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "b03fc1bf-8696-4e9d-8318-245b4b30f601"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"1fb09cdd-0594-4427-\
9446-8f45e0380f3c"],

Cell[TextData[{
 Cell[BoxData["\<\"Iterations\"\>"], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "7a2b4e2e-c7a6-40ec-9fe5-04885c7de8e7"],
 " matches a target stated as an ",
 Cell[BoxData[
  StyleBox["n", "TI"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "2f1491da-a416-456f-91fd-a90b45340e92"],
 "-fold chain, here the double SHA-256 of the candidate:"
}], "ExampleText",ExpressionUUID->"01141443-a639-46f8-9cff-53dc60edd9d1"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\"\<\
4f8b42c22dd3729b519ba6f68d2da7cc5b2d606d05daed5ad5128cc03e6c6358\>\"", ",", 
    " ", 
    RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}], ",", " ", 
    RowBox[{"\"\<Iterations\>\"", " ", "->", " ", "2"}]}], "]"}], 
  "[", "\"\<abc\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"a6e09615-a939-44cc-947f-dd691dcc7b64"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"94d2d12e-621b-439b-9770-5ebe517aba19"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "1c4da368-978b-47a8-af56-084a2c4d1c34"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"0e2a158c-0a7a-47f0-\
bd74-827ed1ed097b"],

Cell[TextData[{
 Cell[BoxData[
  RowBox[{"\<\"CandidateEncoding\"\>", " ", "->", " ", "\<\"Hex\"\>"}]], 
  "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "756244dc-84eb-40db-a42d-ec996108948a"],
 " reads a string candidate as hexadecimal bytes rather than as text, which \
is what a public key written in hexadecimal needs:"
}], "ExampleText",ExpressionUUID->"263982a1-22e2-4067-aa97-cea1cfc7123d"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\"\<010966776006953d5567439e5e39f86a0d273bee\>\"", ",", " ", 
    RowBox[{"Method", " ", "->", " ", "\"\<RIPEMD160SHA256\>\""}], ",", " ", 
    RowBox[{"\"\<CandidateEncoding\>\"", " ", "->", " ", "\"\<Hex\>\""}]}], 
   "]"}], "[", "\n", "\t", 
  RowBox[{"\"\<\
0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23\>\"", " ", "<>",
    "\n", "\t", \
"\"\<522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582B\>\"", 
   " ", "<>", "\n", "\t", "\"\<A6\>\""}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"d6f9ae56-2ffe-4318-8efc-0ed8a019eefb"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"3e328181-40da-4bb9-8979-94d715d3883e"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "6e4a67e2-f7e1-42a5-8420-1dbb6682e779"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"69742961-7e0b-495c-\
9146-92ba0f9cda1c"],

Cell["\<\
The description records the options the oracle was built with:\
\>", "ExampleText",ExpressionUUID->"2cb96214-ecd1-46c2-9bb6-2d065e419620"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\"\<010966776006953d5567439e5e39f86a0d273bee\>\"", ",", " ", 
    RowBox[{"Method", " ", "->", " ", "\"\<RIPEMD160SHA256\>\""}], ",", " ", 
    RowBox[{"\"\<CandidateEncoding\>\"", " ", "->", " ", "\"\<Hex\>\""}]}], 
   "]"}], "[", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"d20be41f-af53-45f5-ac2c-d742bb2f1af3"],

Cell[BoxData[
 RowBox[{"\[LeftAssociation]", 
  RowBox[{
   RowBox[{"\<\"Type\"\>", "\[Rule]", "\<\"Digest\"\>"}], ",", 
   RowBox[{"\<\"Method\"\>", "\[Rule]", "\<\"RIPEMD160SHA256\"\>"}], ",", 
   RowBox[{"\<\"Iterations\"\>", "\[Rule]", "1"}], ",", 
   RowBox[{"\<\"CandidateEncoding\"\>", "\[Rule]", "\<\"Hex\"\>"}], ",", 
   RowBox[{"\<\"TargetCount\"\>", "\[Rule]", "1"}]}], 
  "\[RightAssociation]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"50b66bdd-c691-42df-baba-f586f6a74f8e"]
}, 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->
  "0453cac0-4c3a-4b90-ad9b-87bf09fa751d"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"09b018dc-65c5-4d02-847e-1382a809b094"],
 "Applications",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "f9777963-1325-4bec-8b28-29343aa3882b"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->258228157,ExpressionUUID->"d6a32c73-81a4-4c43-9dfc-ae36b1acfbff"],

Cell["\<\
An oracle over the recipient address of the Bitcoin genesis block coinbase, \
checking a candidate address produced elsewhere:\
\>", "ExampleText",ExpressionUUID->"2d96d995-7b80-49d9-8753-4e19738b4f9f"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
  "PuzzleOracle", "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}], 
  "[", "\"\<1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"2ae5c6ae-1074-4e04-8124-da65331214ad"],

Cell[BoxData["False"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"5256a041-4c38-4a4e-8ece-53c6e68b95a1"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "21457c52-7e5c-4c21-b6a6-a2798cb5face"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"cb4f521d-737e-4e42-\
bd88-90c4eabb4491"],

Cell["\<\
A HASH160 oracle checks a public key against an address payload without ever \
encoding the address, which is the cheapest form of address matching:\
\>", "ExampleText",ExpressionUUID->"3d32afd4-0c8e-492d-9107-8338f29cf497"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\"\<010966776006953d5567439e5e39f86a0d273bee\>\"", ",", " ", 
    RowBox[{"Method", " ", "->", " ", "\"\<RIPEMD160SHA256\>\""}], ",", " ", 
    RowBox[{"\"\<CandidateEncoding\>\"", " ", "->", " ", "\"\<Hex\>\""}]}], 
   "]"}], "[", "\n", "\t", 
  RowBox[{"\"\<\
0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23\>\"", " ", "<>",
    "\n", "\t", \
"\"\<522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582B\>\"", 
   " ", "<>", "\n", "\t", "\"\<A6\>\""}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"b512f218-542b-43c2-a1b4-7a258f907d9c"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"13c8197e-b07a-4bb6-9e2d-f3868d12481e"]
}, 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->
  "5c8053c2-8800-478b-8a77-31d923fdd838"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"a21d9a1b-edc4-4a5c-9c9c-1067d2af5278"],
 "Properties & Relations",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(3)", "ExampleCount",ExpressionUUID->
  "185a4e87-4e44-44a7-a1ad-e4bab8eb8d1e"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->2123667759,ExpressionUUID->"7b9e1bf5-f662-4110-8f58-05686597ef9f"],

Cell[TextData[{
 "A digest oracle answers exactly the question of whether ",
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["HashChain"]], "paclet:WolframInstitute/Puzzles/ref/HashChain", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "6bd81ec9-2767-4edf-a0ef-8e88ad9909f6"],
 " of the candidate equals the target:"
}], "ExampleText",ExpressionUUID->"2d3f3cd0-900a-419c-9051-edbf002007f9"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"PuzzleOracle", "[", 
    RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
     " ", 
     RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}], 
   "[", "\"\<abc\>\"", "]"}], " ", "===", "\n", "\t", 
  RowBox[{"(", 
   RowBox[{
    RowBox[{"HashChain", "[", 
     RowBox[{"\"\<abc\>\"", ",", " ", "\"\<SHA256\>\""}], "]"}], " ", "===", 
    " ", "\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\""}], 
   ")"}]}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"d3368dad-122e-48c4-a6f0-0932d68e354d"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"d8c064a0-42f0-4bd4-9edc-34544527d7fb"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "0f3ac558-1078-4a04-ac72-d6d6fdd93c7d"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"b06c5ed9-b489-4141-\
a85b-8bf997d4a503"],

Cell[TextData[{
 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->
  "6ba15cc1-8d3d-4ca8-bcab-69661e56b75e"],
 " recognizes the objects the constructor builds:"
}], "ExampleText",ExpressionUUID->"56bc99f8-92d0-47b0-bf7d-788e638b9f73"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"PuzzleOracleQ", "[", 
  RowBox[{
  "PuzzleOracle", "[", "\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", "]"}], 
  "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"7773f524-1b62-427e-8ba1-22a3506f81ca"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"cdc04fc7-53f8-4b6d-83b2-5921fee122c4"]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "6d0873da-3f4e-4872-9e48-fb1d3c05b5c9"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"ccb12135-8b58-4c94-\
8789-4f5e8f602780"],

Cell[TextData[{
 Cell[BoxData[
  TemplateBox[{
    Cell[
     TextData["OracleScan"]], 
    "paclet:WolframInstitute/Puzzles/ref/OracleScan", 
    "WolframInstitute/Puzzles Package Symbol"},
   "PackageLink",
   BaseStyle->"InlineFormula"]], "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "a549ed75-db8d-43a5-aa32-c73c908e28a6"],
 " gives the same answers as mapping the oracle, by a different route:"
}], "ExampleText",ExpressionUUID->"99773a67-63c3-4492-9c16-ef0f502a780a"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"With", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"oracle", " ", "=", " ", 
     RowBox[{"PuzzleOracle", "[", 
      RowBox[{"\"\<\
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\>\"", ",", 
       " ", 
       RowBox[{"Method", " ", "->", " ", "\"\<SHA256\>\""}]}], "]"}]}], "}"}],
    ",", "\n", "\t", 
   RowBox[{
    RowBox[{"OracleScan", "[", 
     RowBox[{"oracle", ",", " ", 
      RowBox[{"{", 
       RowBox[{"\"\<aa\>\"", ",", " ", "\"\<abc\>\"", ",", 
        " ", "\"\<zz\>\""}], "}"}], ",", " ", "\"\<Booleans\>\""}], "]"}], 
    " ", "===", " ", 
    RowBox[{"Map", "[", 
     RowBox[{"oracle", ",", " ", 
      RowBox[{"{", 
       RowBox[{"\"\<aa\>\"", ",", " ", "\"\<abc\>\"", ",", 
        " ", "\"\<zz\>\""}], "}"}]}], "]"}]}]}], "\n", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"3d4f5554-bab9-4da8-aedd-845e8280785e"],

Cell[BoxData["True"], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"13294c67-d980-4fe4-a6b1-e713619dc440"]
}, 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->
  "ce327cee-3488-4062-8785-7103282d98fc"],
 Cell[BoxData[
  TemplateBox[{1},
   "Spacer1"]],ExpressionUUID->"75bf4104-0410-4f9f-9cd3-4187412b9fe2"],
 "Possible Issues",
 "\[NonBreakingSpace]\[NonBreakingSpace]",
 Cell["(2)", "ExampleCount",ExpressionUUID->
  "ff17ba36-8b25-4cb1-93cc-af72f12d3c4a"]
}], "ExampleSection", "ExampleSection",
 WholeCellGroupOpener->True,
 CacheGraphics->False,
 CellID->1305812373,ExpressionUUID->"41a0c2ad-66f7-4929-bb83-9ef840238548"],

Cell[TextData[{
 "An oracle carries its targets inside itself, so displaying an oracle over a \
large target set prints the whole set. Use ",
 StyleBox["oracle", "TI"],
 "[] for a compact description:"
}], "ExampleText",ExpressionUUID->"bfa72610-5237-4a0d-ae4a-326b339dcbb5"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"PuzzleOracle", "[", 
  RowBox[{"{", 
   RowBox[{"\"\<1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\>\"", ",", 
    " ", "\"\<16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM\>\""}], "}"}], "]"}]], "Input",\

 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"59820307-6bdc-4a2e-bd6e-f90df9dc5b81"],

Cell[BoxData[
 RowBox[{"PuzzleOracle", "[", 
  RowBox[{"\[LeftAssociation]", 
   RowBox[{
    RowBox[{"\<\"Type\"\>", "\[Rule]", "\<\"Membership\"\>"}], ",", 
    RowBox[{"\<\"Method\"\>", "\[Rule]", "None"}], ",", 
    RowBox[{"\<\"Iterations\"\>", "\[Rule]", "0"}], ",", 
    RowBox[{"\<\"CandidateEncoding\"\>", "\[Rule]", "\<\"String\"\>"}], ",", 
    RowBox[{"\<\"TargetCount\"\>", "\[Rule]", "2"}], ",", 
    RowBox[{"\<\"Targets\"\>", "\[Rule]", 
     RowBox[{"\[LeftAssociation]", 
      RowBox[{
       RowBox[{"\<\"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\"\>", "\[Rule]", 
        "True"}], ",", 
       RowBox[{"\<\"16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM\"\>", "\[Rule]", 
        "True"}]}], "\[RightAssociation]"}]}]}], "\[RightAssociation]"}], 
  "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"d90920f4-b148-43fb-ac5c-a88783face0b"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 InterpretationBox[Cell[
  "\t", "ExampleDelimiter",ExpressionUUID->
   "25fba82f-ea18-4621-b806-2699b77922a7"],
  $Line = 0; Null]], "ExampleDelimiter",ExpressionUUID->"6e577f40-1b1d-4c24-\
9afc-06d5be75d8db"],

Cell[TextData[{
 "Under ",
 Cell[BoxData[
  RowBox[{"\<\"CandidateEncoding\"\>", " ", "->", " ", "\<\"Hex\"\>"}]], 
  "InlineFormula",
  FontFamily->"Source Sans Pro",
  FontSize->0.9 Inherited,ExpressionUUID->
  "f152d4f7-349c-4b9b-ab5a-157a6ee274a4"],
 " a candidate that is not hexadecimal is out of scope, and the application \
is returned unevaluated rather than reported as a miss:"
}], "ExampleText",ExpressionUUID->"16216a59-493e-4617-8074-a73e2c594313"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\"\<010966776006953d5567439e5e39f86a0d273bee\>\"", ",", " ", 
    RowBox[{"Method", " ", "->", " ", "\"\<RIPEMD160SHA256\>\""}], ",", " ", 
    RowBox[{"\"\<CandidateEncoding\>\"", " ", "->", " ", "\"\<Hex\>\""}]}], 
   "]"}], "[", "\"\<not hex\>\"", "]"}]], "Input",
 CellProlog:>Needs["WolframInstitute`Puzzles`"],
 CellLabel->"In[1]:=",ExpressionUUID->"78990c14-8733-4c10-8356-19aab1e1fad6"],

Cell[BoxData[
 RowBox[{
  RowBox[{"PuzzleOracle", "[", 
   RowBox[{"\[LeftAssociation]", 
    RowBox[{
     RowBox[{"\<\"Type\"\>", "\[Rule]", "\<\"Digest\"\>"}], ",", 
     RowBox[{"\<\"Method\"\>", "\[Rule]", "\<\"RIPEMD160SHA256\"\>"}], ",", 
     RowBox[{"\<\"Iterations\"\>", "\[Rule]", "1"}], ",", 
     RowBox[{"\<\"CandidateEncoding\"\>", "\[Rule]", "\<\"Hex\"\>"}], ",", 
     RowBox[{"\<\"TargetCount\"\>", "\[Rule]", "1"}], ",", 
     RowBox[{"\<\"Targets\"\>", "\[Rule]", 
      RowBox[{"\[LeftAssociation]", 
       RowBox[{"\<\"010966776006953d5567439e5e39f86a0d273bee\"\>", "\[Rule]", 
        "True"}], "\[RightAssociation]"}]}]}], "\[RightAssociation]"}], "]"}],
   "[", "\<\"not hex\"\>", "]"}]], "Output",
 CellLabel->"Out[1]= ",ExpressionUUID->"7aeda8c1-8529-4c11-b9fa-de8be4afe155"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedFunction.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"See", " ", "Also"}], "SeeAlsoSection"]},
      {Cell[TextData[{
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["PuzzleOracleQ"]], 
           "paclet:WolframInstitute/Puzzles/ref/PuzzleOracleQ", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "4669da56-bf3a-477b-944d-df85b028948c"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["OracleScan"]], 
           "paclet:WolframInstitute/Puzzles/ref/OracleScan", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "d93dac85-a49a-4dc2-9c7b-1087aba78614"],
        "\[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->
         "f5364257-3d18-4a10-8462-430aeb83a886"],
        "\[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->
         "a8fb4779-d724-4095-989a-3a557cb69227"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["$OracleHashMethods"]], 
           "paclet:WolframInstitute/Puzzles/ref/$OracleHashMethods", 
           "WolframInstitute/Puzzles Package Symbol"},
          "PackageLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "bc6c9ded-dc80-4742-88f5-6d3bef433563"],
        "\[NonBreakingSpace]",
        StyleBox[
        "\[MediumSpace]\[FilledVerySmallSquare]\[MediumSpace]", 
         "InlineSeparator"],
        " ",
        Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Select"]], "paclet:ref/Select"},
          "RefLink",
          BaseStyle->"InlineFormula"]], "InlineFormula",
         FontFamily->"Source Sans Pro",ExpressionUUID->
         "70bfd90f-b2eb-4c70-8180-d6262d76baf1"]
       }], "SeeAlso",ExpressionUUID->"17a8aed0-a32f-4418-b4eb-8c3094093a4b"]}
     }]}
  }]], "SeeAlsoSection",ExpressionUUID->"5f2c21d7-8104-45b7-b305-\
966d869eb18b"],

Cell[BoxData[GridBox[{
   {
    DynamicBox[FEPrivate`ImportImage[
      FrontEnd`FileName[{"Documentation", "FooterIcons"}, 
       "RelatedGuide.png"]]], GridBox[{
      {
       StyleBox[
        RowBox[{"Related", " ", "Guides"}], "MoreAboutSection"]},
      {
       RowBox[{"\[FilledVerySmallSquare]", Cell[BoxData[
         TemplateBox[{
           Cell[
            TextData["Oracles"]], 
           "paclet:WolframInstitute/Puzzles/guide/Oracles"},
          "RefLinkPlain",
          BaseStyle->{"MoreAbout"}]], "MoreAbout",ExpressionUUID->
         "d70e9148-9a3c-4f30-b55e-5b429650681c"]}]}
     }]}
  }]], "MoreAboutSection",ExpressionUUID->"408ce75a-5ad3-455b-ab43-\
f001f9aa6777"],

Cell[" ", "FooterCell",ExpressionUUID->"d1586d0b-074d-458b-88e8-27e5fe5685e4"]
},
Saveable->False,
ScreenStyleEnvironment->"Working",
WindowSize->{900, 830},
WindowMargins->{{0, Automatic}, {Automatic, 0}},
WindowTitle->"PuzzleOracle",
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, 54.086642}", 
    "history" -> {"XX", "", "", ""}, "context" -> "WolframInstitute`Puzzles`",
     "keywords" -> {}, "specialkeywords" -> {}, 
    "tutorialcollectionlinks" -> {}, "index" -> True, "label" -> 
    "Wolfram Institute/ Puzzles Symbol", "language" -> "en", "paclet" -> 
    "WolframInstitute/Puzzles", "status" -> "None", "summary" -> 
    "PackageLink[PuzzleOracle,paclet : \
WolframInstitute/Puzzles/ref/PuzzleOracle, WolframInstitute/Puzzles Package \
Symbol][target] gives an oracle that tests a candidate string for equality \
with target, or with any member of target when target is a list of strings. \
PackageLink[PuzzleOracle,paclet : WolframInstitute/Puzzles/ref/PuzzleOracle, \
WolframInstitute/Puzzles Package Symbol][target, Method -> method] gives an \
oracle that tests whether the named digest of a candidate equals the \
hexadecimal digest target. The option Iterations sets how many times the \
digest is applied, so that a target stated as an n-fold hash chain is matched \
directly. The option CandidateEncoding sets whether a string candidate is \
hashed as text or read as hexadecimal bytes.", "synonyms" -> {}, 
    "tabletags" -> {}, "title" -> "PuzzleOracle", "titlemodifier" -> "", 
    "metadescription" -> "", "windowtitle" -> "PuzzleOracle", "type" -> 
    "Symbol", "uri" -> "WolframInstitute/Puzzles/ref/PuzzleOracle", 
    "WorkflowDockedCell" -> ""}, "SearchTextTranslated" -> ""},
CellContext->CellGroup,
FrontEndVersion->"15.0 for Mac OS X ARM (64-bit) (May 19, 2026)",
StyleDefinitions->FrontEnd`FileName[{"Wolfram"}, "Reference.nb"],
ExpressionUUID->"84e5cd17-4729-41f6-8bc5-70b40067ffa9"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "TextAnnotation"->{
  Cell[24764, 639, 196, 4, 70, "ExampleText",ExpressionUUID->"f6f1d3c0-b203-484b-83b8-7f9d93ba05a3",
   CellTags->"TextAnnotation"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"TextAnnotation", 67259, 1819}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[580, 21, 6514, 157, 70, "AnchorBarGrid",ExpressionUUID->"b064ef27-0edc-4b42-90af-e4deea505a70",
 CellID->1],
Cell[7097, 180, 107, 0, 70, "ContextNameCell",ExpressionUUID->"227beece-1fb0-435b-ac94-3ce546a76a68"],
Cell[CellGroupData[{
Cell[7229, 184, 555, 14, 70, "ObjectNameGrid",ExpressionUUID->"c0456968-153f-4873-b7d1-3715775acab8"],
Cell[7787, 200, 2944, 76, 70, "Usage",ExpressionUUID->"504e55dd-6ba4-41dc-9cef-7e8af707b2d3"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10768, 281, 1444, 34, 70, "NotesSection",ExpressionUUID->"aaf54b59-de8d-439a-b532-8e4929285c12",
 CellGroupingRules->{"SectionGrouping", 50},
 CellID->1715948471],
Cell[12215, 317, 766, 20, 70, "Notes",ExpressionUUID->"c8dd69c5-8956-446b-b4bb-2ea6e2bcf576"],
Cell[12984, 339, 558, 17, 70, "Notes",ExpressionUUID->"f149364d-5e0d-4949-b1ba-c37ad15f6d6d"],
Cell[13545, 358, 1256, 33, 70, "Notes",ExpressionUUID->"583d400c-36c3-40ed-a700-dcfb3c665eb6"],
Cell[14804, 393, 373, 8, 70, "Notes",ExpressionUUID->"11006079-f1fa-4bd8-aa32-f4baa5b246a3"],
Cell[15180, 403, 577, 17, 70, "Notes",ExpressionUUID->"9bb248a3-f2f6-4dba-9e8a-fcae431388da"],
Cell[15760, 422, 190, 3, 70, "Notes",ExpressionUUID->"34a44205-12ff-4d71-9d03-027cbc733928"],
Cell[15953, 427, 333, 7, 70, "Notes",ExpressionUUID->"e021f561-9263-48ee-8c61-919250337f4a"],
Cell[16289, 436, 260, 4, 70, "Notes",ExpressionUUID->"1fefa957-fb08-4df0-b7fd-0269cd803e5c"],
Cell[16552, 442, 203, 3, 70, "Notes",ExpressionUUID->"024bdd64-ca55-4209-8e5d-fba2c0fb34e4"],
Cell[16758, 447, 222, 3, 70, "Notes",ExpressionUUID->"0e5883ae-954f-466e-af6f-a2141910a67d"],
Cell[16983, 452, 4777, 100, 70, "3ColumnTableMod",ExpressionUUID->"74dd6b75-c4ba-49c7-8bb4-d929b9eb1f44"]
}, Closed]],
Cell[21775, 555, 80, 0, 70, "PageDelimiter",ExpressionUUID->"7a011f55-d29e-4c33-92d6-fb3ae2aae5f1"],
Cell[CellGroupData[{
Cell[21880, 559, 1402, 37, 70, "PrimaryExamplesSection",ExpressionUUID->"5c067342-0ccf-4e7c-bb6a-2b2a570c4bce",
 CellID->1388056534],
Cell[23285, 598, 216, 4, 70, "Input",ExpressionUUID->"6c440e7c-b222-4f30-858e-97b3d7f70d04",
 CellID->1969679695],
Cell[CellGroupData[{
Cell[23526, 606, 1235, 31, 70, "ExampleSection",ExpressionUUID->"202ab242-5720-4c09-a57f-932958683f73",
 CellID->951309577],
Cell[24764, 639, 196, 4, 70, "ExampleText",ExpressionUUID->"f6f1d3c0-b203-484b-83b8-7f9d93ba05a3",
 CellTags->"TextAnnotation"],
Cell[CellGroupData[{
Cell[24985, 647, 308, 6, 70, "Input",ExpressionUUID->"dbfdd664-8175-4c96-a683-a56bd5fade88"],
Cell[25296, 655, 110, 1, 70, "Output",ExpressionUUID->"8f37e4ba-c500-4f9b-91b0-b6920a062021"]
}, Open  ]],
Cell[CellGroupData[{
Cell[25443, 661, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"9f7f3cb4-e3ea-4294-9b71-033288085717"],
Cell[25670, 668, 123, 0, 70, "ExampleText",ExpressionUUID->"8a579805-cbb7-43e2-a4e0-bc079a7ebf6a"],
Cell[CellGroupData[{
Cell[25818, 672, 307, 6, 70, "Input",ExpressionUUID->"cc87f060-d724-405a-8fb1-36521c3beed9"],
Cell[26128, 680, 111, 1, 70, "Output",ExpressionUUID->"d283d8ed-9770-4123-99d6-5c7ad9a289e0"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[26288, 687, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"77451c45-9c61-4c09-9b49-0c1691d53d4b"],
Cell[26515, 694, 376, 8, 70, "ExampleText",ExpressionUUID->"4a87d764-ebd2-408d-aa68-54836e0e5e54"],
Cell[CellGroupData[{
Cell[26916, 706, 394, 9, 70, "Input",ExpressionUUID->"afc5418c-4acf-4946-8222-9fc1046bbb2c"],
Cell[27313, 717, 110, 1, 70, "Output",ExpressionUUID->"8167e443-5e8a-4abf-a560-71644f88d4b7"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[27472, 724, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"965a443e-823e-4477-9737-98f3e94e7152"],
Cell[27699, 731, 456, 13, 70, "ExampleText",ExpressionUUID->"363f36a1-403a-4675-b37e-3bb642235719"],
Cell[CellGroupData[{
Cell[28180, 748, 550, 13, 70, "Input",ExpressionUUID->"2bd9f597-b7a2-4e92-8414-90e9e7d402f0"],
Cell[28733, 763, 139, 2, 70, "Output",ExpressionUUID->"355ba187-0e23-41e6-b6cc-05e98fcd2eb8"]
}, Open  ]]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[28933, 772, 1227, 31, 70, "ExampleSection",ExpressionUUID->"298d80ce-856f-47f5-aee5-c6e26bf30643",
 CellID->1293636265],
Cell[30163, 805, 157, 2, 70, "ExampleText",ExpressionUUID->"40a43739-69e6-41dc-a44d-e691e1daadcd"],
Cell[CellGroupData[{
Cell[30345, 811, 499, 9, 70, "Input",ExpressionUUID->"0e24c3cb-ff6f-4993-ba4c-236eb1c1f6d1"],
Cell[30847, 822, 110, 1, 70, "Output",ExpressionUUID->"7ddf750e-617a-4887-87f6-b924d7f9feb3"]
}, Open  ]],
Cell[CellGroupData[{
Cell[30994, 828, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"f15322b1-205b-4d53-b9dc-8d02b725a1c2"],
Cell[31221, 835, 170, 3, 70, "ExampleText",ExpressionUUID->"9184f24d-c892-4e01-b3b8-af9c38e33733"],
Cell[CellGroupData[{
Cell[31416, 842, 359, 8, 70, "Input",ExpressionUUID->"4b0bcfaf-0e40-41f1-bc83-378130c5b4a8"],
Cell[31778, 852, 486, 9, 70, "Output",ExpressionUUID->"0afd9a88-ad3e-43c7-af20-dd937697fb95"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[32313, 867, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"c148e9ae-b1c5-4767-be43-06b30020e40e"],
Cell[32540, 874, 185, 3, 70, "ExampleText",ExpressionUUID->"7ee7097c-ac12-4104-a1d0-b869eb4ffa40"],
Cell[CellGroupData[{
Cell[32750, 881, 308, 6, 70, "Input",ExpressionUUID->"8df50a04-c0fd-4bc9-bcec-fce7ccc155d4"],
Cell[33061, 889, 111, 1, 70, "Output",ExpressionUUID->"8227188f-c886-4a27-9b15-14b27ea1e6e7"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[33221, 896, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"088ea693-cd9a-449d-9188-ab5c697d6d04"],
Cell[33448, 903, 134, 0, 70, "ExampleText",ExpressionUUID->"e07d39a4-65a1-420b-9b60-5b89d4c0f02c"],
Cell[CellGroupData[{
Cell[33607, 907, 741, 15, 70, "Input",ExpressionUUID->"c0eeb3f9-8748-4aeb-8d46-da24394e30f8"],
Cell[34351, 924, 110, 1, 70, "Output",ExpressionUUID->"152f412a-cca6-4734-a3e2-48fd0fe55143"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[34510, 931, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"c0201966-4367-4fa9-ba99-9d40f642d9c1"],
Cell[34737, 938, 225, 3, 70, "ExampleText",ExpressionUUID->"22535015-2308-443c-a0a7-96402356d1aa"],
Cell[CellGroupData[{
Cell[34987, 945, 288, 5, 70, "Input",ExpressionUUID->"8df2b518-63c1-4d5f-bf5c-d9fdb87c7da8"],
Cell[35278, 952, 231, 4, 70, "Output",ExpressionUUID->"e0845c7d-f87e-4842-a292-413d0b64cdfe"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[35558, 962, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"45b6b1a1-6ed8-4d82-a6ae-9cd2dd94a3ed"],
Cell[35785, 969, 123, 0, 70, "ExampleText",ExpressionUUID->"63553414-e583-4e55-9b4b-9bb05354a4d6"],
Cell[CellGroupData[{
Cell[35933, 973, 288, 5, 70, "Input",ExpressionUUID->"62869ff0-2ef2-4401-9839-56f112a22a67"],
Cell[36224, 980, 231, 4, 70, "Output",ExpressionUUID->"8e25207e-70b8-499d-8974-6bfffc7623ee"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[36504, 990, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"b74f0e71-a2c4-4619-8faa-cf3546c20dd5"],
Cell[36731, 997, 194, 3, 70, "ExampleText",ExpressionUUID->"a78fd691-a270-445c-8318-37eff6017349"],
Cell[CellGroupData[{
Cell[36950, 1004, 371, 9, 70, "Input",ExpressionUUID->"d1f26302-97ad-4392-8cbe-0cd0cf48c25f"],
Cell[37324, 1015, 2878, 62, 70, "Output",ExpressionUUID->"348bc1b4-7421-43fc-9345-99aa46347846"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[40263, 1084, 1229, 31, 70, "ExampleSection",ExpressionUUID->"33bbec46-48c7-41c9-a01c-733acc26c580",
 CellID->2061341341],
Cell[41495, 1117, 331, 7, 70, "ExampleText",ExpressionUUID->"553e9560-b6dc-4a75-9271-1b65418c3b3d"],
Cell[CellGroupData[{
Cell[41851, 1128, 352, 7, 70, "Input",ExpressionUUID->"6feb8779-b751-49dc-9cb1-ffa437c797b3"],
Cell[42206, 1137, 110, 1, 70, "Output",ExpressionUUID->"465463fa-452b-4409-b30a-977af2446897"]
}, Open  ]],
Cell[CellGroupData[{
Cell[42353, 1143, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"1fb09cdd-0594-4427-9446-8f45e0380f3c"],
Cell[42580, 1150, 531, 12, 70, "ExampleText",ExpressionUUID->"01141443-a639-46f8-9cff-53dc60edd9d1"],
Cell[CellGroupData[{
Cell[43136, 1166, 462, 10, 70, "Input",ExpressionUUID->"a6e09615-a939-44cc-947f-dd691dcc7b64"],
Cell[43601, 1178, 110, 1, 70, "Output",ExpressionUUID->"94d2d12e-621b-439b-9770-5ebe517aba19"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[43760, 1185, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"0e2a158c-0a7a-47f0-bd74-827ed1ed097b"],
Cell[43987, 1192, 446, 9, 70, "ExampleText",ExpressionUUID->"263982a1-22e2-4067-aa97-cea1cfc7123d"],
Cell[CellGroupData[{
Cell[44458, 1205, 698, 13, 70, "Input",ExpressionUUID->"d6f9ae56-2ffe-4318-8efc-0ed8a019eefb"],
Cell[45159, 1220, 110, 1, 70, "Output",ExpressionUUID->"3e328181-40da-4bb9-8979-94d715d3883e"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[45318, 1227, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"69742961-7e0b-495c-9146-92ba0f9cda1c"],
Cell[45545, 1234, 148, 2, 70, "ExampleText",ExpressionUUID->"2cb96214-ecd1-46c2-9bb6-2d065e419620"],
Cell[CellGroupData[{
Cell[45718, 1240, 443, 8, 70, "Input",ExpressionUUID->"d20be41f-af53-45f5-ac2c-d742bb2f1af3"],
Cell[46164, 1250, 498, 9, 70, "Output",ExpressionUUID->"50b66bdd-c691-42df-baba-f586f6a74f8e"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[46723, 1266, 1233, 31, 70, "ExampleSection",ExpressionUUID->"d6a32c73-81a4-4c43-9dfc-ae36b1acfbff",
 CellID->258228157],
Cell[47959, 1299, 212, 3, 70, "ExampleText",ExpressionUUID->"2d96d995-7b80-49d9-8753-4e19738b4f9f"],
Cell[CellGroupData[{
Cell[48196, 1306, 308, 6, 70, "Input",ExpressionUUID->"2ae5c6ae-1074-4e04-8124-da65331214ad"],
Cell[48507, 1314, 111, 1, 70, "Output",ExpressionUUID->"5256a041-4c38-4a4e-8ece-53c6e68b95a1"]
}, Open  ]],
Cell[CellGroupData[{
Cell[48655, 1320, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"cb4f521d-737e-4e42-bd88-90c4eabb4491"],
Cell[48882, 1327, 234, 3, 70, "ExampleText",ExpressionUUID->"3d32afd4-0c8e-492d-9107-8338f29cf497"],
Cell[CellGroupData[{
Cell[49141, 1334, 698, 13, 70, "Input",ExpressionUUID->"b512f218-542b-43c2-a1b4-7a258f907d9c"],
Cell[49842, 1349, 110, 1, 70, "Output",ExpressionUUID->"13c8197e-b07a-4bb6-9e2d-f3868d12481e"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[50013, 1357, 1244, 31, 70, "ExampleSection",ExpressionUUID->"7b9e1bf5-f662-4110-8f58-05686597ef9f",
 CellID->2123667759],
Cell[51260, 1390, 545, 13, 70, "ExampleText",ExpressionUUID->"2d3f3cd0-900a-419c-9051-edbf002007f9"],
Cell[CellGroupData[{
Cell[51830, 1407, 674, 17, 70, "Input",ExpressionUUID->"d3368dad-122e-48c4-a6f0-0932d68e354d"],
Cell[52507, 1426, 110, 1, 70, "Output",ExpressionUUID->"d8c064a0-42f0-4bd4-9edc-34544527d7fb"]
}, Open  ]],
Cell[CellGroupData[{
Cell[52654, 1432, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"b06c5ed9-b489-4141-a85b-8bf997d4a503"],
Cell[52881, 1439, 508, 13, 70, "ExampleText",ExpressionUUID->"56bc99f8-92d0-47b0-bf7d-788e638b9f73"],
Cell[CellGroupData[{
Cell[53414, 1456, 279, 6, 70, "Input",ExpressionUUID->"7773f524-1b62-427e-8ba1-22a3506f81ca"],
Cell[53696, 1464, 110, 1, 70, "Output",ExpressionUUID->"cdc04fc7-53f8-4b6d-83b2-5921fee122c4"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[53855, 1471, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"ccb12135-8b58-4c94-8789-4f5e8f602780"],
Cell[54082, 1478, 523, 13, 70, "ExampleText",ExpressionUUID->"99773a67-63c3-4492-9c16-ef0f502a780a"],
Cell[CellGroupData[{
Cell[54630, 1495, 943, 24, 70, "Input",ExpressionUUID->"3d4f5554-bab9-4da8-aedd-845e8280785e"],
Cell[55576, 1521, 110, 1, 70, "Output",ExpressionUUID->"13294c67-d980-4fe4-a6b1-e713619dc440"]
}, Open  ]]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[55747, 1529, 1237, 31, 70, "ExampleSection",ExpressionUUID->"41a0c2ad-66f7-4929-bb83-9ef840238548",
 CellID->1305812373],
Cell[56987, 1562, 275, 5, 70, "ExampleText",ExpressionUUID->"bfa72610-5237-4a0d-ae4a-326b339dcbb5"],
Cell[CellGroupData[{
Cell[57287, 1571, 332, 7, 70, "Input",ExpressionUUID->"59820307-6bdc-4a2e-bd6e-f90df9dc5b81"],
Cell[57622, 1580, 847, 17, 70, "Output",ExpressionUUID->"d90920f4-b148-43fb-ac5c-a88783face0b"]
}, Open  ]],
Cell[CellGroupData[{
Cell[58506, 1602, 224, 5, 70, "ExampleDelimiter",ExpressionUUID->"6e577f40-1b1d-4c24-9afc-06d5be75d8db"],
Cell[58733, 1609, 462, 10, 70, "ExampleText",ExpressionUUID->"16216a59-493e-4617-8074-a73e2c594313"],
Cell[CellGroupData[{
Cell[59220, 1623, 462, 8, 70, "Input",ExpressionUUID->"78990c14-8733-4c10-8356-19aab1e1fad6"],
Cell[59685, 1633, 803, 15, 70, "Output",ExpressionUUID->"7aeda8c1-8529-4c11-b9fa-de8be4afe155"]
}, Open  ]]
}, Open  ]]
}, Closed]]
}, Open  ]],
Cell[60539, 1654, 3577, 95, 70, "SeeAlsoSection",ExpressionUUID->"5f2c21d7-8104-45b7-b305-966d869eb18b"],
Cell[64119, 1751, 694, 19, 70, "MoreAboutSection",ExpressionUUID->"408ce75a-5ad3-455b-ab43-f001f9aa6777"],
Cell[64816, 1772, 78, 0, 70, "FooterCell",ExpressionUUID->"d1586d0b-074d-458b-88e8-27e5fe5685e4"]
}
]
*)

(* End of internal cache information *)

