whole_func_string: function $AriaProvider() {
    var config = {
      ariaHidden: true,
      ariaChecked: true,
      ariaReadonly: true,
      ariaDisabled: true,
      ariaRequired: true,
      ariaInvalid: true,
      ariaValue: true,
      tabindex: true,
      bindKeydown: true,
      bindRoleForClick: true
    };
  
    /**
     * @ngdoc method
     * @name $ariaProvider#config
     *
     * @param {object} config object to enable/disable specific ARIA attributes
     *
     *  - **ariaHidden** – `{boolean}` – Enables/disables aria-hidden tags
     *  - **ariaChecked** – `{boolean}` – Enables/disables aria-checked tags
     *  - **ariaReadonly** – `{boolean}` – Enables/disables aria-readonly tags
     *  - **ariaDisabled** – `{boolean}` – Enables/disables aria-disabled tags
     *  - **ariaRequired** – `{boolean}` – Enables/disables aria-required tags
     *  - **ariaInvalid** – `{boolean}` – Enables/disables aria-invalid tags
     *  - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and
     *    aria-valuenow tags
     *  - **tabindex** – `{boolean}` – Enables/disables tabindex tags
     *  - **bindKeydown** – `{boolean}` – Enables/disables keyboard event binding on non-interactive
     *    elements (such as `div` or `li`) using ng-click, making them more accessible to users of
     *    assistive technologies
     *  - **bindRoleForClick** – `{boolean}` – Adds role=button to non-interactive elements (such as
     *    `div` or `li`) using ng-click, making them more accessible to users of assistive
     *    technologies
     *
     * @description
     * Enables/disables various ARIA attributes
     */
    this.config = function(newConfig) {
      config = angular.extend(config, newConfig);
    };
  
    function watchExpr(attrName, ariaAttr, nodeBlackList, negate) {
      return function(scope, elem, attr) {
        if (attr.hasOwnProperty(ARIA_DISABLE_ATTR)) return;
  
        var ariaCamelName = attr.$normalize(ariaAttr);
        if (config[ariaCamelName] && !isNodeOneOf(elem, nodeBlackList) && !attr[ariaCamelName]) {
          scope.$watch(attr[attrName], function(boolVal) {
            // ensure boolean value
            boolVal = negate ? !boolVal : !!boolVal;
            elem.attr(ariaAttr, boolVal);
          });
        }
      };
    }
    /**
     * @ngdoc service
     * @name $aria
     *
     * @description
     * @priority 200
     *
     * The $aria service contains helper methods for applying common
     * [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
     *
     * ngAria injects common accessibility attributes that tell assistive technologies when HTML
     * elements are enabled, selected, hidden, and more. To see how this is performed with ngAria,
     * let's review a code snippet from ngAria itself:
     *
     *```js
     * ngAriaModule.directive('ngDisabled', ['$aria', function($aria) {
     *   return $aria.$$watchExpr('ngDisabled', 'aria-disabled', nodeBlackList, false);
     * }])
     *```
     * Shown above, the ngAria module creates a directive with the same signature as the
     * traditional `ng-disabled` directive. But this ngAria version is dedicated to
     * solely managing accessibility attributes on custom elements. The internal `$aria` service is
     * used to watch the boolean attribute `ngDisabled`. If it has not been explicitly set by the
     * developer, `aria-disabled` is injected as an attribute with its value synchronized to the
     * value in `ngDisabled`.
     *
     * Because ngAria hooks into the `ng-disabled` directive, developers do not have to do
     * anything to enable this feature. The `aria-disabled` attribute is automatically managed
     * simply as a silent side-effect of using `ng-disabled` with the ngAria module.
     *
     * The full list of directives that interface with ngAria:
     * * **ngModel**
     * * **ngChecked**
     * * **ngReadonly**
     * * **ngRequired**
     * * **ngDisabled**
     * * **ngValue**
     * * **ngShow**
     * * **ngHide**
     * * **ngClick**
     * * **ngDblclick**
     * * **ngMessages**
     *
     * Read the {@link guide/accessibility ngAria Developer Guide} for a thorough explanation of each
     * directive.
     *
     *
     * ## Dependencies
     * Requires the {@link ngAria} module to be installed.
     */
    this.$get = function() {
      return {
        config: function(key) {
          return config[key];
        },
        $$watchExpr: watchExpr
      };
    };
  }
