Codercat Studio | Cookbook

This cookbook contains a collection of useful HoudiniFX node setups. All examples are stored using the new Houdini recipe API and can be copied from this website directly into Houdini using our simple shelf tools. We also periodically make a backup of the recipes here.

Copy a snippet of interest from this page, then use Paste on the "Cookbook" shelf to paste it in.

If you would like to share a recipe, click the Create button and paste in the output of the "Copy" shelf tool. Note that you must be logged in to do so. If you have any questions or comments, feel free to reach out at codercatclub@gmail.com.

Get new recipes updates over RSS feed.

⚠️ Changelog

11.20.2025 - We updated the copy shelf tool to include the Houdini version, which is also visible on the recipes listing. Please update your shelf tools using the Python one-liner from the Recommended Install section.

📦 Recommended Install

To install Cookbook shelf tools copy this code to Houdini Python Shell and press Enter. You will see Cookbook shelf apper on the top panel.

To open Python Shell press Alt-Shift-P or go to main menu Window > Python Shell.

📂 Alternative Manual Install
⬇️ Download shelf tool file and place it to your Houdini toolbar folder:
  • Windows:
  • macOS:
  • Linux:

Replace USERNAME and X.Y with your account name and Houdini version.

Restart Houdini.

? About this project

Motivation and Goals

We created this Houdini Cookbook because:

  • We needed a way to quickly share and store small Houdini node setups. Previously, we attempted to create HDA libraries, but it was too cumbersome for our small team.
  • We believe there is a better way to share Houdini examples than by sharing entire Houdini files.
  • We enjoy sharing our small setups with the Houdini community.
  • We strongly believe in the idea of "Own Your Data," therefore we do not hold any published recipes hostage. All recipes are backed up once a day to a public Git repository here. Even if this service goes down, anyone can still download the full collection and use it directly with the Cookbook shelf tool or by using the two Python functions described below.
  • We also embrace the idea of decentralization, and we are considering open sourcing the Cookbook web service so that anyone can run it locally with their own collection or as their own public webpage. Let us know if this is something that interests you.

How Does It Work

In Houdini 20.5, SideFX introduced a new Recipe system that allows users to save collections of nodes into human-readable structured text files (JSON). Within this, they added a new collection of Python utilities (hou.data) that allows for creating and loading recipes programmatically.

In particular, the Cookbook shelf tools use hou.data.selectedItemsAsData(...) for copying nodes and hou.createItemsFromData(...) for pasting.

For this web service, we use the Go programming language and store all submitted recipes in plain text JSON files.

