text:
<?php

namespace Oro\Bundle\WorkflowBundle\Model;

use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;

use Oro\Bundle\WorkflowBundle\Exception\UnknownAttributeException;
use Oro\Bundle\WorkflowBundle\Form\Type\WorkflowStepType;
use Oro\Bundle\WorkflowBundle\Exception\InvalidParameterException;

class StepAssembler extends AbstractAssembler
{
    /**
     * @var Attribute[]
     */
    protected $attributes;

    /**
     * @var FormOptionsAssembler
     */
    protected $formOptionsAssembler;

    /**
     * @param FormOptionsAssembler $formOptionsAssembler
     */
    public function __construct(FormOptionsAssembler $formOptionsAssembler)
    {
        $this->formOptionsAssembler = $formOptionsAssembler;
    }

    /**
     * @param array $configuration
     * @param Attribute[]|Collection $attributes
     * @return ArrayCollection
     */
    public function assemble(array $configuration, $attributes)
    {
        $this->setAttributes($attributes);

        $steps = new ArrayCollection();
        foreach ($configuration as $name => $options) {
            $step = $this->assembleStep($name, $options);
            $steps->set($name, $step);
        }

        $this->attributes = array();

        return $steps;
    }

    /**
     * @param string $name
     * @param array $options
     * @return Step
     * @throws InvalidParameterException
     * @throws UnknownAttributeException
     */
    protected function assembleStep($name, array $options)
    {
        $this->assertOptions($options, array('label'));

        $step = new Step();
        $step->setName($name)
            ->setLabel($options['label'])
            ->setTemplate($this->getOption($options, 'template', null))
            ->setOrder($this->getOption($options, 'order', 0))
            ->setIsFinal($this->getOption($options, 'is_final', false))
            ->setAllowedTransitions($this->getOption($options, 'allowed_transitions', array()))
            ->setFormType($this->getOption($options, 'form_type', WorkflowStepType::NAME))
            ->setFormOptions($this->assembleFormOptions($options, $name))
            ->setViewAttributes($this->assembleViewAttributes($options, $name));

        return $step;
    }

    /**
     * @param array $options
     * @param string $stepName
     * @return array
     */
    protected function assembleFormOptions(array $options, $stepName)
    {
        $formOptions = $this->getOption($options, 'form_options', array());
        return $this->formOptionsAssembler->assemble($formOptions, $this->attributes, 'step', $stepName);
    }

    /**
     * @param array $options
     * @param string $stepName
     * @return array
     * @throws InvalidParameterException
     */
    protected function assembleViewAttributes(array $options, $stepName)
    {
        $viewAttributes = $this->getOption($options, 'view_attributes', array());

        if (!is_array($viewAttributes)) {
            throw new InvalidParameterException(
                sprintf('Option "view_attributes" at step "%s" must be an array', $stepName)
            );
        }

        $result = array();
        foreach ($viewAttributes as $index => $viewAttribute) {
            if (isset($viewAttribute['attribute'])) {
                $attributeName = $viewAttribute['attribute'];
                $this->assertAttributeExists($attributeName, $stepName);
                if (!isset($viewAttribute['path'])) {
                    $viewAttribute['path'] = '$' . $viewAttribute['attribute'];
                }
                if (!isset($viewAttribute['label'])) {
                    $viewAttribute['label'] = $this->attributes[$viewAttribute['attribute']]->getLabel();
                }
            } elseif (!isset($viewAttribute['path'])) {
                throw new InvalidParameterException(
                    sprintf(
                        'Option "path" or "attribute" at view attribute "%s" of step "%s" is required',
                        $index,
                        $stepName
                    )
                );
            } elseif (!isset($viewAttribute['label'])) {
                throw new InvalidParameterException(
                    sprintf(
                        'Option "label" at view attribute "%s" of step "%s" is required',
                        $index,
                        $stepName
                    )
                );
            }
            $result[] = $this->passConfiguration($viewAttribute);
        }
        return $result;
    }

    /**
     * @param Attribute[]|Collection $attributes
     * @return array
     */
    protected function setAttributes($attributes)
    {
        $this->attributes = array();
        if ($attributes) {
            foreach ($attributes as $attribute) {
                $this->attributes[$attribute->getName()] = $attribute;
            }
        }
    }

    /**
     * @param array $attributeNames
     * @param string $stepName
     * @throws UnknownAttributeException
     */
    protected function assertAttributesExist(array $attributeNames, $stepName)
    {
        foreach ($attributeNames as $attributeName) {
            $this->assertAttributeExists($attributeName, $stepName);
        }
    }

    /**
     * @param string $attributeName
     * @param string $stepName
     * @throws UnknownAttributeException
     */
    protected function assertAttributeExists($attributeName, $stepName)
    {
        if (!isset($this->attributes[$attributeName])) {
            throw new UnknownAttributeException(
                sprintf('Unknown attribute "%s" at step "%s"', $attributeName, $stepName)
            );
        }
    }
}


text:
**Node.js**
https://nodejs.org/en/
Download & install
then open a terminal and type `npm -v` to verify npm is installed correctly.

## What's in the box
 - SCSS
    - compiled with node-sass
    - minified with clean-css
- JS & ES6, imports & exports
     - compiled with rollup & rollup-babel
     - mifified wih uglify-js
-  A node server
    - for static files
    - livereload with express-livereload

## 1. Installing

Open a terminal at your desired directory
clone the repo
`git clone https://bitbucket.org/idbbn/workflow`

cd to it
`cd workflow`

install
`npm install`

## 2. Structure

```
build/
source/
    css/
        master.css
    js/
        app.js
```
**Where**

 - `.js` files go in the /source/js/ folder
    -  the source `app.js` file & all imports get compiled to `/build/js/bundle.js`
    -  check `rollup.config.js` for options
 - `.scss` files go in the /source/scss/ folder
    -  the source `master.scss` file & all imports get compiled to `/build/css/master.css`

**Static files**
place static files like images or fonts under the `/build/` folder
## 3. Developing

By default the repo has the following npm tasks:

`build-css` - compile the `.scss` files in `/source/css`
`watch-css` - watch `.scss` files - run `build-css` on change
`uglify-js` - uglify the generated js bundle
`watch-js` - watch for a new bundle - run `uglify-js`
`rollup`  compile js - bundle imports & babelify from ES6 to ES5
`server`  run a node express server with livereload
`dev`  run all of the above
`build`  generated minified files

These can be run with `npm run <task-name>`
For development use `npm run dev` and `npm run server`

then open a browser and navigate to `http://localhost:1337`

**For builds**

Run `npm run build` to generate `.min` files

-  use the minified `.min` files
- remove the livereload script `<!-- livereload, remove on production -->`

## 4. Misc

 - The scss folder has bootstrap included
    - check `_bootstrap.scss` form imports, comment out unecessary
- On crash restart the process `npm run dev`

redpajama_set_name: RedPajamaGithub


text:
package org.cactoos.io;

import java.util.LinkedList;
import java.util.List;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
import org.cactoos.text.Joined;
import org.cactoos.text.UncheckedText;

/**
 * Fake handler logger.
 *
 * <p>There is no thread-safety guarantee.
 * @since 0.29
 */
public final class FakeHandler extends Handler {
    /**
     * Lines.
     */
    private final List<String> entries;

    /**
     * Ctor.
     */
    FakeHandler() {
        super();
        this.entries = new LinkedList<>();
    }

    @Override
    public void publish(final LogRecord record) {
        this.entries.add(record.getMessage());
    }

    @Override
    public void close() {
        // Intended empty.
    }

    @Override
    public void flush() {
        // Intended empty.
    }

    @Override
    public String toString() {
        return new UncheckedText(
            new Joined(
                System.lineSeparator(),
                this.entries
            )
        ).asString();
    }
}


text:
/*
 * conf.h
 *
 *  Created on: Apr 3, 2012
 *      Author: abhinavsingh
 */

#ifndef CONF_H_
#define CONF_H_

#include "logger.h"
#include "common.h"

#define WEBSERVER_DEFAULT_PORT     80
#define WEBSERVER_DEFAULT_WORKERS  4

#define MQTT_BROKER_DEFAULT_IP    "192.168.10.238"
#define MQTT_BROKER_DEFAULT_PORT  1883
#define MQTT_BROKER_DEFAULT_KA    182

struct _conf {
	char *ip;
	unsigned short port;
	int workers;
};

void
conf_free(conf *cfg);

conf *
conf_new(char *ip, unsigned short port, int workers);

#endif /* CONF_H_ */