func_code_string: function $AriaProvider() {
    var config = {
      ariaHidden: true,
      ariaChecked: true,
      ariaReadonly: true,
      ariaDisabled: true,
      ariaRequired: true,
      ariaInvalid: true,
      ariaValue: true,
      tabindex: true,
      bindKeydown: true,
      bindRoleForClick: true
    };
  
    /**
     * @ngdoc method
     * @name $ariaProvider#config
     *
     * @param {object} config object to enable/disable specific ARIA attributes
     *
     *  - **ariaHidden** – `{boolean}` – Enables/disables aria-hidden tags
     *  - **ariaChecked** – `{boolean}` – Enables/disables aria-checked tags
     *  - **ariaReadonly** – `{boolean}` – Enables/disables aria-readonly tags
     *  - **ariaDisabled** – `{boolean}` – Enables/disables aria-disabled tags
     *  - **ariaRequired** – `{boolean}` – Enables/disables aria-required tags
     *  - **ariaInvalid** – `{boolean}` – Enables/disables aria-invalid tags
     *  - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and
     *    aria-valuenow tags
     *  - **tabindex** – `{boolean}` – Enables/disables tabindex tags
     *  - **bindKeydown** – `{boolean}` – Enables/disables keyboard event binding on non-interactive
     *    elements (such as `div` or `li`) using ng-click, making them more accessible to users of
     *    assistive technologies
     *  - **bindRoleForClick** – `{boolean}` – Adds role=button to non-interactive elements (such as
     *    `div` or `li`) using ng-click, making them more accessible to users of assistive
     *    technologies
     *
     * @description
     * Enables/disables various ARIA attributes
     */
    this.config = function(newConfig) {
      config = angular.extend(config, newConfig);
    };
  
    function watchExpr(attrName, ariaAttr, nodeBlackList, negate) {
      return function(scope, elem, attr) {
        if (attr.hasOwnProperty(ARIA_DISABLE_ATTR)) return;
  
        var ariaCamelName = attr.$normalize(ariaAttr);
        if (config[ariaCamelName] && !isNodeOneOf(elem, nodeBlackList) && !attr[ariaCamelName]) {
          scope.$watch(attr[attrName], function(boolVal) {
            // ensure boolean value
            boolVal = negate ? !boolVal : !!boolVal;
            elem.attr(ariaAttr, boolVal);
          });
        }
      };
    }
    /**
     * @ngdoc service
     * @name $aria
     *
     * @description
     * @priority 200
     *
     * The $aria service contains helper methods for applying common
     * [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
     *
     * ngAria injects common accessibility attributes that tell assistive technologies when HTML
     * elements are enabled, selected, hidden, and more. To see how this is performed with ngAria,
     * let's review a code snippet from ngAria itself:
     *
     *```js
     * ngAriaModule.directive('ngDisabled', ['$aria', function($aria) {
     *   return $aria.$$watchExpr('ngDisabled', 'aria-disabled', nodeBlackList, false);
     * }])
     *```
     * Shown above, the ngAria module creates a directive with the same signature as the
     * traditional `ng-disabled` directive. But this ngAria version is dedicated to
     * solely managing accessibility attributes on custom elements. The internal `$aria` service is
     * used to watch the boolean attribute `ngDisabled`. If it has not been explicitly set by the
     * developer, `aria-disabled` is injected as an attribute with its value synchronized to the
     * value in `ngDisabled`.
     *
     * Because ngAria hooks into the `ng-disabled` directive, developers do not have to do
     * anything to enable this feature. The `aria-disabled` attribute is automatically managed
     * simply as a silent side-effect of using `ng-disabled` with the ngAria module.
     *
     * The full list of directives that interface with ngAria:
     * * **ngModel**
     * * **ngChecked**
     * * **ngReadonly**
     * * **ngRequired**
     * * **ngDisabled**
     * * **ngValue**
     * * **ngShow**
     * * **ngHide**
     * * **ngClick**
     * * **ngDblclick**
     * * **ngMessages**
     *
     * Read the {@link guide/accessibility ngAria Developer Guide} for a thorough explanation of each
     * directive.
     *
     *
     * ## Dependencies
     * Requires the {@link ngAria} module to be installed.
     */
    this.$get = function() {
      return {
        config: function(key) {
          return config[key];
        },
        $$watchExpr: watchExpr
      };
    };
  }
func_documentation_string: @ngdoc provider
  @name $ariaProvider
  @this
  
  @description
  
  Used for configuring the ARIA attributes injected and managed by ngAria.
  
  ```js
  angular.module('myApp', ['ngAria'], function config($ariaProvider) {
  $ariaProvider.config({
  ariaValue: true,
  tabindex: false
  });
  });
  ```
  
  ## Dependencies
  Requires the {@link ngAria} module to be installed.