Unfurling Flower Pod
Building up from the unfurling stem example, this snippet assembles the stems into a flower pod. The animation includes a rig attribute wrangle as the main control, and a kinefx secondary motion for extra livity.
Nov 08, 2025 | 20.5.584 | animation Cooked By: snay
ewogICAgIkFSUkFOR0VNRU5UX0FOSU1BVElPTl9DT05UUk9MUyI6IHsKICAgICAgICAiY29sb3IiOiBbCiAgICAgICAgICAgIDAuNTgsCiAgICAgICAgICAgIDAuMjEsCiAgICAgICAgICAgIDAuNDcKICAgICAgICBdLAogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImNvbG9yZGVmYXVsdCI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJzZXRfcGFyYW1zIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZmluYWxBbmdsZSI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuMzk0MTYwNTk4NTE2NDY0MjMsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuOTE5NzA4MDEzNTM0NTQ1OSwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAxLjU0OTAwMDAyNDc5NTUzMjIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm9wZW5BbmdsZSI6IC0xLjM2LAogICAgICAgICAgICAicHJvZ3Jlc3MiOiB7CiAgICAgICAgICAgICAgICAiZXh0cmFwb2xhdGlvbl9hZnRlciI6ICJleHRlbmQiLAogICAgICAgICAgICAgICAgImV4dHJhcG9sYXRpb25fYmVmb3JlIjogImV4dGVuZCIsCiAgICAgICAgICAgICAgICAia2V5ZnJhbWVzIjogWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VsIjogMS4xMjUsCiAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgImluYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICJzbG9wZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEuMjkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VsIjogMC4zMzMzMzMzMzMzMzMzMzMzLAogICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiI6ICJiZXppZXIoKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZSI6IDgyLAogICAgICAgICAgICAgICAgICAgICAgICAiaW5hY2NlbCI6IDEuMTI1LAogICAgICAgICAgICAgICAgICAgICAgICAic2xvcGUiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAtMC4zMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgInByb2dyZXNzU3RlcCI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDEsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAicm90YXRlTWF4IjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMCwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJpbnRlcnAiOiAibGluZWFyIiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMC4xODkxODkxOTU2MzI5MzQ1NywKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwLjAxNjA4MTA4MTcwMzMwNTI0NAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDEsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC4wODUwMDAwMDA4OTQwNjk2NwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAic2NhbGUiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEuNzAwMDAwMDQ3NjgzNzE1OAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImxpbmVhciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuOTkyNzAwNzU1NTk2MTYwOSwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwLjQ1MzMzMzM3NzgzODEzNDc3CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzbmlwcGV0IjogInZAdXAgPSBub3JtYWxpemUodkBQKTtcbnZATiA9IHswLDEsMH07XG52QHVwICs9IDAuMSpjdXJsbm9pc2UoMTAwLjAgKiB2QFApO1xuXG5mbG9hdCBwcm9ncmVzcyA9IGNoZihcInByb2dyZXNzXCIpO1xuZmxvYXQgb3BlbkFuZ2xlID0gY2hmKFwib3BlbkFuZ2xlXCIpO1xuXG5cbnByb2dyZXNzID0gbWF4KHByb2dyZXNzIC0gZkBkZWxheSwwKTtcbmZAbGVhZlByb2dyZXNzID0gY2xhbXAocHJvZ3Jlc3MsMCwxKTtcblxuXG5tYXRyaXggbSA9IGlkZW50KCk7XG5yb3RhdGUobSwgLW9wZW5BbmdsZSAqZkBmaW5hbEFuZ2xlLCBjcm9zcyh2QE4sIHZAdXApKTtcbnZATiA9IG0qIHZATjtcblxuZkBpZCA9IEBwdG51bTtcbiIKICAgICAgICB9LAogICAgICAgICJwYXJtdGVtcGxhdGVzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaW5zZXJ0X2FmdGVyIjogInZleF90aHJlYWRqb2JzaXplIiwKICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICJmb2xkZXJfZ2VuZXJhdGVkcGFybXNfc25pcHBldCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIkdlbmVyYXRlZCBDaGFubmVsIFBhcmFtZXRlcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaW5hbEFuZ2xlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJGaW5hbGFuZ2xlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG93X2NvbnRyb2xzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJyYW1wX2Zsb2F0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVuQW5nbGUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIk9wZW5hbmdsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvZ3Jlc3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIlByb2dyZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4X3ZhbHVlIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImZsb2F0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9ncmVzc1N0ZXAiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIlByb2dyZXNzc3RlcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvd19jb250cm9scyI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicmFtcF9mbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm90YXRlTWF4IjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJSb3RhdGVtYXgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzY3JpcHRfY2FsbGJhY2tfbGFuZ3VhZ2UiOiAiaHNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3dfY29udHJvbHMiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInJhbXBfZmxvYXQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjYWxlIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJTY2FsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvd19jb250cm9scyI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicmFtcF9mbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInRhZ3MiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JvdXBfdHlwZSI6ICJzaW1wbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGVmeDo6bG9vayI6ICJibGFuayIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZm9sZGVyX3NpbXBsZSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy43MSwKICAgICAgICAgICAgMC4xMwogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0sCiAgICAiX19jb29rYm9va01ldGEiOiB7CiAgICAgICAgImNvbnRleHQiOiAic29wIiwKICAgICAgICAidmVyc2lvbiI6ICIyMC41LjU4NCIKICAgIH0sCiAgICAiYXBwbHlfcm90YXRpb25zIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNhbGN1bGF0ZV9yb3RhdGlvbnMiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJzbmlwcGV0IjogInByZXJvdGF0ZSg0QGxvY2FsdHJhbnNmb3JtLGZAcm90YXRlQW1vdW50LCB7MSwwLDB9KTtcbiIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy41MSwKICAgICAgICAgICAgLTUuNjQKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImtpbmVmeDo6cmlnYXR0cmlid3JhbmdsZSIsCiAgICAgICAgInVzZXJfZGF0YSI6IHsKICAgICAgICAgICAgImRpc3BsYXlfb3B0aW9ucyI6ICJ7XCJzaG93X2pvaW50c1wiOiAxLCBcInNob3dfbGlua3NcIjogMCwgXCJzb2xpZF9saW5rc1wiOiAxLCBcInNob3dfYXhlc1wiOiAwLCBcInNob3dfc2NlbmVfZ2VvXCI6IDF9IgogICAgICAgIH0KICAgIH0sCiAgICAiYXR0cmliZGVsZXRlMiI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJtb3Rpb25jbGlwZXZhbHVhdGUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAibmVnYXRlIjogdHJ1ZSwKICAgICAgICAgICAgInB0ZGVsIjogImN1cnZldSBDZCIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMi4xMywKICAgICAgICAgICAgLTEwLjQyCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJhdHRyaWJkZWxldGUiCiAgICB9LAogICAgImNhbGN1bGF0ZV9yb3RhdGlvbnMiOiB7CiAgICAgICAgImNvbG9yIjogWwogICAgICAgICAgICAwLjgsCiAgICAgICAgICAgIDAuMDIsCiAgICAgICAgICAgIDAuMDIKICAgICAgICBdLAogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImNvbG9yZGVmYXVsdCI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJyaWdkb2N0b3IyIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiYW1vdW50IjogNC40LAogICAgICAgICAgICAicm90YXRlQnlDdXJ2ZXUiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDAKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJsaW5lYXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAxLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInJvdGF0ZUJ5UHJvZ3Jlc3MiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJtb25vdG9uZWN1YmljIiwKICAgICAgICAgICAgICAgICAgICAicG9zIjogMCwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwLjAwMgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogIm1vbm90b25lY3ViaWMiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAxLAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInNuaXBwZXQiOiAiZmxvYXQgbWFzayA9IGNocmFtcChcInJvdGF0ZUJ5Q3VydmV1XCIsIGZAY3VydmV1KTtcbmZAcm90YXRlQW1vdW50ID0gbWF4KG1hc2sqIGNocmFtcChcInJvdGF0ZUJ5UHJvZ3Jlc3NcIixmQGxlYWZQcm9ncmVzcykqY2hmKFwiYW1vdW50XCIpLCBmQHJvdGF0ZU1heCk7XG5mQHJvdGF0ZUFtb3VudCArPSAwLjAwNSAqIHNpbigwLjIqQEZyYW1lICsgZkBpZCk7XG5mQHNjYWxlQW1vdW50ID0gZml0KGZAbGVhZlByb2dyZXNzLCAwLCAxLCAxLCAwLjgpOyIKICAgICAgICB9LAogICAgICAgICJwYXJtdGVtcGxhdGVzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiaW5zZXJ0X2FmdGVyIjogInZleF90aHJlYWRqb2JzaXplIiwKICAgICAgICAgICAgICAgICJwYXJtdGVtcGxhdGVzIjogewogICAgICAgICAgICAgICAgICAgICJmb2xkZXJfZ2VuZXJhdGVkcGFybXNfc25pcHBldCI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIkdlbmVyYXRlZCBDaGFubmVsIFBhcmFtZXRlcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAicGFybXRlbXBsYXRlcyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbW91bnQiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIkFtb3VudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1heF92YWx1ZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNjcmlwdF9jYWxsYmFja19sYW5ndWFnZSI6ICJoc2NyaXB0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmbG9hdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAicm90YXRlQnlDdXJ2ZXUiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxhYmVsIjogIlJvdGF0ZWJ5Y3VydmV1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG93X2NvbnRyb2xzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJyYW1wX2Zsb2F0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyb3RhdGVCeVByb2dyZXNzIjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYWJlbCI6ICJSb3RhdGVieXByb2dyZXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG93X2NvbnRyb2xzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJyYW1wX2Zsb2F0IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAic2NyaXB0X2NhbGxiYWNrX2xhbmd1YWdlIjogImhzY3JpcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAidGFncyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJncm91cF90eXBlIjogInNpbXBsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZWZ4Ojpsb29rIjogImJsYW5rIgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJmb2xkZXJfc2ltcGxlIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjUxLAogICAgICAgICAgICAtNC42NAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAia2luZWZ4OjpyaWdhdHRyaWJ3cmFuZ2xlIiwKICAgICAgICAidXNlcl9kYXRhIjogewogICAgICAgICAgICAiZGlzcGxheV9vcHRpb25zIjogIntcInNob3dfam9pbnRzXCI6IDEsIFwic2hvd19saW5rc1wiOiAwLCBcInNvbGlkX2xpbmtzXCI6IDEsIFwic2hvd19heGVzXCI6IDAsIFwic2hvd19zY2VuZV9nZW9cIjogMX0iCiAgICAgICAgfQogICAgfSwKICAgICJjaXJjbGUxIjogewogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImRpdnMiOiAyNiwKICAgICAgICAgICAgInIiOiBbCiAgICAgICAgICAgICAgICA5MCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzY2FsZSI6IDAuMDMxLAogICAgICAgICAgICAidHlwZSI6ICJwb2x5IgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjcyLAogICAgICAgICAgICAyLjI1CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJjaXJjbGUiCiAgICB9LAogICAgImNvcHl0b3BvaW50czEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAic2V0X3RpcF9hbmRfcm9vdCIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIkFSUkFOR0VNRU5UX0FOSU1BVElPTl9DT05UUk9MUyIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAxCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgInRhcmdldGF0dHJpYnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImFwcGx5YXR0cmlicyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICIqLF52LF5BbHBoYSxeTixedXAsXnBzY2FsZSxec2NhbGUsXm9yaWVudCxecm90LF5waXZvdCxedHJhbnMsXnRyYW5zZm9ybSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhcHBseW1ldGhvZCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhcHBseXRvIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgInVzZWFwcGx5IyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImFwcGx5YXR0cmlicyMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJBbHBoYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJ2aXNpYmxlIjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICJhcHBseW1ldGhvZCMiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6ICJtdWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImFwcGx5dG8jIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidXNlYXBwbHkjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiYXBwbHlhdHRyaWJzIyI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogInYiLAogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAiYXBwbHltZXRob2QjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAiYWRkIiwKICAgICAgICAgICAgICAgICAgICAgICAgInZpc2libGUiOiBmYWxzZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgImFwcGx5dG8jIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAidXNlYXBwbHkjIjogewogICAgICAgICAgICAgICAgICAgICAgICAidmlzaWJsZSI6IGZhbHNlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDEuODcsCiAgICAgICAgICAgIC0yLjUKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImNvcHl0b3BvaW50czo6Mi4wIgogICAgfSwKICAgICJsaW5lMSI6IHsKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJwb2ludHMiOiAyMAogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICA0LjA0CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJsaW5lIgogICAgfSwKICAgICJtb3Rpb25jbGlwMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJhcHBseV9yb3RhdGlvbnMiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJmcmFtZXJhbmdlIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogIiRGU1RBUlQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgMTAwCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1c2VmaXJzdGZyYW1lIjogZmFsc2UsCiAgICAgICAgICAgICJ1c2VmcmFtZXJhbmdlIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjUxLAogICAgICAgICAgICAtNi42NAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAia2luZWZ4Ojptb3Rpb25jbGlwIgogICAgfSwKICAgICJtb3Rpb25jbGlwZXZhbHVhdGUxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInNlY29uZGFyeW1vdGlvbjEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAxLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDIuMTMsCiAgICAgICAgICAgIC05LjQyCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJraW5lZng6Om1vdGlvbmNsaXBldmFsdWF0ZSIKICAgIH0sCiAgICAicmVzYW1wbGUxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImxpbmUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZG9jdXJ2ZXVhdHRyIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAzLjA0CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJyZXNhbXBsZSIKICAgIH0sCiAgICAicmVzYW1wbGUyIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImF0dHJpYmRlbGV0ZTIiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJsZW5ndGgiOiAwLjAwMiwKICAgICAgICAgICAgInRyZWF0cG9seXNhcyI6ICJzdWJkIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAyLjEzLAogICAgICAgICAgICAtMTEuNDIKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogInJlc2FtcGxlIgogICAgfSwKICAgICJyaWdkb2N0b3IxIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInJlc2FtcGxlMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImluaXR0cmFuc2Zvcm1zIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAyLjA0CiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJraW5lZng6OnJpZ2RvY3RvciIsCiAgICAgICAgInVzZXJfZGF0YSI6IHsKICAgICAgICAgICAgImRpc3BsYXlfb3B0aW9ucyI6ICJ7XCJzaG93X2pvaW50c1wiOiAxLCBcInNob3dfbGlua3NcIjogZmFsc2UsIFwic29saWRfbGlua3NcIjogMSwgXCJzaG93X2F4ZXNcIjogZmFsc2UsIFwic2hvd19zY2VuZV9nZW9cIjogMX0iCiAgICAgICAgfQogICAgfSwKICAgICJyaWdkb2N0b3IyIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNvcHl0b3BvaW50czEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDEuODcsCiAgICAgICAgICAgIC0zLjUKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImtpbmVmeDo6cmlnZG9jdG9yIiwKICAgICAgICAidXNlcl9kYXRhIjogewogICAgICAgICAgICAiZGlzcGxheV9vcHRpb25zIjogIntcInNob3dfam9pbnRzXCI6IDEsIFwic2hvd19saW5rc1wiOiBmYWxzZSwgXCJzb2xpZF9saW5rc1wiOiAxLCBcInNob3dfYXhlc1wiOiBmYWxzZSwgXCJzaG93X3NjZW5lX2dlb1wiOiAxfSIKICAgICAgICB9CiAgICB9LAogICAgInNlY29uZGFyeW1vdGlvbjEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAicmlnZG9jdG9yMiIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIm1vdGlvbmNsaXAxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiZGFtcGluZyI6IDMsCiAgICAgICAgICAgICJlZmZlY3RtdWx0IjogMC4xLAogICAgICAgICAgICAiZnJhbWVyYW5nZSI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiI6ICIkRlNUQVJUIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIDQwMAogICAgICAgICAgICBdLAogICAgICAgICAgICAiam9pbnRncm91cCI6ICJ0aXAiLAogICAgICAgICAgICAiam9pbnRncm91cHNvdXJjZSI6ICJtaWQiLAogICAgICAgICAgICAibGFnIjogWwogICAgICAgICAgICAgICAgMC4xLAogICAgICAgICAgICAgICAgMC4xCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXNzIjogMC4xLAogICAgICAgICAgICAib3ZlcnNob290IjogWwogICAgICAgICAgICAgICAgMC4xLAogICAgICAgICAgICAgICAgMC4xCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ1c2Vqb2ludGdyb3Vwc291cmNlIjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMi4xMywKICAgICAgICAgICAgLTguMzgKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImtpbmVmeDo6c2Vjb25kYXJ5bW90aW9uIiwKICAgICAgICAidXNlcl9kYXRhIjogewogICAgICAgICAgICAiZGlzcGxheV9vcHRpb25zIjogIntcInNob3dfam9pbnRzXCI6IDEsIFwic2hvd19saW5rc1wiOiAwLCBcInNvbGlkX2xpbmtzXCI6IDEsIFwic2hvd19heGVzXCI6IDEsIFwic2hvd19zY2VuZV9nZW9cIjogMX0iLAogICAgICAgICAgICAid2lyZXN0eWxlIjogInJvdW5kZWQiCiAgICAgICAgfQogICAgfSwKICAgICJzZXRfcGFyYW1zIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImNpcmNsZTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJzbmlwcGV0IjogImZAcm90YXRlTWF4ID0gMDtcbmZAZmluYWxBbmdsZSA9IC0wLjQgKyAwLjIgKiByYW5kKEBwdG51bSk7XG5mQHBzY2FsZSA9IDIuMCArIDAuMDUgKiByYW5kKEBwdG51bSk7XG5mQGRlbGF5ID0gMC4wMSpAcHRudW0gKy41KnJhbmQoQHB0bnVtKTsiCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDMuNzEsCiAgICAgICAgICAgIDEuMjEKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImF0dHJpYndyYW5nbGUiCiAgICB9LAogICAgInNldF90aXBfYW5kX3Jvb3QiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAidHJhbnNmb3JtMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImNsYXNzIjogInByaW1pdGl2ZSIsCiAgICAgICAgICAgICJzbmlwcGV0IjogImludCBwdHNbXSA9IHByaW1wb2ludHMoMCwgQHByaW1udW0pO1xuaW50IG1pZFZhbCA9IGxlbihwdHMpLzIgLSAxO1xuc2V0cG9pbnRncm91cCgwLCBcInJvb3RcIiwgcHRzWzBdLCAxKTtcblxuZm9yIChpbnQgaSA9IG1pZFZhbCArIDE7IGkgXHUwMDNjIGxlbihwdHMpOyBpICsrKXtcbiAgICBzZXRwb2ludGdyb3VwKDAsIFwidGlwXCIsIGksIDEpO1xufSIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAiYXR0cmlid3JhbmdsZSIKICAgIH0sCiAgICAic3dlZXA0IjogewogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImRpc3BsYXkiOiB0cnVlLAogICAgICAgICAgICAicmVuZGVyIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAicmVzYW1wbGUyIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAiYXBwbHlzY2FsZSI6IHRydWUsCiAgICAgICAgICAgICJjb2xzIjogMjQsCiAgICAgICAgICAgICJjb21wdXRldXZzIjogdHJ1ZSwKICAgICAgICAgICAgImVuZGNhcHR5cGUiOiAic2luZ2xlIiwKICAgICAgICAgICAgInJhZGl1cyI6IDAuMDAzOCwKICAgICAgICAgICAgInNjYWxlcmFtcCI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImJlemllciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC45ODQzNzUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJiZXppZXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLjI4MzIwODY2ODIzMTk2NDEsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC45ODQzNzUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJiZXppZXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLjM4NDI1MDQ2MjA1NTIwNjMsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogLTAuMgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImJlemllciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuODU1Nzg3NDU2MDM1NjE0LAogICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDAuNjgxNDM4MzI2ODM1NjMyMwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImJlemllciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDAuOTkxNTE5OTI3OTc4NTE1NiwKICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwLjg3NzU5MTE5MjcyMjMyMDYKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImludGVycCI6ICJiZXppZXIiLAogICAgICAgICAgICAgICAgICAgICJwb3MiOiAwLjk4NTc2ODQ5Njk5MDIwMzksCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC4yODE4ODYzNjg5ODk5NDQ0NgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiaW50ZXJwIjogImJlemllciIsCiAgICAgICAgICAgICAgICAgICAgInBvcyI6IDEsCiAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMC4wODMzMzMzMzU4MTY4NjAyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdHJldGNoYXJvdW5kdHVybnMiOiBmYWxzZSwKICAgICAgICAgICAgInN1cmZhY2VzaGFwZSI6ICJ0dWJlIgogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAyLjEzLAogICAgICAgICAgICAtMTIuNDIKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogInN3ZWVwOjoyLjAiCiAgICB9LAogICAgInRyYW5zZm9ybTEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAicmlnZG9jdG9yMSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgInIiOiBbCiAgICAgICAgICAgICAgICA0MCwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzY2FsZSI6IDAuMDcKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMS4wNAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAieGZvcm0iCiAgICB9Cn0=