text:
namespace task_manager {

namespace {

base::string16 AdjustTitle(const content::SiteInstance* site_instance) {
  DCHECK(site_instance);

  // By default, subframe rows display the site, like this:
  //     "Subframe: http://example.com/"
  const GURL& site_url = site_instance->GetSiteURL();
  std::string name = site_url.spec();

  // If |site_url| wraps a chrome extension id, we can display the extension
  // name instead, which is more human-readable.
  if (site_url.SchemeIs(extensions::kExtensionScheme)) {
    const extensions::Extension* extension =
        extensions::ExtensionRegistry::Get(site_instance->GetBrowserContext())
            ->enabled_extensions()
            .GetExtensionOrAppByURL(site_url);
    if (extension)
      name = extension->name();
  }

  int message_id = site_instance->GetBrowserContext()->IsOffTheRecord() ?
      IDS_TASK_MANAGER_SUBFRAME_INCOGNITO_PREFIX :
      IDS_TASK_MANAGER_SUBFRAME_PREFIX;
  return l10n_util::GetStringFUTF16(message_id, base::UTF8ToUTF16(name));
}

}  // namespace

SubframeTask::SubframeTask(content::RenderFrameHost* render_frame_host,
                           content::WebContents* web_contents,
                           RendererTask* main_task)
    : RendererTask(AdjustTitle(render_frame_host->GetSiteInstance()),
                   nullptr,
                   web_contents,
                   render_frame_host->GetProcess()),
      main_task_(main_task) {
  // Note that we didn't get the RenderProcessHost from the WebContents, but
  // rather from the RenderFrameHost. Out-of-process iframes reside on
  // different processes than that of their main frame.
}

SubframeTask::~SubframeTask() {
}

void SubframeTask::UpdateTitle() {
  // This will be called when the title changes on the WebContents's main frame,
  // but this Task represents other frames, so we don't care.
}

void SubframeTask::UpdateFavicon() {
  // This will be called when the favicon changes on the WebContents's main
  // frame, but this Task represents other frames, so we don't care.
}

Task* SubframeTask::GetParentTask() const {
  return main_task_;
}

void SubframeTask::Activate() {
  // Activate the root task.
  main_task_->Activate();
}

}  // namespace task_manager


text:
package net.myrrix.common.collection;

import org.apache.commons.math3.random.RandomGenerator;
import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import org.junit.Test;

import java.util.Collection;
import java.util.HashSet;

import net.myrrix.common.MyrrixTest;
import net.myrrix.common.random.RandomManager;

/**
Tests {@link FastIDSet}.
 */
public final class FastIDSetTest extends MyrrixTest {

  @Test
  public void testContainsAndAdd() {
    FastIDSet set = new FastIDSet();
    assertFalse(set.contains(1));
    set.add(1);
    assertTrue(set.contains(1));
  }

  @Test
  public void testRemove() {
    FastIDSet set = new FastIDSet();
    set.add(1);
    set.remove(1);
    assertEquals(0, set.size());
    assertTrue(set.isEmpty());
    assertFalse(set.contains(1));
  }

  @Test
  public void testClear() {
    FastIDSet set = new FastIDSet();
    set.add(1);
    set.clear();
    assertEquals(0, set.size());
    assertTrue(set.isEmpty());
    assertFalse(set.contains(1));
  }

  @Test
  public void testSizeEmpty() {
    FastIDSet set = new FastIDSet();
    assertEquals(0, set.size());
    assertTrue(set.isEmpty());
    set.add(1);
    assertEquals(1, set.size());
    assertFalse(set.isEmpty());
    set.remove(1);
    assertEquals(0, set.size());
    assertTrue(set.isEmpty());
  }

  @Test
  public void testContains() {
    FastIDSet set = buildTestFastSet();
    assertTrue(set.contains(1));
    assertTrue(set.contains(2));
    assertTrue(set.contains(3));
    assertFalse(set.contains(4));
  }

  @Test
  public void testReservedValues() {
    FastIDSet set = new FastIDSet();
    try {
      set.add(Long.MIN_VALUE);
      fail("Should have thrown IllegalArgumentException");
    } catch (IllegalArgumentException iae) {
      // good
    }
    assertFalse(set.contains(Long.MIN_VALUE));
    try {
      set.add(Long.MAX_VALUE);
      fail("Should have thrown IllegalArgumentException");
    } catch (IllegalArgumentException iae) {
      // good
    }
    assertFalse(set.contains(Long.MAX_VALUE));
  }

  @Test
  public void testRehash() {
    FastIDSet set = buildTestFastSet();
    set.remove(1);
    set.rehash();
    assertFalse(set.contains(1));
  }

  @Test
  public void testGrow() {
    FastIDSet set = new FastIDSet(1);
    set.add(1);
    set.add(2);
    assertTrue(set.contains(1));
    assertTrue(set.contains(2));
  }

  @Test
  public void testIterator() {
    FastIDSet set = buildTestFastSet();
    Collection<Long> expected = new HashSet<Long>(3);
    expected.add(1L);
    expected.add(2L);
    expected.add(3L);
    LongPrimitiveIterator it = set.iterator();
    while (it.hasNext()) {
      expected.remove(it.nextLong());
    }
    assertTrue(expected.isEmpty());
  }

  @Test
  public void testVersusHashSet() {
    FastIDSet actual = new FastIDSet(1);
    Collection<Integer> expected = new HashSet<Integer>(1000000);
    RandomGenerator r = RandomManager.getRandom();
    for (int i = 0; i < 1000000; i++) {
      double d = r.nextDouble();
      Integer key = r.nextInt(100);
      if (d < 0.4) {
        assertEquals(expected.contains(key), actual.contains(key));
      } else {
        if (d < 0.7) {
          assertEquals(expected.add(key), actual.add(key));
        } else {
          assertEquals(expected.remove(key), actual.remove(key));
        }
        assertEquals(expected.size(), actual.size());
        assertEquals(expected.isEmpty(), actual.isEmpty());
      }
    }
  }

  private static FastIDSet buildTestFastSet() {
    FastIDSet set = new FastIDSet();
    set.add(1);
    set.add(2);
    set.add(3);
    return set;
  }

}


text:
layout: post
title:  Global HTTP Session Sharing
categories: SBP
parent: solutions.html
weight: 200
---

{% include /xap97common/global-http-session-sharing.markdown %}


text:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.5">
<title>git-revert(1)</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
/* Remove comment around @import statement below when using as a custom stylesheet */
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
audio,canvas,video{display:inline-block}
audio:not([controls]){display:none;height:0}
[hidden],template{display:none}
script{display:none!important}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
a{background:transparent}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
abbr[title]{border-bottom:1px dotted}
b,strong{font-weight:bold}
dfn{font-style:italic}
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.center{margin-left:auto;margin-right:auto}
.spread{width:100%}
p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:none}
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.no-bullet{list-style:none}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
abbr{text-transform:none}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
blockquote cite:before{content:"\2014 \0020"}
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
table thead,table tfoot{background:#f7f8f7;font-weight:bold}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
.clearfix:after,.float-group:after{clear:both}
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
*:not(pre)>code.nobreak{word-wrap:normal}
*:not(pre)>code.nowrap{white-space:nowrap}
pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menu{color:rgba(0,0,0,.8)}
b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
b.button:before{content:"[";padding:0 3px 0 2px}
b.button:after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
#content{margin-top:1.25em}
#content:before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span:before{content:"\00a0\2013\00a0"}
#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark:before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber:after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
.sect1{padding-bottom:.625em}
@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
.sect1+.sect1{border-top:1px solid #efefed}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.listingblock>.content{position:relative}
.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
.listingblock:hover code[data-lang]:before{display:block}
.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
table.pyhltable td.code{padding-left:.75em;padding-right:0}
pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
pre.pygments .lineno{display:inline-block;margin-right:.25em}
table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
.quoteblock .quoteblock blockquote:before{display:none}
.verseblock{margin:0 1em 1.25em 1em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
table.tableblock{max-width:100%;border-collapse:separate}
table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0}
table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0}
table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0}
table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0}
table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0}
table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0}
table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0}
table.frame-all{border-width:1px}
table.frame-sides{border-width:0 1px}
table.frame-topbot{border-width:1px 0}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
td>div.verse{white-space:pre}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none}
ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em}
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em}
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px}
ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
ul.inline>li>*{display:block}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist>table tr>td:first-of-type{padding:0 .75em;line-height:1}
.colist>table tr>td:last-of-type{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.gist .file-data>table td.line-data{width:99%}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background-color:#00fafa}
.black{color:#000}
.black-background{background-color:#000}
.blue{color:#0000bf}
.blue-background{background-color:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background-color:#fa00fa}
.gray{color:#606060}
.gray-background{background-color:#7d7d7d}
.green{color:#006000}
.green-background{background-color:#007d00}
.lime{color:#00bf00}
.lime-background{background-color:#00fa00}
.maroon{color:#600000}
.maroon-background{background-color:#7d0000}
.navy{color:#000060}
.navy-background{background-color:#00007d}
.olive{color:#606000}
.olive-background{background-color:#7d7d00}
.purple{color:#600060}
.purple-background{background-color:#7d007d}
.red{color:#bf0000}
.red-background{background-color:#fa0000}
.silver{color:#909090}
.silver-background{background-color:#bcbcbc}
.teal{color:#006060}
.teal-background{background-color:#007d7d}
.white{color:#bfbfbf}
.white-background{background-color:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background-color:#fafa00}
span.icon>.fa{cursor:default}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]:after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@media print{@page{margin:1.25cm .75cm}
*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]:after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
.sect1{padding-bottom:0!important}
.sect1+.sect1{border:0!important}
#header>h1:first-child{margin-top:1.25rem}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span:before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]:before{display:block}
#footer{background:none!important;padding:0 .9375em}
#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
</style>
</head>
<body class="manpage">
<div id="header">
<h1>git-revert(1) Manual Page</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-revert - Revert some existing commits</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>git revert</em> [--[no-]edit] [-n] [-m parent-number] [-s] [-S[<keyid>]] <commit>…
<em>git revert</em> --continue
<em>git revert</em> --quit
<em>git revert</em> --abort</pre>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Given one or more existing commits, revert the changes that the
related patches introduce, and record some new commits that record
them.  This requires your working tree to be clean (no modifications
from the HEAD commit).</p>
</div>
<div class="paragraph">
<p>Note: <em>git revert</em> is used to record some new commits to reverse the
effect of some earlier commits (often only a faulty one).  If you want to
throw away all uncommitted changes in your working directory, you
should see <a href="git-reset.html">git-reset</a>(1), particularly the <code>--hard</code> option.  If
you want to extract specific files as they were in another commit, you
should see <a href="git-checkout.html">git-checkout</a>(1), specifically the <code>git checkout
<commit> -- <filename></code> syntax.  Take care with these alternatives as
both will discard uncommitted changes in your working directory.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist">
<dl>
<dt class="hdlist1"><commit>…</dt>
<dd>
<p>Commits to revert.
For a more complete list of ways to spell commit names, see
<a href="gitrevisions.html">gitrevisions</a>(7).
Sets of commits can also be given but no traversal is done by
default, see <a href="git-rev-list.html">git-rev-list</a>(1) and its <code>--no-walk</code>
option.</p>
</dd>
<dt class="hdlist1">-e</dt>
<dt class="hdlist1">--edit</dt>
<dd>
<p>With this option, <em>git revert</em> will let you edit the commit
message prior to committing the revert. This is the default if
you run the command from a terminal.</p>
</dd>
<dt class="hdlist1">-m parent-number</dt>
<dt class="hdlist1">--mainline parent-number</dt>
<dd>
<p>Usually you cannot revert a merge because you do not know which
side of the merge should be considered the mainline.  This
option specifies the parent number (starting from 1) of
the mainline and allows revert to reverse the change
relative to the specified parent.</p>
<div class="paragraph">
<p>Reverting a merge commit declares that you will never want the tree changes
brought in by the merge.  As a result, later merges will only bring in tree
changes introduced by commits that are not ancestors of the previously
reverted merge.  This may or may not be what you want.</p>
</div>
<div class="paragraph">
<p>See the <a href="howto/revert-a-faulty-merge.html">revert-a-faulty-merge How-To</a> for
more details.</p>
</div>
</dd>
<dt class="hdlist1">--no-edit</dt>
<dd>
<p>With this option, <em>git revert</em> will not start the commit
message editor.</p>
</dd>
<dt class="hdlist1">-n</dt>
<dt class="hdlist1">--no-commit</dt>
<dd>
<p>Usually the command automatically creates some commits with
commit log messages stating which commits were
reverted.  This flag applies the changes necessary
to revert the named commits to your working tree
and the index, but does not make the commits.  In addition,
when this option is used, your index does not have to match
the HEAD commit.  The revert is done against the
beginning state of your index.</p>
<div class="paragraph">
<p>This is useful when reverting more than one commits'
effect to your index in a row.</p>
</div>
</dd>
<dt class="hdlist1">-S[<keyid>]</dt>
<dt class="hdlist1">--gpg-sign[=<keyid>]</dt>
<dd>
<p>GPG-sign commits. The <code>keyid</code> argument is optional and
defaults to the committer identity; if specified, it must be
stuck to the option without a space.</p>
</dd>
<dt class="hdlist1">-s</dt>
<dt class="hdlist1">--signoff</dt>
<dd>
<p>Add Signed-off-by line at the end of the commit message.
See the signoff option in <a href="git-commit.html">git-commit</a>(1) for more information.</p>
</dd>
<dt class="hdlist1">--strategy=<strategy></dt>
<dd>
<p>Use the given merge strategy.  Should only be used once.
See the MERGE STRATEGIES section in <a href="git-merge.html">git-merge</a>(1)
for details.</p>
</dd>
<dt class="hdlist1">-X<option></dt>
<dt class="hdlist1">--strategy-option=<option></dt>
<dd>
<p>Pass the merge strategy-specific option through to the
merge strategy.  See <a href="git-merge.html">git-merge</a>(1) for details.</p>
</dd>
</dl>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_sequencer_subcommands">SEQUENCER SUBCOMMANDS</h2>
<div class="sectionbody">
<div class="dlist">
<dl>
<dt class="hdlist1">--continue</dt>
<dd>
<p>Continue the operation in progress using the information in
<em>.git/sequencer</em>.  Can be used to continue after resolving
conflicts in a failed cherry-pick or revert.</p>
</dd>
<dt class="hdlist1">--quit</dt>
<dd>
<p>Forget about the current operation in progress.  Can be used
to clear the sequencer state after a failed cherry-pick or
revert.</p>
</dd>
<dt class="hdlist1">--abort</dt>
<dd>
<p>Cancel the operation and return to the pre-sequence state.</p>
</dd>
</dl>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_examples">EXAMPLES</h2>
<div class="sectionbody">
<div class="dlist">
<dl>
<dt class="hdlist1"><code>git revert HEAD~3</code></dt>
<dd>
<p>Revert the changes specified by the fourth last commit in HEAD
and create a new commit with the reverted changes.</p>
</dd>
<dt class="hdlist1"><code>git revert -n master~5..master~2</code></dt>
<dd>
<p>Revert the changes done by commits from the fifth last commit
in master (included) to the third last commit in master
(included), but do not create any commit with the reverted
changes. The revert only modifies the working tree and the
index.</p>
</dd>
</dl>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph">
<p><a href="git-cherry-pick.html">git-cherry-pick</a>(1)</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_git">GIT</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Part of the <a href="git.html">git</a>(1) suite</p>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2017-06-26 14:52:01 W. Europe Daylight Time
</div>
</div>
</body>
</html>


text:
<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Bazaars - Member Management</title>

    <link href="../_css/plugcss/bootstrap.min.css" rel="stylesheet">

    <link href="../plugin/sb-admin2/bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet">

    <link href="../plugin/sb-admin2/dist/css/sb-admin-2.css" rel="stylesheet">
	<link href="_css/chosen.css" rel="stylesheet"/>

    <link href="../plugin/sb-admin2/bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">

                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    Toggle navigation

                </button>
                Bazaars 會員管理後台 (Member Management)

                     Hi, Member

                             個人資料編輯

                             登出 Log Out

選單列表 Menu List

                             主頁 Dashboard

                             農友 Farmer

                             店家 Store

                             即時通

                                    活動報報

                                    小農應援團

                             前台檢視

農友 Farmer

                            <form role="form" class="form_saveFarmer">

									<input class="bind_act" type='hidden' name='act' value='farmer_prcAdd' />
									<input class="bind_foodItem" type='hidden' name='foodItem' value='' />
									<input class="bind_storeItem" type='hidden' name='storeItem' value='' />
									<input class="bind_farmerId" type='hidden' name='farmerId' value='' />

											姓名 Name
											<input class="form-control bind_farmerName" name="farmerName" placeholder="請輸入姓名..." tabindex="1">

											手機 Mobile
											1

													<input autocomplete="off" class="form-control input bind_phone" id="phone-field1" name="phone[]" type="text" placeholder="請輸入手機號碼..." tabindex="2" value="" />

													<button id="b1" class="btn phone-add-more" type="button">+</button>

											電子信箱 E-mail
											1

													<input autocomplete="off" class="form-control input bind_email" id="email-field1" name="email[]" type="text" placeholder="email@example.com" tabindex="3" value="" />

													<button id="b1" class="btn email-add-more" type="button">+</button>

											農友地址 Address

<select name="city" class="bind_city view_citySelectList"></select>
											<select name="town" class="bind_town view_townSelectList"></select>

<input class="form-control bind_address" name="address" placeholder="請輸入地址..." tabindex="4">

											個人網頁 Personal Homepage
											1

													<input autocomplete="off" class="form-control input bind_link" id="link-field1" name="link[]" type="text" placeholder="http://www.facebook.com/example" tabindex="5" value="" />

													<input autocomplete="off" class="form-control input bind_linkDesc" id="linkDesc-field1" name="linkDesc[]" type="text" placeholder="請填寫網頁說明..." tabindex="6" value="" />

													<button id="b1" class="btn link-add-more" type="button">+</button>

											簡介 Introduction
											<textarea class="form-control bind_content" name="content" rows="6" placeholder="請輸入說明內文..." tabindex="7"></textarea>

品項 Items

											請選擇農友品項
											<select data-placeholder="請選擇農友品項" class="form-control foodItem" multiple tabindex="7"></select>

店家 Store

											請選擇店家
											<select data-placeholder="請選擇店家" class="form-control storeItem" multiple tabindex="8"></select>

                                        詳細內容 Detail
                                        <textarea name="detail" id="detail" class="bind_detail"></textarea>

                                    <button type="button" class="btn btn-default aj_saveFarmer" tabindex="9">送出 Submit</button>
                                    <button type="reset" class="btn btn-default" tabindex="10">清除 Reset</button>

                            </form>


text:
using ControlePontos.Dominio.Model;
using ControlePontos.Dominio.Model.Configuracao;
using System;
using System.Drawing;

namespace ControlePontos.Control
{
    internal class DiaTrabalhoColumnConfiguracao
    {
        public bool SempreReadOnly { get; set; }
        public string Formato { get; set; }
        public Func<object, string> Formatador { get; set; }
        public Func<ConfiguracaoApp, DiaTrabalho, object, Color?> Colorizador { get; set; }
        public Type Tipo { get; set; }
    }
}


text:
import flattenQueryParams from 'dummy/utils/flatten-query-params';
import { module, test } from 'qunit';

module('Unit | Utility | flatten query params');

test('does not alter a simple object', function(assert) {
  const object = { foo: 'bar' };
  const result = flattenQueryParams(object);
  assert.deepEqual(object, result);
});

test('can flatten a simple nested query', function(assert) {
  const object = { filter: { foo: 'bar' } };
  const result = flattenQueryParams(object);
  assert.deepEqual(result, { 'filter[foo]': 'bar' });
});


text:
template <class T>
class IConstIterator
{
public:
    virtual
    ~IConstIterator()
    {
    }

    virtual
    bool MoveNext() = 0;

    virtual
    T Current() = 0;
};

template <class T>
class ConstIterator : public virtual IConstIterator<T>
{
public:
    ConstIterator()
    {
    }

    explicit ConstIterator(RefCountedPtr<IConstIterator<T> > spIterator)
        : m_spIterator(spIterator)
    {

    }

    template <class U>
    ConstIterator(const U& it)
    {
        m_spIterator.Attach(new (zeromemory) U(it));
    }

    virtual __override
    bool MoveNext()
    {
        if ( m_spIterator)
        {
            return m_spIterator->MoveNext();
        }
        else
        {
            // NULL is used to represent an empty iterator
            return false;
        }
    }

    virtual __override
    T Current()
    {
        ThrowIfFalse2(m_spIterator, "Calling current on a NULL iterator");
        return m_spIterator->Current();
    }

private:

    // Allow default copy constructor and assignment operators to
    // be generated because RefCountedPtr is copy safe
    RefCountedPtr<IConstIterator<T> > m_spIterator;
};


text:
import $ from "jquery";

class MobileMenu {
	constructor(){
		this.siteHeader = $(".site-header");
		this.menuIcon = $(".site-header__menu-icon");
		this.menuContent = $(".site-header__menu-content");
		this.events();
	}

	events() {
		this.menuIcon.click(this.toggleTheMenu.bind(this));
	}

	toggleTheMenu() {
		this.menuContent.toggleClass("site-header__menu-content--is-visable");
		this.siteHeader.toggleClass("site-header--is-expanded");
		this.menuIcon.toggleClass("site-header__menu-icon--close-x");
	}
}

export default MobileMenu;


text:
package com.alibaba.druid.pool;

import com.alibaba.druid.util.jdbc.ResultSetMetaDataBase;

import java.util.List;

/**
 * Created by allwefantasy on 8/31/16.
 */
public class ElasticSearchResultSetMetaDataBase extends ResultSetMetaDataBase {

    public ElasticSearchResultSetMetaDataBase(List<String> headers) {
        ColumnMetaData columnMetaData;
        for (String column : headers) {
            columnMetaData = new ColumnMetaData();
            columnMetaData.setColumnLabel(column);
            columnMetaData.setColumnName(column);
            getColumns().add(columnMetaData);
        }
    }

}


text:
// Copyright 2013 The Changkong Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package alipy

import (
	"github.com/yaofangou/open_taobao"
)

/* 创建生活账单 */
type AlipayEbppBillAddRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 如果传入调用api有淘宝授权的session可以不传这个字段 */
func (r *AlipayEbppBillAddRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 账单的账期,例如201203表示2012年3月的账单。 */
func (r *AlipayEbppBillAddRequest) SetBillDate(value string) {
	r.SetValue("bill_date", value)
}

/* 账单单据号,例如水费单号,手机号,电费号,信用卡卡号。没有唯一性要求。 */
func (r *AlipayEbppBillAddRequest) SetBillKey(value string) {
	r.SetValue("bill_key", value)
}

/* 支付宝给每个出账机构指定了一个对应的英文短名称来唯一表示该收费单位。 */
func (r *AlipayEbppBillAddRequest) SetChargeInst(value string) {
	r.SetValue("charge_inst", value)
}

/* 输出机构的业务流水号,需要保证唯一性。 */
func (r *AlipayEbppBillAddRequest) SetMerchantOrderNo(value string) {
	r.SetValue("merchant_order_no", value)
}

/* 用户的手机号 */
func (r *AlipayEbppBillAddRequest) SetMobile(value string) {
	r.SetValue("mobile", value)
}

/* 支付宝订单类型。公共事业缴纳JF,信用卡还款HK */
func (r *AlipayEbppBillAddRequest) SetOrderType(value string) {
	r.SetValue("order_type", value)
}

/* 拥有该账单的用户姓名 */
func (r *AlipayEbppBillAddRequest) SetOwnerName(value string) {
	r.SetValue("owner_name", value)
}

/* 缴费金额。用户支付的总金额。单位为:RMB Yuan。取值范围为[0.01,100000000.00],精确到小数点后两位。 */
func (r *AlipayEbppBillAddRequest) SetPayAmount(value string) {
	r.SetValue("pay_amount", value)
}

/* 账单的服务费。 */
func (r *AlipayEbppBillAddRequest) SetServiceAmount(value string) {
	r.SetValue("service_amount", value)
}

/* 子业务类型是业务类型的下一级概念,例如:WATER表示JF下面的水费,ELECTRIC表示JF下面的电费,GAS表示JF下面的燃气费。 */
func (r *AlipayEbppBillAddRequest) SetSubOrderType(value string) {
	r.SetValue("sub_order_type", value)
}

/* 交通违章地点,sub_order_type=TRAFFIC时填写。 */
func (r *AlipayEbppBillAddRequest) SetTrafficLocation(value string) {
	r.SetValue("traffic_location", value)
}

/* 违章行为,sub_order_type=TRAFFIC时填写。 */
func (r *AlipayEbppBillAddRequest) SetTrafficRegulations(value string) {
	r.SetValue("traffic_regulations", value)
}

func (r *AlipayEbppBillAddRequest) GetResponse(accessToken string) (*AlipayEbppBillAddResponse, []byte, error) {
	var resp AlipayEbppBillAddResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.ebpp.bill.add", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayEbppBillAddResponse struct {
	AlipayOrderNo   string `json:"alipay_order_no"`
	BillDate        string `json:"bill_date"`
	BillKey         string `json:"bill_key"`
	ChargeInst      string `json:"charge_inst"`
	ChargeInstName  string `json:"charge_inst_name"`
	MerchantOrderNo string `json:"merchant_order_no"`
	OrderType       string `json:"order_type"`
	OwnerName       string `json:"owner_name"`
	PayAmount       string `json:"pay_amount"`
	ServiceAmount   string `json:"service_amount"`
	SubOrderType    string `json:"sub_order_type"`
}

type AlipayEbppBillAddResponseResult struct {
	Response *AlipayEbppBillAddResponse `json:"alipay_ebpp_bill_add_response"`
}

/* 查询生活账单信息 */
type AlipayEbppBillGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝授权凭证,如果有淘宝的session可以不传 */
func (r *AlipayEbppBillGetRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 输出机构的业务流水号,需要保证唯一性。 */
func (r *AlipayEbppBillGetRequest) SetMerchantOrderNo(value string) {
	r.SetValue("merchant_order_no", value)
}

/* 支付宝订单类型。公共事业缴纳JF,信用卡还款HK */
func (r *AlipayEbppBillGetRequest) SetOrderType(value string) {
	r.SetValue("order_type", value)
}

func (r *AlipayEbppBillGetRequest) GetResponse(accessToken string) (*AlipayEbppBillGetResponse, []byte, error) {
	var resp AlipayEbppBillGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.ebpp.bill.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayEbppBillGetResponse struct {
	AlipayOrderNo      string  `json:"alipay_order_no"`
	BillDate           string  `json:"bill_date"`
	BillKey            string  `json:"bill_key"`
	ChargeInst         string  `json:"charge_inst"`
	ChargeInstName     string  `json:"charge_inst_name"`
	MerchantOrderNo    string  `json:"merchant_order_no"`
	OrderStatus        string  `json:"order_status"`
	OrderType          string  `json:"order_type"`
	OwnerName          string  `json:"owner_name"`
	PayAmount          float64 `json:"pay_amount"`
	ServiceAmount      float64 `json:"service_amount"`
	SubOrderType       string  `json:"sub_order_type"`
	TrafficLocation    string  `json:"traffic_location"`
	TrafficRegulations string  `json:"traffic_regulations"`
}

type AlipayEbppBillGetResponseResult struct {
	Response *AlipayEbppBillGetResponse `json:"alipay_ebpp_bill_get_response"`
}

/* 对生活账单进行支付接口 */
type AlipayEbppBillPayRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝的业务订单号,具有唯一性。 */
func (r *AlipayEbppBillPayRequest) SetAlipayOrderNo(value string) {
	r.SetValue("alipay_order_no", value)
}

/* 如有有淘宝授权的session可以不传这个字段 */
func (r *AlipayEbppBillPayRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 输出机构的业务流水号,需要保证唯一性。 */
func (r *AlipayEbppBillPayRequest) SetMerchantOrderNo(value string) {
	r.SetValue("merchant_order_no", value)
}

/* 支付宝订单类型。公共事业缴纳JF,信用卡还款HK */
func (r *AlipayEbppBillPayRequest) SetOrderType(value string) {
	r.SetValue("order_type", value)
}

func (r *AlipayEbppBillPayRequest) GetResponse(accessToken string) (*AlipayEbppBillPayResponse, []byte, error) {
	var resp AlipayEbppBillPayResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.ebpp.bill.pay", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayEbppBillPayResponse struct {
	AlipayOrderNo   string `json:"alipay_order_no"`
	MerchantOrderNo string `json:"merchant_order_no"`
	OrderType       string `json:"order_type"`
}

type AlipayEbppBillPayResponseResult struct {
	Response *AlipayEbppBillPayResponse `json:"alipay_ebpp_bill_pay_response"`
}

/* 创建账单之后,调用此API返回一个用户自己去收银台付款的URL,用户去收银台页面完成付款操作。 */
type AlipayEbppBillPayurlGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝的业务订单号,具有唯一性。 */
func (r *AlipayEbppBillPayurlGetRequest) SetAlipayOrderNo(value string) {
	r.SetValue("alipay_order_no", value)
}

/* 如有有淘宝授权的session可以不传这个字段 */
func (r *AlipayEbppBillPayurlGetRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 输出机构的业务流水号,需要保证唯一性。 */
func (r *AlipayEbppBillPayurlGetRequest) SetMerchantOrderNo(value string) {
	r.SetValue("merchant_order_no", value)
}

/* 支付宝订单类型。公共事业缴纳JF,信用卡还款HK。 */
func (r *AlipayEbppBillPayurlGetRequest) SetOrderType(value string) {
	r.SetValue("order_type", value)
}

func (r *AlipayEbppBillPayurlGetRequest) GetResponse(accessToken string) (*AlipayEbppBillPayurlGetResponse, []byte, error) {
	var resp AlipayEbppBillPayurlGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.ebpp.bill.payurl.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayEbppBillPayurlGetResponse struct {
	PayUrl string `json:"pay_url"`
}

type AlipayEbppBillPayurlGetResponseResult struct {
	Response *AlipayEbppBillPayurlGetResponse `json:"alipay_ebpp_bill_payurl_get_response"`
}

/* 创建并支付冻结单之后,使用此接口获取有密支付的url
这个接口调用的前提是创建冻结金的参数信息pay_confirm=PAY_PASSWORD */
type AlipayMicropayOrderConfirmpayurlGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝订单号,冻结流水号.这个是创建冻结订单支付宝返回的 */
func (r *AlipayMicropayOrderConfirmpayurlGetRequest) SetAlipayOrderNo(value string) {
	r.SetValue("alipay_order_no", value)
}

/* 支付金额,区间必须在[0.01,30],只能保留小数点后两位 */
func (r *AlipayMicropayOrderConfirmpayurlGetRequest) SetAmount(value string) {
	r.SetValue("amount", value)
}

/* 支付宝用户给应用的授权. */
func (r *AlipayMicropayOrderConfirmpayurlGetRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 支付备注 */
func (r *AlipayMicropayOrderConfirmpayurlGetRequest) SetMemo(value string) {
	r.SetValue("memo", value)
}

/* 收款方的支付宝ID */
func (r *AlipayMicropayOrderConfirmpayurlGetRequest) SetReceiveUserId(value string) {
	r.SetValue("receive_user_id", value)
}

/* 本次转账的外部单据号(只能由字母和数字组成,maxlength=32) */
func (r *AlipayMicropayOrderConfirmpayurlGetRequest) SetTransferOutOrderNo(value string) {
	r.SetValue("transfer_out_order_no", value)
}

func (r *AlipayMicropayOrderConfirmpayurlGetRequest) GetResponse(accessToken string) (*AlipayMicropayOrderConfirmpayurlGetResponse, []byte, error) {
	var resp AlipayMicropayOrderConfirmpayurlGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.micropay.order.confirmpayurl.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayMicropayOrderConfirmpayurlGetResponse struct {
	SinglePayDetail *SinglePayDetail `json:"single_pay_detail"`
}

type AlipayMicropayOrderConfirmpayurlGetResponseResult struct {
	Response *AlipayMicropayOrderConfirmpayurlGetResponse `json:"alipay_micropay_order_confirmpayurl_get_response"`
}

/* 1.	创建并支付一笔冻结金后,调用此接口
2.	这个接口调用的前提是创建冻结金的参数信息pay_confirm=NO_CONFIRM */
type AlipayMicropayOrderDirectPayRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝订单号,冻结流水号.这个是创建冻结订单支付宝返回的 */
func (r *AlipayMicropayOrderDirectPayRequest) SetAlipayOrderNo(value string) {
	r.SetValue("alipay_order_no", value)
}

/* 支付金额,区间必须在[0.01,30],只能保留小数点后两位 */
func (r *AlipayMicropayOrderDirectPayRequest) SetAmount(value string) {
	r.SetValue("amount", value)
}

/* 支付宝给应用的授权 */
func (r *AlipayMicropayOrderDirectPayRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 支付备注 */
func (r *AlipayMicropayOrderDirectPayRequest) SetMemo(value string) {
	r.SetValue("memo", value)
}

/* 收款方的支付宝ID */
func (r *AlipayMicropayOrderDirectPayRequest) SetReceiveUserId(value string) {
	r.SetValue("receive_user_id", value)
}

/* 本次转账的外部单据号(只能由字母和数字组成,maxlength=32 */
func (r *AlipayMicropayOrderDirectPayRequest) SetTransferOutOrderNo(value string) {
	r.SetValue("transfer_out_order_no", value)
}

func (r *AlipayMicropayOrderDirectPayRequest) GetResponse(accessToken string) (*AlipayMicropayOrderDirectPayResponse, []byte, error) {
	var resp AlipayMicropayOrderDirectPayResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.micropay.order.direct.pay", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayMicropayOrderDirectPayResponse struct {
	SinglePayDetail *SinglePayDetail `json:"single_pay_detail"`
}

type AlipayMicropayOrderDirectPayResponseResult struct {
	Response *AlipayMicropayOrderDirectPayResponse `json:"alipay_micropay_order_direct_pay_response"`
}

/* 该接口是支付宝提成冻结支付宝资金的操作 */
type AlipayMicropayOrderFreezeRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 需要冻结金额,[0.01,2000],必须是正数,最多只能保留小数点两位,单位是元 */
func (r *AlipayMicropayOrderFreezeRequest) SetAmount(value string) {
	r.SetValue("amount", value)
}

/* 支付宝用户给应用的授权. */
func (r *AlipayMicropayOrderFreezeRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 冻结资金的到期时间,超过此日期,冻结金会自动解冻,时间要求是:[当前时间+24h,订购时间-8h] . */
func (r *AlipayMicropayOrderFreezeRequest) SetExpireTime(value string) {
	r.SetValue("expire_time", value)
}

/* 冻结备注,maxLength=40 */
func (r *AlipayMicropayOrderFreezeRequest) SetMemo(value string) {
	r.SetValue("memo", value)
}

/* 商户订单号,只能由字母和数字组成,最大长度32.此外部订单号与支付宝的冻结订单号对应,注意 应用id和订购者id和外部订单号必须保证唯一性。 */
func (r *AlipayMicropayOrderFreezeRequest) SetMerchantOrderNo(value string) {
	r.SetValue("merchant_order_no", value)
}

/* 在解冻转账的时候的支付方式:
NO_CONFIRM:不需要付款确认,调用接口直接扣款
PAY_PASSWORD:
在转账需要付款方用支付密码确认,才可以转账成功 */
func (r *AlipayMicropayOrderFreezeRequest) SetPayConfirm(value string) {
	r.SetValue("pay_confirm", value)
}

func (r *AlipayMicropayOrderFreezeRequest) GetResponse(accessToken string) (*AlipayMicropayOrderFreezeResponse, []byte, error) {
	var resp AlipayMicropayOrderFreezeResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.micropay.order.freeze", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayMicropayOrderFreezeResponse struct {
	MicroPayOrderDetail *MicroPayOrderDetail `json:"micro_pay_order_detail"`
}

type AlipayMicropayOrderFreezeResponseResult struct {
	Response *AlipayMicropayOrderFreezeResponse `json:"alipay_micropay_order_freeze_response"`
}

/* 用户创建一笔支付订单之后,使用此接口获取支付冻结金的url来支付冻结金 */
type AlipayMicropayOrderFreezepayurlGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 冻结订单号,创建冻结订单时支付宝返回的 */
func (r *AlipayMicropayOrderFreezepayurlGetRequest) SetAlipayOrderNo(value string) {
	r.SetValue("alipay_order_no", value)
}

/* 支付宝用户给应用的授权。 */
func (r *AlipayMicropayOrderFreezepayurlGetRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

func (r *AlipayMicropayOrderFreezepayurlGetRequest) GetResponse(accessToken string) (*AlipayMicropayOrderFreezepayurlGetResponse, []byte, error) {
	var resp AlipayMicropayOrderFreezepayurlGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.micropay.order.freezepayurl.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayMicropayOrderFreezepayurlGetResponse struct {
	PayFreezeUrl string `json:"pay_freeze_url"`
}

type AlipayMicropayOrderFreezepayurlGetResponseResult struct {
	Response *AlipayMicropayOrderFreezepayurlGetResponse `json:"alipay_micropay_order_freezepayurl_get_response"`
}

/* 用户对已经冻结的订单可以调用此接口查询明细 */
type AlipayMicropayOrderGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝订单号,冻结流水号(创建冻结订单返回) */
func (r *AlipayMicropayOrderGetRequest) SetAlipayOrderNo(value string) {
	r.SetValue("alipay_order_no", value)
}

/* 支付宝用户给应用的授权. */
func (r *AlipayMicropayOrderGetRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

func (r *AlipayMicropayOrderGetRequest) GetResponse(accessToken string) (*AlipayMicropayOrderGetResponse, []byte, error) {
	var resp AlipayMicropayOrderGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.micropay.order.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayMicropayOrderGetResponse struct {
	MicroPayOrderDetail *MicroPayOrderDetail `json:"micro_pay_order_detail"`
}

type AlipayMicropayOrderGetResponseResult struct {
	Response *AlipayMicropayOrderGetResponse `json:"alipay_micropay_order_get_response"`
}

/* 解冻冻结单API */
type AlipayMicropayOrderUnfreezeRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 冻结资金流水号,在创建资金订单时支付宝返回的流水号 */
func (r *AlipayMicropayOrderUnfreezeRequest) SetAlipayOrderNo(value string) {
	r.SetValue("alipay_order_no", value)
}

/* 支付宝用户给应用的授权. */
func (r *AlipayMicropayOrderUnfreezeRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 冻结备注 */
func (r *AlipayMicropayOrderUnfreezeRequest) SetMemo(value string) {
	r.SetValue("memo", value)
}

func (r *AlipayMicropayOrderUnfreezeRequest) GetResponse(accessToken string) (*AlipayMicropayOrderUnfreezeResponse, []byte, error) {
	var resp AlipayMicropayOrderUnfreezeResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.micropay.order.unfreeze", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayMicropayOrderUnfreezeResponse struct {
	UnfreezeOrderDetail *UnfreezeOrderDetail `json:"unfreeze_order_detail"`
}

type AlipayMicropayOrderUnfreezeResponseResult struct {
	Response *AlipayMicropayOrderUnfreezeResponse `json:"alipay_micropay_order_unfreeze_response"`
}

/* 查询已采购的集分宝余额,操作流程如下:
1、申请支付宝增值包。
2、申请支付宝应用上线时选择集分宝API。
3、引导商家签约支付宝集分宝服务,地址为https://openapi.alipay.com/subscribe.htm?id=应用ID。
4、引导商家对授予支付宝集分宝发放权限,地址为https://openauth.alipay.com/oauth2/authorize.htm?scope=p&client_id=应用ID
5、引导授权的商家采购集分宝,地址为https://jf.alipay.com/aop/purchase.htm,进行集分宝采购。
6、商家采购之后可以通过集分宝余额API(alipay.point.budget.get)查询商家的集分宝数量。 */
type AlipayPointBudgetGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝给用户的授权。如果没有top的授权,这个字段是必填项 */
func (r *AlipayPointBudgetGetRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

func (r *AlipayPointBudgetGetRequest) GetResponse(accessToken string) (*AlipayPointBudgetGetResponse, []byte, error) {
	var resp AlipayPointBudgetGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.point.budget.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayPointBudgetGetResponse struct {
	BudgetAmount int `json:"budget_amount"`
}

type AlipayPointBudgetGetResponseResult struct {
	Response *AlipayPointBudgetGetResponse `json:"alipay_point_budget_get_response"`
}

/* 向用户发送集分宝,发放集分宝之前,操作流程如下:
1、申请支付宝增值包。
2、申请支付宝应用上线时选择集分宝API。
3、引导商家签约支付宝集分宝服务,地址为https://openapi.alipay.com/subscribe.htm?id=应用ID。
4、引导商家对授予支付宝集分宝发放权限,地址为https://openauth.alipay.com/oauth2/authorize.htm?scope=p&client_id=应用ID
5、引导授权的商家采购集分宝,地址为https://jf.alipay.com/aop/purchase.htm,进行集分宝采购。
6、商家采购之后可以通过集分宝余额API(alipay.point.budget.get)查询商家的集分宝数量。
7、调用发放API(alipay.point.order.add)发放集分宝。 */
type AlipayPointOrderAddRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝用户给应用发放集分宝的授权。 */
func (r *AlipayPointOrderAddRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 向用户展示集分宝发放备注 */
func (r *AlipayPointOrderAddRequest) SetMemo(value string) {
	r.SetValue("memo", value)
}

/* isv提供的发放号订单号,由数字和组成,最大长度为32为,需要保证每笔发放的唯一性,支付宝会对该参数做唯一性控制。如果使用同样的订单号,支付宝将返回订单号已经存在的错误 */
func (r *AlipayPointOrderAddRequest) SetMerchantOrderNo(value string) {
	r.SetValue("merchant_order_no", value)
}

/* 发放集分宝时间 */
func (r *AlipayPointOrderAddRequest) SetOrderTime(value string) {
	r.SetValue("order_time", value)
}

/* 发放集分宝的数量 */
func (r *AlipayPointOrderAddRequest) SetPointCount(value string) {
	r.SetValue("point_count", value)
}

/* 用户标识符,用于指定集分宝发放的用户,和user_symbol_type一起使用,确定一个唯一的支付宝用户 */
func (r *AlipayPointOrderAddRequest) SetUserSymbol(value string) {
	r.SetValue("user_symbol", value)
}

/* 用户标识符类型,现在支持ALIPAY_USER_ID:表示支付宝用户ID,ALIPAY_LOGON_ID:表示支付宝登陆号 */
func (r *AlipayPointOrderAddRequest) SetUserSymbolType(value string) {
	r.SetValue("user_symbol_type", value)
}

func (r *AlipayPointOrderAddRequest) GetResponse(accessToken string) (*AlipayPointOrderAddResponse, []byte, error) {
	var resp AlipayPointOrderAddResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.point.order.add", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayPointOrderAddResponse struct {
	AlipayOrderNo string `json:"alipay_order_no"`
	ResultCode    bool   `json:"result_code"`
}

type AlipayPointOrderAddResponseResult struct {
	Response *AlipayPointOrderAddResponse `json:"alipay_point_order_add_response"`
}

/* 查询集分宝发放详情,发放API是alipay.point.order.add。请先熟悉发放API的流程。 */
type AlipayPointOrderGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝用户给应用的授权。 */
func (r *AlipayPointOrderGetRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* isv提供的发放号订单号,由数字和组成,最大长度为32为,需要保证每笔发放的唯一性,支付宝会对该参数做唯一性控制。如果使用同样的订单号,支付宝将返回订单号已经存在的错误 */
func (r *AlipayPointOrderGetRequest) SetMerchantOrderNo(value string) {
	r.SetValue("merchant_order_no", value)
}

/* 用户标识符,用于指定集分宝发放的用户,和user_symbol_type一起使用,确定一个唯一的支付宝用户 */
func (r *AlipayPointOrderGetRequest) SetUserSymbol(value string) {
	r.SetValue("user_symbol", value)
}

/* 用户标识符类型,现在支持ALIPAY_USER_ID:表示支付宝用户ID,ALIPAY_LOGON_ID:表示支付宝登陆号 */
func (r *AlipayPointOrderGetRequest) SetUserSymbolType(value string) {
	r.SetValue("user_symbol_type", value)
}

func (r *AlipayPointOrderGetRequest) GetResponse(accessToken string) (*AlipayPointOrderGetResponse, []byte, error) {
	var resp AlipayPointOrderGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.point.order.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayPointOrderGetResponse struct {
	AlipayOrderNo   string `json:"alipay_order_no"`
	CreateTime      string `json:"create_time"`
	DispatchUserId  string `json:"dispatch_user_id"`
	Memo            string `json:"memo"`
	MerchantOrderNo string `json:"merchant_order_no"`
	OrderStatus     string `json:"order_status"`
	PointCount      int    `json:"point_count"`
	ReceiveUserId   string `json:"receive_user_id"`
}

type AlipayPointOrderGetResponseResult struct {
	Response *AlipayPointOrderGetResponse `json:"alipay_point_order_get_response"`
}

/* OAuth2.0 授权的第二步,换取访问令牌。 */
type AlipaySystemOauthTokenRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 授权码,用户对应用授权后得到。 */
func (r *AlipaySystemOauthTokenRequest) SetCode(value string) {
	r.SetValue("code", value)
}

/* 获取访问令牌的类型,authorization_code表示用授权码换,refresh_token表示用刷新令牌来换。 */
func (r *AlipaySystemOauthTokenRequest) SetGrantType(value string) {
	r.SetValue("grant_type", value)
}

/* 刷新令牌,上次换取访问令牌是得到。 */
func (r *AlipaySystemOauthTokenRequest) SetRefreshToken(value string) {
	r.SetValue("refresh_token", value)
}

func (r *AlipaySystemOauthTokenRequest) GetResponse(accessToken string) (*AlipaySystemOauthTokenResponse, []byte, error) {
	var resp AlipaySystemOauthTokenResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.system.oauth.token", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipaySystemOauthTokenResponse struct {
	AccessToken  string `json:"access_token"`
	AlipayUserId string `json:"alipay_user_id"`
	ExpiresIn    string `json:"expires_in"`
	ReExpiresIn  string `json:"re_expires_in"`
	RefreshToken string `json:"refresh_token"`
}

type AlipaySystemOauthTokenResponseResult struct {
	Response *AlipaySystemOauthTokenResponse `json:"alipay_system_oauth_token_response"`
}

/* 查询用户支付宝账务明细接口。<br/>
异步API使用方法,请查看:<a href="http://open.taobao.com/doc/detail.htm?id=30">异步API使用说明</a><br/>
1. 使用之前必须首先申请支付宝API,参考http://open.taobao.com//doc/detail.htm?id=101181#s2<br/>
2. 只对通过商家认证的、先行赔付卖家以及B2C商家开放<br/>
3. 提交任务后,通过taobao.topats.result.get来查看任务执行状态,如果任务已完成,则返回下载URL<br/>
4. 如果订阅了主动通知服务,任务完成后TOP会通过HTTP长连接推送消息,通知的消息格式请参考异步API使用文档<br/>
5. 下载到的结果是CSV格式的文本文件,默认采用UTF-8编码<br/> */
type AlipayTopatsUserAccountreportGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 返回下载结果文件的数据格式,只支持utf-8和gbk编码,默认是utf-8 */
func (r *AlipayTopatsUserAccountreportGetRequest) SetCharset(value string) {
	r.SetValue("charset", value)
}

/* 对账单结束时间。end_time - start_time <= 1个自然月 */
func (r *AlipayTopatsUserAccountreportGetRequest) SetEndTime(value string) {
	r.SetValue("end_time", value)
}

/* 需要返回的字段列表。create_time:创建时间,type:账务类型,business_type:子业务类型,balance:当时支付宝账户余额,in_amount:收入金额,out_amount:支出金额,alipay_order_no:支付宝订单号,merchant_order_no:商户订单号,self_user_id:自己的支付宝ID,opt_user_id:对方的支付宝ID,memo:账号备注 */
func (r *AlipayTopatsUserAccountreportGetRequest) SetFields(value string) {
	r.SetValue("fields", value)
}

/* 对账单开始时间。最近一个月内的日期。 */
func (r *AlipayTopatsUserAccountreportGetRequest) SetStartTime(value string) {
	r.SetValue("start_time", value)
}

/* 账务类型。多个类型是,用逗号分隔,不传则查询所有类型的。PAYMENT:在线支付,TRANSFER:转账,DEPOSIT:充值,WITHDRAW:提现,CHARGE:收费,PREAUTH:预授权,OTHER:其它。 */
func (r *AlipayTopatsUserAccountreportGetRequest) SetType(value string) {
	r.SetValue("type", value)
}

func (r *AlipayTopatsUserAccountreportGetRequest) GetResponse(accessToken string) (*AlipayTopatsUserAccountreportGetResponse, []byte, error) {
	var resp AlipayTopatsUserAccountreportGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.topats.user.accountreport.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayTopatsUserAccountreportGetResponse struct {
	Task *Task `json:"task"`
}

type AlipayTopatsUserAccountreportGetResponseResult struct {
	Response *AlipayTopatsUserAccountreportGetResponse `json:"alipay_topats_user_accountreport_get_response"`
}

/* 查询支付宝账户冻结类型的冻结金额。 */
type AlipayUserAccountFreezeGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 冻结类型,多个用,分隔。不传返回所有类型的冻结金额。
DEPOSIT_FREEZE,充值冻结
WITHDRAW_FREEZE,提现冻结
PAYMENT_FREEZE,支付冻结
BAIL_FREEZE,保证金冻结
CHARGE_FREEZE,收费冻结
PRE_DEPOSIT_FREEZE,预存款冻结
LOAN_FREEZE,贷款冻结
OTHER_FREEZE,其它 */
func (r *AlipayUserAccountFreezeGetRequest) SetFreezeType(value string) {
	r.SetValue("freeze_type", value)
}

func (r *AlipayUserAccountFreezeGetRequest) GetResponse(accessToken string) (*AlipayUserAccountFreezeGetResponse, []byte, error) {
	var resp AlipayUserAccountFreezeGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.user.account.freeze.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayUserAccountFreezeGetResponse struct {
	FreezeItems struct {
		AccountFreeze []*AccountFreeze `json:"account_freeze"`
	}                   `json:"freeze_items"`
	TotalResults string `json:"total_results"`
}

type AlipayUserAccountFreezeGetResponseResult struct {
	Response *AlipayUserAccountFreezeGetResponse `json:"alipay_user_account_freeze_get_response"`
}

/* 查询支付宝账户余额 */
type AlipayUserAccountGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

func (r *AlipayUserAccountGetRequest) GetResponse(accessToken string) (*AlipayUserAccountGetResponse, []byte, error) {
	var resp AlipayUserAccountGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.user.account.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayUserAccountGetResponse struct {
	AlipayAccount *AlipayAccount `json:"alipay_account"`
}

type AlipayUserAccountGetResponseResult struct {
	Response *AlipayUserAccountGetResponse `json:"alipay_user_account_get_response"`
}

/* 获取支付宝用户订购信息。在不确认用户对应用是否订购的时候,可以调用此API查询。 */
type AlipayUserContractGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 订购者支付宝ID。session与subscriber_user_id二选一即可。 */
func (r *AlipayUserContractGetRequest) SetSubscriberUserId(value string) {
	r.SetValue("subscriber_user_id", value)
}

func (r *AlipayUserContractGetRequest) GetResponse(accessToken string) (*AlipayUserContractGetResponse, []byte, error) {
	var resp AlipayUserContractGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.user.contract.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayUserContractGetResponse struct {
	AlipayContract *AlipayContract `json:"alipay_contract"`
}

type AlipayUserContractGetResponseResult struct {
	Response *AlipayUserContractGetResponse `json:"alipay_user_contract_get_response"`
}

/* 查询支付宝用户信息 */
type AlipayUserGetRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝给用户的授权。如果没有top的授权,这个字段是必填项 */
func (r *AlipayUserGetRequest) SetAuthToken(value string) {
	r.SetValue("auth_token", value)
}

/* 需要返回的字段列表。alipay_user_id:支付宝用户userId,user_status:支付宝用户状态,user_type:支付宝用户类型,certified:是否通过实名认证,real_name:真实姓名,logon_id:支付宝登录号,sex:用户性别 */
func (r *AlipayUserGetRequest) SetFields(value string) {
	r.SetValue("fields", value)
}

func (r *AlipayUserGetRequest) GetResponse(accessToken string) (*AlipayUserGetResponse, []byte, error) {
	var resp AlipayUserGetResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.user.get", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayUserGetResponse struct {
	AlipayUserDetail *AlipayUserDetail `json:"alipay_user_detail"`
}

type AlipayUserGetResponseResult struct {
	Response *AlipayUserGetResponse `json:"alipay_user_get_response"`
}

/* 查询支付宝账户交易记录 */
type AlipayUserTradeSearchRequest struct {
	open_taobao.TaobaoMethodRequest
}

/* 支付宝订单号,为空查询所有记录 */
func (r *AlipayUserTradeSearchRequest) SetAlipayOrderNo(value string) {
	r.SetValue("alipay_order_no", value)
}

/* 结束时间。与开始时间间隔在七天之内 */
func (r *AlipayUserTradeSearchRequest) SetEndTime(value string) {
	r.SetValue("end_time", value)
}

/* 商户订单号,为空查询所有记录 */
func (r *AlipayUserTradeSearchRequest) SetMerchantOrderNo(value string) {
	r.SetValue("merchant_order_no", value)
}

/* 订单来源,为空查询所有来源。淘宝(TAOBAO),支付宝(ALIPAY),其它(OTHER) */
func (r *AlipayUserTradeSearchRequest) SetOrderFrom(value string) {
	r.SetValue("order_from", value)
}

/* 订单状态,为空查询所有状态订单 */
func (r *AlipayUserTradeSearchRequest) SetOrderStatus(value string) {
	r.SetValue("order_status", value)
}

/* 订单类型,为空查询所有类型订单。 */
func (r *AlipayUserTradeSearchRequest) SetOrderType(value string) {
	r.SetValue("order_type", value)
}

/* 页码。取值范围:大于零的整数; 默认值1 */
func (r *AlipayUserTradeSearchRequest) SetPageNo(value string) {
	r.SetValue("page_no", value)
}

/* 每页获取条数。最大值500。 */
func (r *AlipayUserTradeSearchRequest) SetPageSize(value string) {
	r.SetValue("page_size", value)
}

/* 开始时间,时间必须是今天范围之内。格式为yyyy-MM-dd HH:mm:ss,精确到秒 */
func (r *AlipayUserTradeSearchRequest) SetStartTime(value string) {
	r.SetValue("start_time", value)
}

func (r *AlipayUserTradeSearchRequest) GetResponse(accessToken string) (*AlipayUserTradeSearchResponse, []byte, error) {
	var resp AlipayUserTradeSearchResponseResult
	data, err := r.TaobaoMethodRequest.GetResponse(accessToken, "alipay.user.trade.search", &resp)
	if err != nil {
		return nil, data, err
	}
	return resp.Response, data, err
}

type AlipayUserTradeSearchResponse struct {
	TotalPages   string `json:"total_pages"`
	TotalResults string `json:"total_results"`
	TradeRecords struct {
		TradeRecord []*TradeRecord `json:"trade_record"`
	} `json:"trade_records"`
}

type AlipayUserTradeSearchResponseResult struct {
	Response *AlipayUserTradeSearchResponse `json:"alipay_user_trade_search_response"`
}


text:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="CDN" transaction-type="JTA">
        <description/>
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>java:global/CdnDS</jta-data-source>
        <class>dk.kontentsu.cdn.model.Approver</class>
        <class>dk.kontentsu.cdn.model.Category</class>
        <class>dk.kontentsu.cdn.model.Content</class>
        <class>dk.kontentsu.cdn.model.ExternalFile</class>
        <class>dk.kontentsu.cdn.model.Host</class>
        <class>dk.kontentsu.cdn.model.Interval</class>
        <class>dk.kontentsu.cdn.model.Item</class>
        <class>dk.kontentsu.cdn.model.Metadata</class>
        <class>dk.kontentsu.cdn.model.MimeType</class>
        <class>dk.kontentsu.cdn.model.Provider</class>
        <class>dk.kontentsu.cdn.model.Reference</class>
        <class>dk.kontentsu.cdn.model.SemanticUri</class>
        <class>dk.kontentsu.cdn.model.SemanticUriPath</class>
        <class>dk.kontentsu.cdn.model.Taxon</class>
        <class>dk.kontentsu.cdn.model.Taxonomy</class>
        <class>dk.kontentsu.cdn.model.Term</class>
        <class>dk.kontentsu.cdn.model.Version</class>
        <validation-mode>CALLBACK</validation-mode>
        <properties>
            <property name="tomee.jpa.cdi" value="false"/>
            <!--<property name="tomee.jpa.factory.lazy" value="true"/>-->
            <property name="javax.persistence.validation.group.pre-persist" value="javax.validation.groups.Default"/>
            <property name="javax.persistence.validation.group.pre-update" value="javax.validation.groups.Default"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
            <property name="javax.persistence.schema-generation.create-source" value="metadata"/>
            <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
            <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/>
        </properties>
    </persistence-unit>
</persistence>


text:
const fs = require('fs');
const path = require('path');

/**
 * This module allows you to write on a file.
 * @module FileWriter
 * @type {{fileProperties, writeFile}}
 */
const FileWriter = (function iife() {
    /**
     * @member fileProperties {Object} Module props.
     * @type {{encoding: string}}
     */
    const fileProperties = {
        encoding: 'utf8',
    };

    /**
     * Write a file in the given path.
     * @function writeFile
     * @param filePath {string} Path for the file to be written
     * @param data {Object} Data to write
     * @param logger {Logger} Logger for tracing operations
     */
    const writeFile = (filePath, data, logger) => (
      new Promise((resolve, reject) => {
          fs.writeFile(filePath, data, fileProperties, (error) => {
              if (error) {
                  reject(error);
              } else {
                  logger(`File written successfully at: ${
                      path.resolve(filePath)
                  }`);
                  resolve();
              }
          });
      })
    );

    return {
        fileProperties,
        writeFile,
    };
}());

module.exports = FileWriter;


text:
#ifndef ASSEMBLER

#define REF_BU f
#define BLASFUNC_REF_2(x,y) BLASFUNC(x## y)
#define BLASFUNC_REF_1(x,y) BLASFUNC_REF_2(x,y)
#define BLASFUNC_REF(x) BLASFUNC_REF_1(x,REF_BU)

void  BLASFUNC_REF(srot)  (blasint *, float  *, blasint *, float  *, blasint *, float  *, float  *);
void  BLASFUNC_REF(drot)  (blasint *, double *, blasint *, double *, blasint *, double *, double *);
void  BLASFUNC_REF(qrot)  (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *);
void  BLASFUNC_REF(csrot) (blasint *, float  *, blasint *, float  *, blasint *, float  *, float  *);
void  BLASFUNC_REF(zdrot) (blasint *, double *, blasint *, double *, blasint *, double *, double *);
void  BLASFUNC_REF(xqrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *);

void BLASFUNC_REF(sswap) (blasint *, float  *, blasint *, float  *, blasint *);
void BLASFUNC_REF(dswap) (blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC_REF(qswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *);
void BLASFUNC_REF(cswap) (blasint *, float  *, blasint *, float  *, blasint *);
void BLASFUNC_REF(zswap) (blasint *, double *, blasint *, double *, blasint *);
void BLASFUNC_REF(xswap) (blasint *, xdouble *, blasint *, xdouble *, blasint *);

void BLASFUNC_REF(saxpy) (blasint *, float  *, float  *, blasint *, float  *, blasint *);
void BLASFUNC_REF(daxpy) (blasint *, double *, double *, blasint *, double *, blasint *);
void BLASFUNC_REF(caxpy) (blasint *, float  *, float  *, blasint *, float  *, blasint *);
void BLASFUNC_REF(zaxpy) (blasint *, double *, double *, blasint *, double *, blasint *);

float   _Complex BLASFUNC_REF(cdotu)  (blasint *, float  *, blasint *, float  *, blasint *);
float   _Complex BLASFUNC_REF(cdotc)  (blasint *, float  *, blasint *, float  *, blasint *);
double  _Complex BLASFUNC_REF(zdotu)  (blasint *, double  *, blasint *, double  *, blasint *);
double  _Complex BLASFUNC_REF(zdotc)  (blasint *, double  *, blasint *, double  *, blasint *);

void BLASFUNC_REF(drotmg)(double *, double *, double *, double *, double *);

double BLASFUNC_REF(dsdot)(blasint *, float *, blasint *, float *, blasint*);

FLOATRET  BLASFUNC_REF(samax) (blasint *, float  *, blasint *);

#endif