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.

Simple Kinefx Ik
Simple mechanical arm using KineFX IK and Capture Packed Geometry SOP.
Aug 01, 2026 | 21.0.729 | rigging Cooked By: kif
ewogICAgIkFOSU0iOiB7CiAgICAgICAgImNvbG9yIjogWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwLAogICAgICAgICAgICAwCiAgICAgICAgXSwKICAgICAgICAiZmxhZ3MiOiB7CiAgICAgICAgICAgICJjb2xvcmRlZmF1bHQiOiBmYWxzZSwKICAgICAgICAgICAgImRpc3BsYXkiOiB0cnVlLAogICAgICAgICAgICAicmVuZGVyIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiYm9uZWRlZm9ybTEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAuNTQsCiAgICAgICAgICAgIC0xMy4yNQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAibnVsbCIKICAgIH0sCiAgICAiR1VJREVTIjogewogICAgICAgICJjb2xvciI6IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMAogICAgICAgIF0sCiAgICAgICAgImZsYWdzIjogewogICAgICAgICAgICAiY29sb3JkZWZhdWx0IjogZmFsc2UKICAgICAgICB9LAogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogInVucGFyZW50X2FsbCIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgNS4zNSwKICAgICAgICAgICAgLTYuNzQKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIm51bGwiCiAgICB9LAogICAgIlNIUCI6IHsKICAgICAgICAiY29sb3IiOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAKICAgICAgICBdLAogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImNvbG9yZGVmYXVsdCI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJhcm1fZ2VvIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLjA3LAogICAgICAgICAgICAtNC40MwogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAibnVsbCIKICAgIH0sCiAgICAiU0tFTCI6IHsKICAgICAgICAiY29sb3IiOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAKICAgICAgICBdLAogICAgICAgICJmbGFncyI6IHsKICAgICAgICAgICAgImNvbG9yZGVmYXVsdCI6IGZhbHNlCiAgICAgICAgfSwKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJvcmllbnRqb2ludHMxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjk0LAogICAgICAgICAgICAtNC4zOQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAibnVsbCIKICAgIH0sCiAgICAiX19jb29rYm9va01ldGEiOiB7CiAgICAgICAgImNvbnRleHQiOiAic29wIiwKICAgICAgICAidmVyc2lvbiI6ICIyMS4wLjcyOSIKICAgIH0sCiAgICAiX19zdGlja3lub3RlMSI6IHsKICAgICAgICAiY29sb3IiOiBbCiAgICAgICAgICAgIDAuOTgsCiAgICAgICAgICAgIDAuNzgsCiAgICAgICAgICAgIDAuMjYKICAgICAgICBdLAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgLTIuOTksCiAgICAgICAgICAgIC0xLjM4CiAgICAgICAgXSwKICAgICAgICAic2l6ZSI6IFsKICAgICAgICAgICAgMi40OSwKICAgICAgICAgICAgMS43MQogICAgICAgIF0sCiAgICAgICAgInRleHQiOiAiR2VvbWV0cnkgY29uc2lzdGluZyBvZiBwYWNrZWQgcGljZXMgdGhhdCBoYXMgbmFtZSBzdHJpbmcgcHJpbWl0aXZlIGF0dHJpYnV0ZSB0aGF0IG1hdGNoIHRhcmdldCBib25lLiIsCiAgICAgICAgInRleHRfY29sb3IiOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIlN0aWNreU5vdGUiCiAgICB9LAogICAgIl9fc3RpY2t5bm90ZTIiOiB7CiAgICAgICAgImNvbG9yIjogWwogICAgICAgICAgICAwLjk4LAogICAgICAgICAgICAwLjc4LAogICAgICAgICAgICAwLjI2CiAgICAgICAgXSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDYuNzEsCiAgICAgICAgICAgIC0yLjI5CiAgICAgICAgXSwKICAgICAgICAic2l6ZSI6IFsKICAgICAgICAgICAgMi44NiwKICAgICAgICAgICAgMi41OAogICAgICAgIF0sCiAgICAgICAgInRleHQiOiAiQnVpbGQgc2ltcGxlIHNrZWxldG9uIGZyb20gbGluZS4gQ2FuIGJlIGFsc28gbWFkZSB3aXRoIFNrZWxldG9uIFNPUC4gUmlnIERvY3RvciBkb2Vzbid0IHByb2R1Y2UgZ29vZCBqb2ludCBvcmllbnRhdGlvbiBieSBkZWZhdWx0LCBzbyB3ZSB1c2UgT3JpZW50IEpvaW50IHdpdGggZGVmYXVsdCBzZXR0aW5ncy5cbiIsCiAgICAgICAgInRleHRfY29sb3IiOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogIlN0aWNreU5vdGUiCiAgICB9LAogICAgImFuaW1hdGUiOiB7CiAgICAgICAgImNvbG9yIjogWwogICAgICAgICAgICAwLjg5LAogICAgICAgICAgICAwLjQxLAogICAgICAgICAgICAwLjc2CiAgICAgICAgXSwKICAgICAgICAiZmxhZ3MiOiB7CiAgICAgICAgICAgICJjb2xvcmRlZmF1bHQiOiBmYWxzZQogICAgICAgIH0sCiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiR1VJREVTIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAidHJhbnNmb3JtYXRpb25zIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJncm91cCMiOiAiQG5hbWU9dGlwIiwKICAgICAgICAgICAgICAgICAgICAiciMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYXBvbGF0aW9uX2FmdGVyIjogImV4dGVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmFwb2xhdGlvbl9iZWZvcmUiOiAiZXh0ZW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXlmcmFtZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZWwiOiAwLjMxOTQ0NDQ0NDQ0NDQ0NDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbG9wZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VsIjogMC4zMzMzMzMzMzMzMzMzMzMzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiI6ICJiZXppZXIoKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZSI6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5hY2NlbCI6IDAuMzE5NDQ0NDQ0NDQ0NDQ0NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsb3BlIjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogNjIuOTg5NTE1ODA2NjQ5MDc0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmFwb2xhdGlvbl9hZnRlciI6ICJleHRlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dHJhcG9sYXRpb25fYmVmb3JlIjogImV4dGVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5ZnJhbWVzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VsIjogMC4zMTk0NDQ0NDQ0NDQ0NDQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiI6ICJiZXppZXIoKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmFjY2VsIjogMC4zMzMzMzMzMzMzMzMzMzMzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xvcGUiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlbCI6IDAuMzMzMzMzMzMzMzMzMzMzMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iOiAiYmV6aWVyKCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWUiOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluYWNjZWwiOiAwLjMxOTQ0NDQ0NDQ0NDQ0NDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbG9wZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IC0wLjU0NzkzMzM1MTI0NTE4NDUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYXBvbGF0aW9uX2FmdGVyIjogImV4dGVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmFwb2xhdGlvbl9iZWZvcmUiOiAiZXh0ZW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXlmcmFtZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZWwiOiAwLjMxOTQ0NDQ0NDQ0NDQ0NDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbG9wZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IC0xNy45NjAzOTgyODg2ODU4NQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmFjY2VsIjogMC4zMTk0NDQ0NDQ0NDQ0NDQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xvcGUiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiA0MS4wMTI5MzUwMDkxMzA0NgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInMjIjogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmFwb2xhdGlvbl9hZnRlciI6ICJleHRlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dHJhcG9sYXRpb25fYmVmb3JlIjogImV4dGVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5ZnJhbWVzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VsIjogMC4zMTk0NDQ0NDQ0NDQ0NDQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiI6ICJiZXppZXIoKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmFjY2VsIjogMC4zMzMzMzMzMzMzMzMzMzMzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xvcGUiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlbCI6IDAuMzMzMzMzMzMzMzMzMzMzMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iOiAiYmV6aWVyKCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWUiOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluYWNjZWwiOiAwLjMxOTQ0NDQ0NDQ0NDQ0NDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbG9wZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYXBvbGF0aW9uX2FmdGVyIjogImV4dGVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmFwb2xhdGlvbl9iZWZvcmUiOiAiZXh0ZW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXlmcmFtZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZWwiOiAwLjMxOTQ0NDQ0NDQ0NDQ0NDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbG9wZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VsIjogMC4zMzMzMzMzMzMzMzMzMzMzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiI6ICJiZXppZXIoKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZSI6IDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5hY2NlbCI6IDAuMzE5NDQ0NDQ0NDQ0NDQ0NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsb3BlIjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dHJhcG9sYXRpb25fYWZ0ZXIiOiAiZXh0ZW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYXBvbGF0aW9uX2JlZm9yZSI6ICJleHRlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleWZyYW1lcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlbCI6IDAuMzE5NDQ0NDQ0NDQ0NDQ0NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iOiAiYmV6aWVyKCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWUiOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5hY2NlbCI6IDAuMzMzMzMzMzMzMzMzMzMzMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsb3BlIjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmFjY2VsIjogMC4zMTk0NDQ0NDQ0NDQ0NDQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xvcGUiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAidCMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYXBvbGF0aW9uX2FmdGVyIjogImV4dGVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmFwb2xhdGlvbl9iZWZvcmUiOiAiZXh0ZW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXlmcmFtZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZWwiOiAwLjMxOTQ0NDQ0NDQ0NDQ0NDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbG9wZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IC0wLjA0NjMwNjkzNTQxNjM4ODE1NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmFjY2VsIjogMC4zMTk0NDQ0NDQ0NDQ0NDQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xvcGUiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAtMC4wNTI1MTExNTkwOTE3MTgyMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dHJhcG9sYXRpb25fYWZ0ZXIiOiAiZXh0ZW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHRyYXBvbGF0aW9uX2JlZm9yZSI6ICJleHRlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleWZyYW1lcyI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlbCI6IDAuMzE5NDQ0NDQ0NDQ0NDQ0NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iOiAiYmV6aWVyKCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWUiOiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5hY2NlbCI6IDAuMzMzMzMzMzMzMzMzMzMzMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsb3BlIjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlIjogLTAuMjY5ODc2MjQ5MDM2MDM5NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWNjZWwiOiAwLjMzMzMzMzMzMzMzMzMzMzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIjogImJlemllcigpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyYW1lIjogMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmFjY2VsIjogMC4zMTk0NDQ0NDQ0NDQ0NDQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xvcGUiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwLjQ3OTg0MjU1OTg1MDI1MzA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0cmFwb2xhdGlvbl9hZnRlciI6ICJleHRlbmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dHJhcG9sYXRpb25fYmVmb3JlIjogImV4dGVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5ZnJhbWVzIjogWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VsIjogMC4zMTk0NDQ0NDQ0NDQ0NDQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiI6ICJiZXppZXIoKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmFtZSI6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmFjY2VsIjogMC4zMzMzMzMzMzMzMzMzMzMzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xvcGUiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2NlbCI6IDAuMzMzMzMzMzMzMzMzMzMzMywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24iOiAiYmV6aWVyKCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJhbWUiOiAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluYWNjZWwiOiAwLjMxOTQ0NDQ0NDQ0NDQ0NDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbG9wZSI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJncm91cCMiOiAiQG5hbWU9bWlkIiwKICAgICAgICAgICAgICAgICAgICAidCMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjMzMTY0MzE0NDg3ODU4MTUsCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjMzOTQzNTg1NTA0NDE3Njg0LAogICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDUuMzksCiAgICAgICAgICAgIC05LjExCiAgICAgICAgXSwKICAgICAgICAidHlwZSI6ICJraW5lZng6OnJpZ3Bvc2UiLAogICAgICAgICJ1c2VyX2RhdGEiOiB7CiAgICAgICAgICAgICJkaXNwbGF5X29wdGlvbnMiOiAie1wic2hvd19qb2ludHNcIjogMSwgXCJzaG93X2xpbmtzXCI6IDAsIFwic29saWRfbGlua3NcIjogMSwgXCJzaG93X2F4ZXNcIjogMSwgXCJzaG93X3NjZW5lX2dlb1wiOiAxfSIKICAgICAgICB9CiAgICB9LAogICAgImFybV9nZW8iOiB7CiAgICAgICAgImNoaWxkcmVuIjogewogICAgICAgICAgICAiYm9vbGVhbjEiOiB7CiAgICAgICAgICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgImZyb20iOiAiYm94MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSI6ICJib3g0IiwKICAgICAgICAgICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgICAgICAgICAiYm9vbGVhbm9wIjogInN1YnRyYWN0IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgICAgICAgICA4LjE1LAogICAgICAgICAgICAgICAgICAgIDUuNDgKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAidHlwZSI6ICJib29sZWFuOjoyLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJib3gxIjogewogICAgICAgICAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAgICAgICAgICJkaXZyYXRlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgICAgICAgICAyCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAiciI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgLTQ1LjAwMDAwMDAwMDAwMDAxCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAic2NhbGUiOiAwLjA3LAogICAgICAgICAgICAgICAgICAgICJzaXplIjogWwogICAgICAgICAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgICAgICAgICAxMC41MDAwMzYzMzg3OTMwMTMsCiAgICAgICAgICAgICAgICAgICAgICAgIDEKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJ0IjogWwogICAgICAgICAgICAgICAgICAgICAgICAtMC4yNDcyNDI0NjA5NTg2NTk2MiwKICAgICAgICAgICAgICAgICAgICAgICAgMC43NTg1NTU2NTUzNjc2NzI0LAogICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJwb2x5bWVzaCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgICAgICAgICAgMS43NiwKICAgICAgICAgICAgICAgICAgICA2Ljc0CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAiYm94IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiYm94MiI6IHsKICAgICAgICAgICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGl2cmF0ZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMgogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInIiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIC0xMzUKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJzY2FsZSI6IDAuMDcsCiAgICAgICAgICAgICAgICAgICAgInNpemUiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICAgICAgICAgIDEwLjE3MjkwMjg2NDkxMjQ0MywKICAgICAgICAgICAgICAgICAgICAgICAgMQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInQiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjI1NDE1MjMzODk1MTgyNjEsCiAgICAgICAgICAgICAgICAgICAgICAgIDAuMjUzNTExNzk3NjM2NzQ3MzYsCiAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBvbHltZXNoIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgICAgICAgICA1LjY4LAogICAgICAgICAgICAgICAgICAgIDYuNjQKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAidHlwZSI6ICJib3giCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJib3gzIjogewogICAgICAgICAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAgICAgICAgICJkaXZyYXRlIjogWwogICAgICAgICAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgICAgICAgICAyCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAiciI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgLTEzNQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInNjYWxlIjogMC4wNywKICAgICAgICAgICAgICAgICAgICAic2l6ZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgMC41ODU5NzE2NjA3ODAzNjQ4LAogICAgICAgICAgICAgICAgICAgICAgICAyLjEwNDY4NDQzMTAwMzU5NDQsCiAgICAgICAgICAgICAgICAgICAgICAgIDIuMzY4MjQxMzMxNDA3MDAyNQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInQiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDAuMDUxMTk0NTQ3Njc1NTQ5OTksCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjA1MTgzNTA4ODk5MDYyODcxLAogICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJwb2x5bWVzaCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgICAgICAgICAgNy41MiwKICAgICAgICAgICAgICAgICAgICA2LjY1CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAiYm94IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiYm94NCI6IHsKICAgICAgICAgICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGl2cmF0ZSI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMgogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInIiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIC0xMzUKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICJzY2FsZSI6IDAuMDcsCiAgICAgICAgICAgICAgICAgICAgInNpemUiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDEuNzIzMDgyNDM0MjMxNzQ2OCwKICAgICAgICAgICAgICAgICAgICAgICAgMi4xNzA3NjcwMTE0NDgxOTgsCiAgICAgICAgICAgICAgICAgICAgICAgIDEuNjU4MTQ4MjI5MTIyMTYxOQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInQiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDAuMDY4NDk5MTgxNDE5NjEwOTksCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjA2OTEzOTcyMjczNDY4OTczLAogICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJwb2x5bWVzaCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgICAgICAgICAgOC45OSwKICAgICAgICAgICAgICAgICAgICA2LjYzCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAiYm94IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiY2lyY2xlMSI6IHsKICAgICAgICAgICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgICAgICAgICAic2NhbGUiOiAwLjA3LAogICAgICAgICAgICAgICAgICAgICJ0IjogWwogICAgICAgICAgICAgICAgICAgICAgICAtMC41MDM5NzU5Mjc4Mjk3NDI0LAogICAgICAgICAgICAgICAgICAgICAgICAwLjUwNTI3ODI4OTMxODA4NDcsCiAgICAgICAgICAgICAgICAgICAgICAgIC0wLjA0NjUxNDEyNzQwMzQ5NzY5NgogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicG9seSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgICAgICAgICAgMy41NiwKICAgICAgICAgICAgICAgICAgICA2LjcxCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAiY2lyY2xlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiY2lyY2xlMiI6IHsKICAgICAgICAgICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgICAgICAgICAic2NhbGUiOiAwLjA3LAogICAgICAgICAgICAgICAgICAgICJ0IjogWwogICAgICAgICAgICAgICAgICAgICAgICAwLjAyNDQ5MjQ1MDA1ODQ2MDIzNiwKICAgICAgICAgICAgICAgICAgICAgICAgMS4wMzM3NDY3MTkzNjAzNTE2LAogICAgICAgICAgICAgICAgICAgICAgICAtMC4wMzg4MzQ2MTI4MTY1NzIxOQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicG9seSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgICAgICAgICAgMC4wMiwKICAgICAgICAgICAgICAgICAgICA2Ljc4CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAiY2lyY2xlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAibWVyZ2VwYWNrZWQxIjogewogICAgICAgICAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIjogInBvbHlleHRydWRlMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSI6ICJib3gxIiwKICAgICAgICAgICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIjogInBvbHlleHRydWRlMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICAgICAgICAgInRvX2luZGV4IjogMgogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSI6ICJib3gyIiwKICAgICAgICAgICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAzCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIjogImJvb2xlYW4xIiwKICAgICAgICAgICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAidG9faW5kZXgiOiA0CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgICAgICAgICAibmFtZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIyI6ICJyb290IgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSMiOiAicm9vdCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUjIjogIm1pZCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUjIjogIm1pZCIKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUjIjogInRpcCIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgICAgICAgICAgNS40MywKICAgICAgICAgICAgICAgICAgICAxLjg5CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInR5cGUiOiAibWVyZ2VwYWNrZWQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJvdXRwdXQwIjogewogICAgICAgICAgICAgICAgImZsYWdzIjogewogICAgICAgICAgICAgICAgICAgICJkaXNwbGF5IjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAicmVuZGVyIjogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSI6ICJtZXJnZXBhY2tlZDEiLAogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAgICAgICAgICJvdXRwdXRpZHgiOiAwCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAgICAgICAgIDUuMzcsCiAgICAgICAgICAgICAgICAgICAgMC44NgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJ0eXBlIjogIm91dHB1dCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInBvbHlleHRydWRlMSI6IHsKICAgICAgICAgICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSI6ICJjaXJjbGUxIiwKICAgICAgICAgICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IDAuMDk0ODMyODgyMjg1MTE4MQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgICAgICAgICAzLjU0LAogICAgICAgICAgICAgICAgICAgIDYuMTEKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAidHlwZSI6ICJwb2x5ZXh0cnVkZTo6Mi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicG9seWV4dHJ1ZGUyIjogewogICAgICAgICAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIjogImNpcmNsZTIiLAogICAgICAgICAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAgICAgICAgICJkaXN0IjogMC4wODI1MDUzODI1OTc0NDY0NAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgIDYuMTgKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAidHlwZSI6ICJwb2x5ZXh0cnVkZTo6Mi4wIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogInN1Ym5ldCIKICAgIH0sCiAgICAiYm9uZWRlZm9ybTEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiY2FwdHVyZXBhY2tlZGdlbzEiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJTS0VMIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDEKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiaWtjaGFpbnMxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDIKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLjUxLAogICAgICAgICAgICAtMTEuNTQKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImJvbmVkZWZvcm0iCiAgICB9LAogICAgImNhcHR1cmVwYWNrZWRnZW8xIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIlNIUCIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIlNLRUwiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJjYXB0dXJlYnluYW1lIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAwLjI5LAogICAgICAgICAgICAtOC4wOQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAia2luZWZ4OjpjYXB0dXJlcGFja2VkZ2VvIiwKICAgICAgICAidXNlcl9kYXRhIjogewogICAgICAgICAgICAiZGlzcGxheV9vcHRpb25zIjogIntcInNob3dfam9pbnRzXCI6IDEsIFwic2hvd19saW5rc1wiOiAwLCBcInNvbGlkX2xpbmtzXCI6IDEsIFwic2hvd19heGVzXCI6IDAsIFwic2hvd19zY2VuZV9nZW9cIjogMX0iLAogICAgICAgICAgICAid2lyZXN0eWxlIjogInJvdW5kZWQiCiAgICAgICAgfQogICAgfSwKICAgICJjb25maWd1cmVfam9pbnRzIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogImxpbmUxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBhcm1zIjogewogICAgICAgICAgICAic25pcHBldCI6ICJpZiAoQHB0bnVtID09IDEpIHtcbiAgICBAbmFtZSA9IFwibWlkXCI7XG4gICAgQFAueCAtPSAwLjU7XG59IGVsc2UgaWYgKCBAcHRudW0gPT0gMiApIHtcbiAgICBAbmFtZSA9IFwidGlwXCI7XG59IGVsc2UgaWYgKCBAcHRudW0gPT0gMCApIHtcbiAgICBAbmFtZSA9IFwicm9vdFwiO1xufSIKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy45MSwKICAgICAgICAgICAgLTEuMDQKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImF0dHJpYndyYW5nbGUiCiAgICB9LAogICAgImlrY2hhaW5zMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJTS0VMIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiYW5pbWF0ZSIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAxCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImlrY2hhaW5zIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJnb2FsIyI6ICJ0aXAiLAogICAgICAgICAgICAgICAgICAgICJtaWQjIjogIm1pZCIsCiAgICAgICAgICAgICAgICAgICAgIm9yaWVudHRpcCMiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJyb290IyI6ICJyb290IiwKICAgICAgICAgICAgICAgICAgICAidGlwIyI6ICJ0aXAiLAogICAgICAgICAgICAgICAgICAgICJ0d2lzdCMiOiAibWlkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAicG9zaXRpb24iOiBbCiAgICAgICAgICAgIDQuMjEsCiAgICAgICAgICAgIC0xMC4zNAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAia2luZWZ4Ojppa2NoYWluczo6Mi4wIgogICAgfSwKICAgICJsaW5lMSI6IHsKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJkaXIiOiBbCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgLTEsCiAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJvcmlnaW4iOiBbCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBvaW50cyI6IDMKICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgMy44OSwKICAgICAgICAgICAgMC4wOQogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAibGluZSIKICAgIH0sCiAgICAib3JpZW50am9pbnRzMSI6IHsKICAgICAgICAiaW5wdXRzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiZnJvbSI6ICJyaWdkb2N0b3IxIiwKICAgICAgICAgICAgICAgICJmcm9tX2luZGV4IjogMCwKICAgICAgICAgICAgICAgICJ0b19pbmRleCI6IDAKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjk1LAogICAgICAgICAgICAtMy4xNgogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAia2luZWZ4OjpvcmllbnRqb2ludHMiLAogICAgICAgICJ1c2VyX2RhdGEiOiB7CiAgICAgICAgICAgICJkaXNwbGF5X29wdGlvbnMiOiAie1wic2hvd19qb2ludHNcIjogMSwgXCJzaG93X2xpbmtzXCI6IDAsIFwic29saWRfbGlua3NcIjogMSwgXCJzaG93X2F4ZXNcIjogMSwgXCJzaG93X3NjZW5lX2dlb1wiOiAxfSIKICAgICAgICB9CiAgICB9LAogICAgInJpZ2RvY3RvcjEiOiB7CiAgICAgICAgImlucHV0cyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgImZyb20iOiAiY29uZmlndXJlX2pvaW50cyIsCiAgICAgICAgICAgICAgICAiZnJvbV9pbmRleCI6IDAsCiAgICAgICAgICAgICAgICAidG9faW5kZXgiOiAwCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJwYXJtcyI6IHsKICAgICAgICAgICAgImluaXR0cmFuc2Zvcm1zIjogdHJ1ZQogICAgICAgIH0sCiAgICAgICAgInBvc2l0aW9uIjogWwogICAgICAgICAgICAzLjkyLAogICAgICAgICAgICAtMi4wOAogICAgICAgIF0sCiAgICAgICAgInR5cGUiOiAia2luZWZ4OjpyaWdkb2N0b3IiLAogICAgICAgICJ1c2VyX2RhdGEiOiB7CiAgICAgICAgICAgICJkaXNwbGF5X29wdGlvbnMiOiAie1wic2hvd19qb2ludHNcIjogMSwgXCJzaG93X2xpbmtzXCI6IGZhbHNlLCBcInNvbGlkX2xpbmtzXCI6IDEsIFwic2hvd19heGVzXCI6IGZhbHNlLCBcInNob3dfc2NlbmVfZ2VvXCI6IDF9IgogICAgICAgIH0KICAgIH0sCiAgICAidW5wYXJlbnRfYWxsIjogewogICAgICAgICJpbnB1dHMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJmcm9tIjogIlNLRUwiLAogICAgICAgICAgICAgICAgImZyb21faW5kZXgiOiAwLAogICAgICAgICAgICAgICAgInRvX2luZGV4IjogMAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAicGFybXMiOiB7CiAgICAgICAgICAgICJyZXBhcmVudCI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiam9pbnQjIjogIioiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJwb3NpdGlvbiI6IFsKICAgICAgICAgICAgNS4zNSwKICAgICAgICAgICAgLTUuNDkKICAgICAgICBdLAogICAgICAgICJ0eXBlIjogImtpbmVmeDo6cGFyZW50am9pbnRzIiwKICAgICAgICAidXNlcl9kYXRhIjogewogICAgICAgICAgICAiZGlzcGxheV9vcHRpb25zIjogIntcInNob3dfam9pbnRzXCI6IDEsIFwic2hvd19saW5rc1wiOiAxLCBcInNvbGlkX2xpbmtzXCI6IDEsIFwic2hvd19heGVzXCI6IDAsIFwic2hvd19zY2VuZV9nZW9cIjogMH0iLAogICAgICAgICAgICAid2lyZXN0eWxlIjogInJvdW5kZWQiCiAgICAgICAgfQogICAgfQp9