Octopus.Script exported 2015-11-15 by timhunt303 belongs to ‘RavenDB’ category.
To move data directly between two instances (or different databases in the same instance) using the between option introduced in Smuggler version 3.
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Raven Smuggler Path
ravenSmugglerPath =
Full path to the Smuggler EXE.
For example C:\RavenDB\Smuggler\Raven.Smuggler.exe
Source Database URL
sourceDatabaseUrl = http://localhost:8080/
The URL of the Raven database, where the Source Database is located.
For example http://localhost:8080/
Name of the Source Database
sourceDatabaseName
Name of the Source Database in Raven.
API Key for the Source Database
sourceDatabaseApiKey
API Key needed to access the Source Database.
If key is not provided, anonymous authentication will be used.
For more information: http://ravendb.net/docs/article-page/3.0/csharp/studio/accessing-studio
Destination Database URL
destinationDatabaseUrl = http://localhost:8080/
The URL of the Raven database, where the Destination Database is located.
For example http://localhost:8080/
Name of the Destination Database
destinationDatabaseName
Name of the Destination Database in Raven.
API Key for the Destination Database
destinationDatabaseApiKey
API Key needed to access the Destination Database.
If key is not provided, anonymous authentication will be used.
For more information: http://ravendb.net/docs/article-page/3.0/csharp/studio/accessing-studio
Operate on Documents
OperateDocuments = True
With Raven backup, you can choose which types are operated during the backup.
Unselect this option to exclude Documents from the copying process.
Operate on Attachments
OperateAttachments = True
With Raven backup, you can choose which types are operated during the backup.
Unselect this option to exclude Attachments from the copying process.
Operate on Indexes
OperateIndexes = True
With Raven backup, you can choose which types are operated during the backup.
Unselect this option to exclude Indexes from the copying process.
Operate on Transformers
OperateTransformers = True
With Raven backup, you can choose which types are operated during the backup.
Unselect this option to exclude Transformers from the copying process.
Timeout
timeout = 300000
The timeout (in milliseconds) to use for requests.
Wait for Indexing
WaitIndexing = True
Wait until all indexing activity has been completed (Import Only).
Script body
Steps based on this template will execute the following PowerShell script.
# Variables
#Location of the Raven Smuggler exe
$ravenSmugglerPath = $OctopusParameters["ravenSmugglerPath"]
#--------------------------------------------------------------------
# Source Database Variables
#URL of RavenDB that is being backed up
$sourceDatabaseURL = $OctopusParameters["sourceDatabaseURL"]
#name of the RavenDB that is being backed up
$sourceDatabaseName = $OctopusParameters["sourceDatabaseName"]
#API Key for the Source Database
$sourceDatabaseApiKey = $OctopusParameters["sourceDatabaseApiKey"]
#--------------------------------------------------------------------
#Destination Database Variables
#URL of destination RavenDB
$destinationDatabaseURL = $OctopusParameters["destinationDatabaseURL"]
#Name of the destination RavenDB
$destinationDatabaseName = $OctopusParameters["destinationDatabaseName"]
#API Key for the Destination Database
$destinationDatabaseAPIKey = $OctopusParameters["destinationDatabaseAPIKey"]
#------------------------------------------------------------------------------
# Other Variables retrieved from Octopus
#Limit the back up to different types in the database
#Get document option (true/false)
$operateOnDocuments = $OctopusParameters["operateOnDocuments"]
#Get attachments option (true/false)
$operateOnAttachments = $OctopusParameters["operateOnAttachments"]
#Get indexes option (true/false)
$operateOnIndexes = $OctopusParameters["operateOnIndexes"]
#Get transformers option (true/false)
$operateOnTransformers = $OctopusParameters["operateOnTransformers"]
#Get timeout option
$timeout = $OctopusParameters["timeout"]
#Get wait for indexing option (true/false)
$waitForIndexing = $OctopusParameters["waitForIndexing"]
#--------------------------------------------------------------------
#checks to see if the entered database exists, return a boolean value depending on the outcome
function doesRavenDBExist([string] $databaseChecking, [string]$URL)
{
#retrieves the list of databases at the specified URL
$database_list = Invoke-RestMethod -Uri "$URL/databases" -Method Get
#checks if the database is at the specified URL
if ($database_list -contains $databaseChecking.ToString())
{
return $TRUE
}
else
{
return $FALSE
}
}#ends does ravenDB exist function
Write-Output "`n-------------------------`n"
#--------------------------------------------------------------------
#Checking the versions of Raven Server of both databases to see if they are compatible
Write-Output "Checking that both $sourceDatabaseName and $destinationDatabaseName are running the same version of RavenDB"
#Getting Source Database's build version
$sourceVersionURL = "$sourceDatabaseURL/databases/$sourceDatabaseName/build/version"
$sourceDatabaseVersion = Invoke-RestMethod -Uri $sourceVersionURL -Method Get
#Getting destination Database's build version
$destinationVersionURL = "$destinationDatabaseURL/databases/$destinationDatabaseName/build/version"
$destinationDatabaseVersion = Invoke-RestMethod -Uri $destinationVersionURL -Method Get
#Checks to see if they are the same version and build number
if(($sourceDatabaseVersion.ProductVersion -eq $destinationDatabaseVersion.ProductVersion) -and ($sourceDatabaseVersion.BuildVersion -eq $destinationDatabaseVersion.BuildVersion))
{
Write-Output "Source Database Product Version:" $sourceDatabaseVersion.ProductVersion
Write-Output "Source Database Build Version:" $sourceDatabaseVersion.BuildVersion
Write-Output "Destination Database Version:" $destinationDatabaseVersion.ProductVersion
Write-Output "Destination Database Build Version:" $destinationDatabaseVersion.BuildVersion
Write-Output "Source and destination Databases are running the same version of Raven Server"
}
else
{
Write-Warning "Source Database Version: $sourceDatabaseVersion"
Write-Warning "Destination Database Version: $destinationDatabaseVersion"
Write-Warning "The databases are running different versions of Raven Server"
}
Write-Output "`n-------------------------`n"
#--------------------------------------------------------------------
#Check path to smuggler
Write-Output "Checking if Smuggler path is correct`n"
$smugglerPath = "$ravenSmugglerPath"
$smuggler_Exists = Test-Path -Path $smugglerPath
#if the path is correct, the script continues, throws an error if the path is wrong
If($smuggler_Exists -eq $TRUE)
{
Write-Output "Smuggler exists"
}#ends if smuggler exists
else
{
Write-Error "Smuggler can not be found `nCheck the directory: $ravenSmugglerPath" -ErrorId E4
Exit 1
}#ends else, smuggler can't be found
Write-Output "`n-------------------------`n"
#--------------------------------------------------------------------
#Checking the version of smuggler
$SmugglerVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ravenSmugglerPath).FileVersion
if($SmugglerVersion -cgt "3")
{
Write-Output "Smuggler Version: $SmugglerVersion"
}
else
{
Write-Error "The version of Smuggler that is installed can NOT complete this step `nPlease update Smuggler before continuing" -ErrorId E4
Exit 1
}
Write-Output "`n-------------------------`n"
#--------------------------------------------------------------------
#Checks if both Source database and destination database exist
Write-Output "Checking if both $sourceDatabaseName and $destinationDatabaseName exist`n"
$sourceDatabase_exists = doesRavenDBExist -databaseChecking $sourceDatabaseName -URL $sourceDatabaseURL
$destinationDatabase_exists = doesRavenDBExist -databaseChecking $destinationDatabaseName -URL $destinationDatabaseURL
#if both database exist a backup occurs
if(($sourceDatabase_exists -eq $TRUE) -and ($destinationDatabase_exists -eq $TRUE))
{
Write-Output "Both $sourceDatabaseName and $destinationDatabaseName exist`n"
}#ends if
#if the source database doesn’t exist an error is throw
elseIf(($sourceDatabase_exists -eq $FALSE) -and ($destinationDatabase_exists -eq $TRUE))
{
Write-Error "$sourceDatabaseName does not exist. `nMake sure the database exists before continuing" -ErrorId E4
Exit 1
}
#if the destination database doesn’t exist an error is throw
elseIf(($destinationDatabase_exists -eq $FALSE) -and ($sourceDatabase_exists -eq $TRUE))
{
Write-Error "$destinationDatabaseName does not exist. `nMake sure the database exists before continuing" -ErrorId E4
Exit 1
}#ends destination db not exists
else
{
Write-Error "Neither $sourceDatabaseName or $destinationDatabaseName exists. `nMake sure both databases exists" -ErrorId E4
Exit 1
}#ends else
Write-Output "`n-------------------------`n"
#--------------------------------------------------------------------
#changing the types to export/import
$operateTypes = @()
if($operateOnDocuments -eq $TRUE)
{
$operateTypes += "Documents"
}
if($operateOnIndexes -eq $TRUE)
{
$operateTypes += "Indexes"
}
if($operateOnAttachments -eq $TRUE)
{
$operateTypes += "Attachments"
}
if($operateOnTransformers -eq $TRUE)
{
$operateTypes += "Transformers"
}
$Types = $operateTypes -join ","
if($Types -ne "")
{
Write-Output "This back up is only operating on $Types"
Write-Output "`n-------------------------`n"
}
#--------------------------------------------------------------------
#check if wait for indexing is selected
$Indexing = ""
if($waitForIndexing -eq $TRUE)
{
$Indexing = "--wait-for-indexing"
}
#--------------------------------------------------------------------
#backing up source database into the destination database
try
{
Write-Output "Attempting Backup up now"
Write-Output "`n-------------------------`n"
& $ravenSmugglerPath between $sourceDatabaseURL $destinationDatabaseURL --database=$sourceDatabaseName --database2=$destinationDatabaseName --api-key=$sourceDatabaseApiKey --api-key2=$destinationDatabaseAPIKey --timeout=$Timeout $Indexing
Write-Output "`n-------------------------`n"
Write-Output "Backup successful"
}#ends try
catch
{
Write-Error "An error occurred during backup, please try again" -ErrorId E4
Exit 1
}#ends catch
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
"Id": "82f804fe-682e-4e0b-8c2a-a5f289a9cabc",
"Name": "RavenDB - Smuggler - Move Data Between Databases",
"Description": "To move data directly between two instances (or different databases in the same instance) using the between option introduced in Smuggler version 3.",
"Version": 10,
"ExportedAt": "2015-11-15T22:01:49.385+00:00",
"ActionType": "Octopus.Script",
"Author": "timhunt303",
"Parameters": [
{
"Name": "ravenSmugglerPath",
"Label": "Raven Smuggler Path",
"HelpText": "Full path to the Smuggler EXE. \n \nFor example **C:\\RavenDB\\Smuggler\\Raven.Smuggler.exe**",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "sourceDatabaseUrl",
"Label": "Source Database URL",
"HelpText": "The URL of the Raven database, where the **Source Database** is located. \n\nFor example **http://localhost:8080/**",
"DefaultValue": "http://localhost:8080/",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "sourceDatabaseName",
"Label": "Name of the Source Database",
"HelpText": "Name of the **Source Database** in Raven.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "sourceDatabaseApiKey",
"Label": "API Key for the Source Database",
"HelpText": "API Key needed to access the **Source Database**. \n\nIf key is not provided, anonymous authentication will be used.\n\nFor more information: http://ravendb.net/docs/article-page/3.0/csharp/studio/accessing-studio",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
},
{
"Name": "destinationDatabaseUrl",
"Label": "Destination Database URL",
"HelpText": "The URL of the Raven database, where the **Destination Database** is located. \n\nFor example **http://localhost:8080/**",
"DefaultValue": "http://localhost:8080/",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "destinationDatabaseName",
"Label": "Name of the Destination Database",
"HelpText": "Name of the **Destination Database** in Raven.",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "destinationDatabaseApiKey",
"Label": "API Key for the Destination Database",
"HelpText": "API Key needed to access the **Destination Database**. \n\nIf key is not provided, anonymous authentication will be used.\n\nFor more information: http://ravendb.net/docs/article-page/3.0/csharp/studio/accessing-studio",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
},
{
"Name": "OperateDocuments",
"Label": "Operate on Documents",
"HelpText": "With Raven backup, you can choose which types are operated during the backup.\n\nUnselect this option to exclude **Documents** from the copying process.",
"DefaultValue": "True",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Name": "OperateAttachments",
"Label": "Operate on Attachments",
"HelpText": "With Raven backup, you can choose which types are operated during the backup.\n\nUnselect this option to exclude **Attachments** from the copying process.",
"DefaultValue": "True",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Name": "OperateIndexes",
"Label": "Operate on Indexes",
"HelpText": "With Raven backup, you can choose which types are operated during the backup.\n\nUnselect this option to exclude **Indexes** from the copying process.",
"DefaultValue": "True",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Name": "OperateTransformers",
"Label": "Operate on Transformers",
"HelpText": "With Raven backup, you can choose which types are operated during the backup.\n\nUnselect this option to exclude **Transformers** from the copying process.",
"DefaultValue": "True",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
},
{
"Name": "timeout",
"Label": "Timeout",
"HelpText": "The timeout (in milliseconds) to use for requests.",
"DefaultValue": "300000",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "WaitIndexing",
"Label": "Wait for Indexing",
"HelpText": "Wait until all indexing activity has been completed (Import Only).",
"DefaultValue": "True",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
}
],
"Properties": {
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptBody": "\n# Variables\n\n#Location of the Raven Smuggler exe\n$ravenSmugglerPath = $OctopusParameters[\"ravenSmugglerPath\"]\n\n\n#--------------------------------------------------------------------\n# Source Database Variables\n\n#URL of RavenDB that is being backed up \n$sourceDatabaseURL = $OctopusParameters[\"sourceDatabaseURL\"]\n\n#name of the RavenDB that is being backed up\n$sourceDatabaseName = $OctopusParameters[\"sourceDatabaseName\"]\n\n#API Key for the Source Database\n$sourceDatabaseApiKey = $OctopusParameters[\"sourceDatabaseApiKey\"]\n\n\n#--------------------------------------------------------------------\n#Destination Database Variables\n\n#URL of destination RavenDB \n$destinationDatabaseURL = $OctopusParameters[\"destinationDatabaseURL\"]\n\n#Name of the destination RavenDB\n$destinationDatabaseName = $OctopusParameters[\"destinationDatabaseName\"]\n\n#API Key for the Destination Database\n$destinationDatabaseAPIKey = $OctopusParameters[\"destinationDatabaseAPIKey\"]\n\n\n\n#------------------------------------------------------------------------------\n# Other Variables retrieved from Octopus\n\n#Limit the back up to different types in the database\n#Get document option (true/false)\n$operateOnDocuments = $OctopusParameters[\"operateOnDocuments\"]\n\n#Get attachments option (true/false)\n$operateOnAttachments = $OctopusParameters[\"operateOnAttachments\"]\n\n#Get indexes option (true/false)\n$operateOnIndexes = $OctopusParameters[\"operateOnIndexes\"]\n\n#Get transformers option (true/false)\n$operateOnTransformers = $OctopusParameters[\"operateOnTransformers\"]\n\n#Get timeout option \n$timeout = $OctopusParameters[\"timeout\"]\n\n#Get wait for indexing option (true/false)\n$waitForIndexing = $OctopusParameters[\"waitForIndexing\"]\n\n\n#--------------------------------------------------------------------\n\n#checks to see if the entered database exists, return a boolean value depending on the outcome\nfunction doesRavenDBExist([string] $databaseChecking, [string]$URL)\n{\n #retrieves the list of databases at the specified URL\n $database_list = Invoke-RestMethod -Uri \"$URL/databases\" -Method Get\n #checks if the database is at the specified URL\n if ($database_list -contains $databaseChecking.ToString()) \n {\n return $TRUE\n }\n else \n {\n return $FALSE\n }\n\n \n}#ends does ravenDB exist function\n\nWrite-Output \"`n-------------------------`n\"\n\n#--------------------------------------------------------------------\n#Checking the versions of Raven Server of both databases to see if they are compatible \n\nWrite-Output \"Checking that both $sourceDatabaseName and $destinationDatabaseName are running the same version of RavenDB\"\n\n#Getting Source Database's build version\n$sourceVersionURL = \"$sourceDatabaseURL/databases/$sourceDatabaseName/build/version\"\n\n$sourceDatabaseVersion = Invoke-RestMethod -Uri $sourceVersionURL -Method Get\n\n#Getting destination Database's build version\n$destinationVersionURL = \"$destinationDatabaseURL/databases/$destinationDatabaseName/build/version\"\n\n$destinationDatabaseVersion = Invoke-RestMethod -Uri $destinationVersionURL -Method Get\n\n#Checks to see if they are the same version and build number\nif(($sourceDatabaseVersion.ProductVersion -eq $destinationDatabaseVersion.ProductVersion) -and ($sourceDatabaseVersion.BuildVersion -eq $destinationDatabaseVersion.BuildVersion))\n{\n \n Write-Output \"Source Database Product Version:\" $sourceDatabaseVersion.ProductVersion \n Write-Output \"Source Database Build Version:\" $sourceDatabaseVersion.BuildVersion\n Write-Output \"Destination Database Version:\" $destinationDatabaseVersion.ProductVersion \n Write-Output \"Destination Database Build Version:\" $destinationDatabaseVersion.BuildVersion\n Write-Output \"Source and destination Databases are running the same version of Raven Server\"\n \n}\nelse \n{\n Write-Warning \"Source Database Version: $sourceDatabaseVersion\"\n Write-Warning \"Destination Database Version: $destinationDatabaseVersion\"\n Write-Warning \"The databases are running different versions of Raven Server\"\n}\n\nWrite-Output \"`n-------------------------`n\"\n\n#--------------------------------------------------------------------\n\n#Check path to smuggler\nWrite-Output \"Checking if Smuggler path is correct`n\"\n\n$smugglerPath = \"$ravenSmugglerPath\"\n\n$smuggler_Exists = Test-Path -Path $smugglerPath\n\n\n\n#if the path is correct, the script continues, throws an error if the path is wrong\nIf($smuggler_Exists -eq $TRUE)\n{\n Write-Output \"Smuggler exists\"\n\n}#ends if smuggler exists \nelse\n{\n Write-Error \"Smuggler can not be found `nCheck the directory: $ravenSmugglerPath\" -ErrorId E4\n Exit 1\n}#ends else, smuggler can't be found\n\nWrite-Output \"`n-------------------------`n\"\n\n#--------------------------------------------------------------------\n#Checking the version of smuggler\n\n$SmugglerVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ravenSmugglerPath).FileVersion\n\nif($SmugglerVersion -cgt \"3\")\n{\n Write-Output \"Smuggler Version: $SmugglerVersion\"\n}\nelse\n{\n Write-Error \"The version of Smuggler that is installed can NOT complete this step `nPlease update Smuggler before continuing\" -ErrorId E4\n Exit 1\n}\nWrite-Output \"`n-------------------------`n\"\n\n\n\n\n\n#--------------------------------------------------------------------\n\n\n#Checks if both Source database and destination database exist\nWrite-Output \"Checking if both $sourceDatabaseName and $destinationDatabaseName exist`n\"\n\n$sourceDatabase_exists = doesRavenDBExist -databaseChecking $sourceDatabaseName -URL $sourceDatabaseURL \n\n$destinationDatabase_exists = doesRavenDBExist -databaseChecking $destinationDatabaseName -URL $destinationDatabaseURL\n\n\n#if both database exist a backup occurs\nif(($sourceDatabase_exists -eq $TRUE) -and ($destinationDatabase_exists -eq $TRUE))\n{\n\n Write-Output \"Both $sourceDatabaseName and $destinationDatabaseName exist`n\"\n\n}#ends if \n#if the source database doesn’t exist an error is throw\nelseIf(($sourceDatabase_exists -eq $FALSE) -and ($destinationDatabase_exists -eq $TRUE))\n{\n\n Write-Error \"$sourceDatabaseName does not exist. `nMake sure the database exists before continuing\" -ErrorId E4\n Exit 1\n\n}\n#if the destination database doesn’t exist an error is throw\nelseIf(($destinationDatabase_exists -eq $FALSE) -and ($sourceDatabase_exists -eq $TRUE))\n{\n\n Write-Error \"$destinationDatabaseName does not exist. `nMake sure the database exists before continuing\" -ErrorId E4\n Exit 1\n\n}#ends destination db not exists\nelse\n{\n\n Write-Error \"Neither $sourceDatabaseName or $destinationDatabaseName exists. `nMake sure both databases exists\" -ErrorId E4\n Exit 1\n\n}#ends else\n\nWrite-Output \"`n-------------------------`n\"\n\n#--------------------------------------------------------------------\n#changing the types to export/import\n\n$operateTypes = @()\n\n\nif($operateOnDocuments -eq $TRUE)\n{\n $operateTypes += \"Documents\"\n}\nif($operateOnIndexes -eq $TRUE)\n{\n $operateTypes += \"Indexes\"\n}\nif($operateOnAttachments -eq $TRUE)\n{\n $operateTypes += \"Attachments\"\n}\nif($operateOnTransformers -eq $TRUE)\n{\n $operateTypes += \"Transformers\"\n}\n\n$Types = $operateTypes -join \",\"\n\nif($Types -ne \"\")\n{\n Write-Output \"This back up is only operating on $Types\"\n\n Write-Output \"`n-------------------------`n\"\n}\n\n\n#--------------------------------------------------------------------\n#check if wait for indexing is selected\n$Indexing = \"\"\n\nif($waitForIndexing -eq $TRUE)\n{\n $Indexing = \"--wait-for-indexing\"\n}\n\n#--------------------------------------------------------------------\n#backing up source database into the destination database\n\ntry\n{\n Write-Output \"Attempting Backup up now\"\n Write-Output \"`n-------------------------`n\"\n & $ravenSmugglerPath between $sourceDatabaseURL $destinationDatabaseURL --database=$sourceDatabaseName --database2=$destinationDatabaseName --api-key=$sourceDatabaseApiKey --api-key2=$destinationDatabaseAPIKey --timeout=$Timeout $Indexing \n Write-Output \"`n-------------------------`n\"\n Write-Output \"Backup successful\" \n}#ends try\ncatch\n{\n Write-Error \"An error occurred during backup, please try again\" -ErrorId E4\n Exit 1\n}#ends catch \n"
},
"Category": "RavenDB",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/ravendb-smuggler-move-data-between-database.json",
"Website": "/step-templates/82f804fe-682e-4e0b-8c2a-a5f289a9cabc",
"Logo": "iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADBQTFRF0Y6OjR8iHx8fW1la0szNmVZZZB8k5crLkIyMwl1evI6QwrCw6uPjsiAh////8/HxjiSEkQAABNlJREFUeNrs24uWmyAUBVBQkKfh//+2gKiYGKMRsWkPnbUmdZLUPfeBEUoe/8gggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggADy/0GceDpgpDSM/SCE9L1SxMweK5swWu/5rdQKlDAUmTCmbZqkYb9UIzZR+p4INxxishlHa1xViBNC7H0Lo5RZvrafBrHDIdY2maUixJ+L2v0W/nxfD41D2cRtsiHtXwAhzz9aQlSMj1CvlDantLYSxPeevRArRHZW/cBymWR0LoJSOirHi51sZ9103lml9GooONssKdUhhszN9CEI2apWn1pJmqdXP7zELtKraVlliHot563ZfQyZJYQo6hV0CtOTpDG1IfRACoqeqrxrJMpwzC0hTVsT4vTTTJFlmf0YHyF8VMIflSZHuWxf7q5iz19Me5F6nNJb7WGQ6LXmVaoRn4P0dIBQStWml8avGFYnL8muUxCjeIIMZeG7G5neMOiG2iKUJsrQ++LZLyXWZBnX+mtlVxWSnzMPTcF/p/NBf+YJEh4FDY/nZw1zbBGT5nW0ByfMryB+Ls8n89hnQ9rwESKIJlE1RSRZxn+ONTuGNJdAyPzbJtkpLdr0CCF0HNPT0t9Xp/i340Aj2A/RMyQ8XOtSU0T0BNFPEP56/bg5zOWQ6YVaE50uYLTiii8hJCReeArNQ2J2Q3b3tP0QwzlfiwhdCU88bS6GUhI0H/xIah2YMc93rfeQsbAHAE8SO3bgDzk1teN9khKQjurt5tz55/jk6sKD4bnyI8R7x8/Hu0r+PKTLIuKzj7+gWKBSLbRW0bIP0kg315J010E0H2b1hxBsmlTyjHqKiJ5IbO880voxPmaXQXhHX++zdP43nkGM9kNYHb8FUghIJD2ao+NTpXwPoZ1YrRe+eE467xSbCInXKe1hyYegfA3xrdV9igjv5kbgg5Ig1L/OfQHZ/oxf9k5jqBeRQ+aI+EcR4r/Mvmo/ll6FIExrsZp+3QTpuoevlvHIV5AtSSGI7jq91hDmiKTrgjH5WPOdxFaFhG71pjR9QM5A3l96FYL4CzGziESn30O6E5C3FX/J0tsWhA6QQxNJm0+N7jaICBcuwy/SshgRsRuyWOmy4VbSu7uTFSBsrItYSmGwfRD/sX3/PYgKq7ozRMgDkINrW1UhKSC7IEfvCteCtNOjXZDjKw4VIFZqqc3cfD9DvrmLWnfnw1wjrGg4akOc8YrmA+TL1Z+6EbGBsQ35dpmh8qaaKSKyULO6CxKLpHl7GX9iUbEyRMfcevdR98zqVWVImEnipXixbnUT5BEiwtch51Z4a0NaHxG5dhf77Jp7bQj3ETErtX56cbc2xPjcYq+1fn43R20Ii93XFi2PWyCuCRfC5sg9xL8T4ud2+bx1q8jeh+qQ1te6u2APR3WIbJaZVWp/UH0IX2QWc78KYSbrWQV3NlaHuCwgsuAe4Bs2+bvy2+fugbTF0+oeiLtgi+ktkLb0/tK7utYV4bhlZi/brG6DyPK74m+BOHnVO+M/iwECCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACSM3xR4ABAI1fHCI0qDDgAAAAAElFTkSuQmCC",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Sunday, November 15, 2015