text:
package org.sakaiproject.kernel.authz.simple;

import com.google.inject.Inject;
import com.google.inject.name.Named;

import org.apache.commons.lang.StringUtils;
import org.sakaiproject.kernel.api.authz.AccessControlStatement;
import org.sakaiproject.kernel.api.authz.ReferenceResolverService;
import org.sakaiproject.kernel.api.authz.ReferencedObject;

import java.util.Map;

/**
 * A Path Resolver looks at the first element of the path, and attempts to look
 * it up a resolver in a map. If there is no match, the default resolver is
 * used.
 */
public class PathReferenceResolverService implements ReferenceResolverService {

  public static final String DEFAULT_RESOLVER = "resolvers.default";
  private Map<String, ReferenceResolverService> resolvers;
  private ReferenceResolverService defaultResolver;

  /**
   *
   */
  @Inject
  public PathReferenceResolverService(
      @Named(DEFAULT_RESOLVER) ReferenceResolverService defaultResolver,
      Map<String, ReferenceResolverService> resolvers) {
    this.resolvers = resolvers;
    this.defaultResolver = defaultResolver;
  }

  /**
   * {@inheritDoc}
   *
   * @see org.sakaiproject.kernel.api.authz.ReferenceResolverService#resolve(java.lang.String)
   */
  public ReferencedObject resolve(String resourceReference) {
    // Make sure we're getting a String from the resolver, Java won't check that
    // the type matches the definition
    String[] locator = StringUtils.split(resourceReference, "/", 1);
    if (locator != null && locator.length > 0 && locator[0] != null) {
      ReferenceResolverService resolver = resolvers.get(locator[0]);
      if (resolver != null) {
        return resolver.resolve(resourceReference);
      }
    }
    return defaultResolver.resolve(resourceReference);
  }

  /**
   * {@inheritDoc}
   * @see org.sakaiproject.kernel.api.authz.ReferenceResolverService#newAccessControlStatement(java.lang.String)
   */
  public AccessControlStatement newAccessControlStatement(String acs) {
    return defaultResolver.newAccessControlStatement(acs);
  }

}


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<title>mxICanvas2D (JGraph X 3.3.0.1 API Specification)</title>
<meta name="date" content="2015-05-19">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">

JavaScript is disabled on your browser.

Overview

Package

Class

Use

Tree

Deprecated

Index

Help

JGraph X 3.3.0.1

Prev Class

Next Class

Frames

No Frames

All Classes

Summary:

Nested |

Field |

Constr |

Method

Detail:

Field |

Constr |

Method

com.mxgraph.canvas

Interface mxICanvas2D

All Known Implementing Classes:

mxGraphicsCanvas2D

public interface mxICanvas2D

Requirements for implementing technologies:

 - Path rendering (move, line, quad, curve, arc)
 - Images, flip v/h, aspect, alpha (PNG, JPG, GIF)
 - Linear gradients (in all four directions)
 - Transparency, fill and stroke
 - Rotation, flip v/h
 - Font rendering
 - Dash patterns
 - Clipping by path (not just rectangle)
 - Alpha gradients (for glass effect)
 - Encode result as image (PNG, JPG)

Method Summary

Methods

Modifier and Type
Method and Description

void
begin()

Begins a new path.

void
close()

Closes the current path.

void
curveTo(double x1,
       double y1,
       double x2,
       double y2,
       double x3,
       double y3)

Draws a bezier curve to the given point.

void
ellipse(double x,
       double y,
       double w,
       double h)

Next fill or stroke should draw an ellipse.

void
fill()

Fills the current path.

void
fillAndStroke()

Fills and paints the outline of the current path.

void
image(double x,
     double y,
     double w,
     double h,
     String src,
     boolean aspect,
     boolean flipH,
     boolean flipV)

Draws the given image.

void
lineTo(double x,
      double y)

Draws a line to the given path.

void
moveTo(double x,
      double y)

Moves to the given path.

void
quadTo(double x1,
      double y1,
      double x2,
      double y2)

Draws a quadratic curve to the given point.

void
rect(double x,
    double y,
    double w,
    double h)

Next fill or stroke should draw a rectangle.

void
restore()

Restores the previous state of the canvas.

void
rotate(double theta,
      boolean flipH,
      boolean flipV,
      double cx,
      double cy)

Rotates the canvas by the given angle around the given center.

void
roundrect(double x,
         double y,
         double w,
         double h,
         double dx,
         double dy)

Next fill or stroke should draw a round rectangle.

void
save()

Saves the current state of the canvas.

void
scale(double value)

Uniformaly scales the canvas by the given amount.

void
setAlpha(double value)

Default value 1.

void
setDashed(boolean value)

Sets the dashed state.

void
setDashPattern(String value)

Sets the dash pattern.

void
setFillColor(String value)

Default value mxConstants.NONE.

void
setFontBackgroundColor(String value)

Default value "#000000".

void
setFontBorderColor(String value)

Default value "#000000".

void
setFontColor(String value)

Default value "#000000".

void
setFontFamily(String value)

Default value mxConstants.DEFAULT_FONTFAMILY.

void
setFontSize(double value)

Default value mxConstants.DEFAULT_FONTSIZE.

void
setFontStyle(int value)

Default value 0.

void
setGradient(String color1,
           String color2,
           double x,
           double y,
           double w,
           double h,
           String direction,
           double alpha1,
           double alpha2)

Prepares the canvas to draw a gradient.

void
setLineCap(String value)

Sets the linecap.

void
setLineJoin(String value)

Sets the linejoin.

void
setMiterLimit(double value)

Sets the miterlimit.

void
setShadow(boolean enabled)

Enables or disables the painting of shadows.

void
setShadowAlpha(double value)

Default value mxConstants.NONE.

void
setShadowColor(String value)

Default value mxConstants.NONE.

void
setShadowOffset(double dx,
               double dy)

Default value mxConstants.NONE.

void
setStrokeColor(String value)

Sets the stroke color.

void
setStrokeWidth(double value)

Sets the stroke width.

void
stroke()

Paints the outline of the current path.

void
text(double x,
    double y,
    double w,
    double h,
    String str,
    String align,
    String valign,
    boolean wrap,
    String format,
    String overflow,
    boolean clip,
    double rotation,
    String dir)

Draws the given string.

void
translate(double dx,
         double dy)

Translates the canvas by the given amount.

Method Detail

save

void save()

Saves the current state of the canvas.

restore

void restore()

Restores the previous state of the canvas.

scale

void scale(double value)

Uniformaly scales the canvas by the given amount.

Parameters:

value - The new scale value.

translate

void translate(double dx,
             double dy)

Translates the canvas by the given amount.

Parameters:

dx - X-coordinate of the translation.

dy - Y-coordinate of the translation.

rotate

void rotate(double theta,
          boolean flipH,
          boolean flipV,
          double cx,
          double cy)

Rotates the canvas by the given angle around the given center. This
 method may add rendering overhead and should be used with care.

Parameters:

theta - Rotation angle in degrees (0 - 360).

flipH - Specifies if drawing should be flipped horizontally.

flipV - Specifies if drawing should be flipped vertically.

cx - X-coordinate of the center point.

cy - Y-coordinate of the center point.

setStrokeWidth

void setStrokeWidth(double value)

Sets the stroke width. This should default to 1 if unset.

Parameters:

value - Width of the stroke. The value should be multiplied by the
 current scale.

setStrokeColor

void setStrokeColor(String value)

Sets the stroke color. This should default to mxConstants.NONE
 if unset.

Parameters:

value - Hex representation of the color or mxConstants.NONE.

setDashed

void setDashed(boolean value)

Sets the dashed state. This should default to false if unset.

Parameters:

value - Boolean representing the dashed state.

setDashPattern

void setDashPattern(String value)

Sets the dash pattern. This should default to "3 3" if unset.

Parameters:

value - Space separated list of floats representing the dash
 pattern. The value should be multiplied by the current scale.

setLineCap

void setLineCap(String value)

Sets the linecap. This should default to "flat" if unset.

Parameters:

value - "flat", "square" or "round".

setLineJoin

void setLineJoin(String value)

Sets the linejoin. This should default to "miter" if unset.

Parameters:

value - "miter", "round" or "bevel".

setMiterLimit

void setMiterLimit(double value)

Sets the miterlimit. This should default to 10 if unset.

Parameters:

value -

setFontSize

void setFontSize(double value)

Default value mxConstants.DEFAULT_FONTSIZE.

Parameters:

value -

setFontColor

void setFontColor(String value)

Default value "#000000".

Parameters:

value - Hex representation of the color or mxConstants.NONE.

setFontFamily

void setFontFamily(String value)

Default value mxConstants.DEFAULT_FONTFAMILY.

Parameters:

value -

setFontStyle

void setFontStyle(int value)

Default value 0. See mxConstants.STYLE_FONTSTYLE.

Parameters:

value -

setFontBackgroundColor

void setFontBackgroundColor(String value)

Default value "#000000".

Parameters:

value - Hex representation of the color or mxConstants.NONE.

setFontBorderColor

void setFontBorderColor(String value)

Default value "#000000".

Parameters:

value - Hex representation of the color or mxConstants.NONE.

setAlpha

void setAlpha(double value)

Default value 1. This method may add rendering overhead and should be
 used with care.

Parameters:

value -

setFillColor

void setFillColor(String value)

Default value mxConstants.NONE.

Parameters:

value - Hex representation of the color or mxConstants.NONE.

setGradient

void setGradient(String color1,
               String color2,
               double x,
               double y,
               double w,
               double h,
               String direction,
               double alpha1,
               double alpha2)

Prepares the canvas to draw a gradient.

Parameters:

color1 -

color2 -

x -

y -

w -

h -

direction - Direction may be null. Use default value
                mxConstants.DIRECTION_SOUTH.

setShadow

void setShadow(boolean enabled)

Enables or disables the painting of shadows.

Parameters:

enabled - Whether the shadow should be enabled.

setShadowColor

void setShadowColor(String value)

Default value mxConstants.NONE.

Parameters:

value - Hex representation of the color or mxConstants.NONE.

setShadowAlpha

void setShadowAlpha(double value)

Default value mxConstants.NONE.

Parameters:

value - Hex representation of the color or mxConstants.NONE.

setShadowOffset

void setShadowOffset(double dx,
                   double dy)

Default value mxConstants.NONE.

Parameters:

value - Hex representation of the color or mxConstants.NONE.

rect

void rect(double x,
        double y,
        double w,
        double h)

Next fill or stroke should draw a rectangle.

Parameters:

x -

y -

w -

h -

roundrect

void roundrect(double x,
             double y,
             double w,
             double h,
             double dx,
             double dy)

Next fill or stroke should draw a round rectangle.

Parameters:

x -

y -

w -

h -

dx -

dy -

ellipse

void ellipse(double x,
           double y,
           double w,
           double h)

Next fill or stroke should draw an ellipse.

Parameters:

x -

y -

w -

h -

image

void image(double x,
         double y,
         double w,
         double h,
         String src,
         boolean aspect,
         boolean flipH,
         boolean flipV)

Draws the given image.

Parameters:

x -

y -

w -

h -

src -

aspect -

flipH -

flipV -

text

void text(double x,
        double y,
        double w,
        double h,
        String str,
        String align,
        String valign,
        boolean wrap,
        String format,
        String overflow,
        boolean clip,
        double rotation,
        String dir)

Draws the given string. Possible values for format are empty string for
 plain text and html for HTML markup.

Parameters:

x -

y -

w -

h -

str -

align -

valign -

wrap -

format -

overflow -

clip -

rotation -

dir -

begin

void begin()

Begins a new path.

moveTo

void moveTo(double x,
          double y)

Moves to the given path.

Parameters:

x -

y -

lineTo

void lineTo(double x,
          double y)

Draws a line to the given path.

Parameters:

x -

y -

quadTo

void quadTo(double x1,
          double y1,
          double x2,
          double y2)

Draws a quadratic curve to the given point.

Parameters:

x1 -

y1 -

x2 -

y2 -

curveTo

void curveTo(double x1,
           double y1,
           double x2,
           double y2,
           double x3,
           double y3)

Draws a bezier curve to the given point.

Parameters:

x1 -

y1 -

x2 -

y2 -

x3 -

y3 -

close

void close()

Closes the current path.

stroke

void stroke()

Paints the outline of the current path.

fill

void fill()

Fills the current path.

fillAndStroke

void fillAndStroke()

Fills and paints the outline of the current path.

Overview

Package

Class

Use

Tree

Deprecated

Index

Help

JGraph X 3.3.0.1

Prev Class

Next Class

Frames

No Frames

All Classes

Summary:

Nested |

Field |

Constr |

Method

Detail:

Field |

Constr |

Method

Copyright (c) 2010 Gaudenz Alder. All rights reserved.

redpajama_set_name: RedPajamaGithub


text:
package no.finn.unleash.repository;

import no.finn.unleash.FeatureToggle;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.io.*;
import java.util.Collections;
import java.util.List;
import com.google.gson.JsonParseException;

public class ToggleBackupHandlerFile implements ToggleBackupHandler {
    private static final Logger LOG = LogManager.getLogger();
    private final String backupFile;

    public ToggleBackupHandlerFile(){
        this(System.getProperty("java.io.tmpdir") + File.separatorChar + "unleash-repo.json");
    }

    public ToggleBackupHandlerFile(String backupFile){
        this.backupFile = backupFile;
    }

    @Override
    public ToggleCollection read() {
        LOG.info("Unleash will try to load feature toggle states from temporary backup");
        try (FileReader reader = new FileReader(backupFile)) {
            BufferedReader br = new BufferedReader(reader);
            return JsonToggleParser.fromJson(br);
        } catch (FileNotFoundException e) {
            LOG.warn(" Unleash could not find the backup-file '" + backupFile + "'. \n" +
                    "This is expected behavior the first time unleash runs in a new environment.");
        } catch (IOException | IllegalStateException | JsonParseException e) {
            LOG.error("Failed to read backup file:'{}'", backupFile, e);
        }
        List<FeatureToggle> emptyList = Collections.emptyList();
        return new ToggleCollection(emptyList);
    }

    @Override
    public void write(ToggleCollection toggleCollection) {
        try (FileWriter writer = new FileWriter(backupFile)) {
            writer.write(JsonToggleParser.toJsonString(toggleCollection));
        } catch (IOException e) {
            LOG.warn("Unleash was unable to backup feature toggles to file: {}", backupFile, e);
        }
    }
}


text:
@protocol TaskPrizeDelegate <NSObject>

- (void)prizeTaskWithButtonState:(BOOL)buttonState;

@end

@class AllTaskModel;

@interface MyTaskHeaderView : UIView

@property (nonatomic, strong) NSArray *hasDownloads;
@property (nonatomic, weak) id <TaskPrizeDelegate> prizeDelegate;

- (instancetype)initWithFrame:(CGRect)frame withTaskModel:(AllTaskModel *)model;

- (void)updatePrizeButtonState:(BOOL)state;

@end


text:
title: Publications

# View.
#   1 = List
#   2 = Compact
#   3 = Card
#   4 = Citation
view: 2

# Optional header image (relative to `static/media/` folder).
header:
  caption: ""
  image: ""
---


text:
layout: page
title: Griffin Family Reunion
date: 2016-05-24
author: Gary Faulkner
tags: weekly links, java
status: published
summary: Sed eget ex sodales, tempor magna sed, facilisis arcu.
banner: images/banner/wedding.jpg
booking:
  startDate: 11/09/2016
  endDate: 11/12/2016
  ctyhocn: SPHFLHX
  groupCode: GFR
published: true
---
Nulla mauris massa, gravida rutrum sem sit amet, vehicula mollis nisi. Nulla facilisi. Cras ac iaculis quam. Cras faucibus fermentum nisl, ac condimentum ex auctor nec. Morbi consectetur sapien in ligula tincidunt gravida. Fusce et libero lacinia ex laoreet iaculis ut vel urna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec varius elementum enim tincidunt posuere. Fusce quis ex iaculis, rhoncus metus ut, tincidunt eros.
Ut tempus magna eros. Vestibulum in efficitur tortor, et consectetur eros. Duis volutpat, eros ut fermentum tincidunt, massa risus vulputate metus, in porttitor arcu sapien ac magna. Sed sit amet pharetra ipsum, sit amet maximus massa. Donec ut enim blandit ligula egestas pulvinar quis vitae felis. Proin consequat dignissim nulla nec vehicula. Quisque pellentesque nulla eu dolor rhoncus, quis euismod purus consectetur.

* Nam vel justo ac magna porttitor lobortis ut ac mi
* Ut mollis ante ut nibh accumsan, eu viverra ante egestas
* Phasellus pellentesque odio eu erat placerat vestibulum
* In ut libero pellentesque, semper ante at, faucibus ipsum
* Aliquam lobortis massa et massa facilisis blandit.

Curabitur quis consequat lorem, eu gravida nisi. Quisque in arcu eu leo convallis tempus. Praesent rutrum, quam sed porttitor lacinia, mauris felis scelerisque velit, non blandit leo nisi eu nisi. Nullam dapibus mi in ligula ornare vehicula. Morbi maximus in felis vel rhoncus. Pellentesque convallis dui sem, non commodo leo malesuada ut. Integer viverra quam orci, et consectetur lectus pharetra non. Fusce ac tempor velit, nec auctor lectus. Duis sodales arcu a quam malesuada, sed gravida nisi varius. Proin id aliquam enim, id finibus ante. Praesent auctor auctor commodo. Aliquam suscipit risus vel velit scelerisque fermentum. Phasellus vestibulum ex metus, at placerat tellus iaculis ac.


text: from .eval_instance_segmentation_voc import eval_instseg_voc


text:
package org.apache.hyracks.control.nc.dataset;

import java.nio.ByteBuffer;
import java.util.concurrent.Executor;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.apache.hyracks.api.comm.IFrameWriter;
import org.apache.hyracks.api.exceptions.HyracksDataException;
import org.apache.hyracks.comm.channels.NetworkOutputChannel;

public class DatasetPartitionReader {
    private static final Logger LOGGER = Logger.getLogger(DatasetPartitionReader.class.getName());

    private final DatasetPartitionManager datasetPartitionManager;

    private final DatasetMemoryManager datasetMemoryManager;

    private final Executor executor;

    private final ResultState resultState;

    public DatasetPartitionReader(DatasetPartitionManager datasetPartitionManager,
            DatasetMemoryManager datasetMemoryManager, Executor executor, ResultState resultState) {
        this.datasetPartitionManager = datasetPartitionManager;
        this.datasetMemoryManager = datasetMemoryManager;
        this.executor = executor;
        this.resultState = resultState;
    }

    public void writeTo(final IFrameWriter writer) {
        executor.execute(new Runnable() {
            @Override
            public void run() {
                NetworkOutputChannel channel = (NetworkOutputChannel) writer;
                channel.setFrameSize(resultState.getFrameSize());
                try {
                    resultState.readOpen();
                    channel.open();
                    try {
                        long offset = 0;
                        ByteBuffer buffer = ByteBuffer.allocate(resultState.getFrameSize());
                        while (true) {
                            buffer.clear();
                            long size = read(offset, buffer);
                            if (size <= 0) {
                                break;
                            } else if (size < buffer.limit()) {
                                throw new HyracksDataException("Premature end of file - readSize: " + size
                                        + " buffer limit: " + buffer.limit());
                            }
                            offset += size;
                            buffer.flip();
                            channel.nextFrame(buffer);
                        }
                        LOGGER.info("Result Reader read + " + offset + " bytes");
                    } finally {
                        channel.close();
                        resultState.readClose();
                        // If the query is a synchronous query, remove its partition as soon as it is read.
                        if (!resultState.getAsyncMode()) {
                            datasetPartitionManager.removePartition(resultState.getResultSetPartitionId().getJobId(),
                                    resultState.getResultSetPartitionId().getResultSetId(), resultState
                                            .getResultSetPartitionId().getPartition());
                        }
                    }
                } catch (HyracksDataException e) {
                    throw new RuntimeException(e);
                }
                if (LOGGER.isLoggable(Level.INFO)) {
                    LOGGER.info("result reading successful(" + resultState.getResultSetPartitionId() + ")");
                }
            }

            private long read(long offset, ByteBuffer buffer) throws HyracksDataException {
                if (datasetMemoryManager == null) {
                    return resultState.read(offset, buffer);
                } else {
                    return resultState.read(datasetMemoryManager, offset, buffer);
                }
            }
        });
    }
}


text:
module WatchCounter
  class HttpServer < ::Sinatra::Base

    helpers do
      def storage
        WatchCounter.app.storage
      end
    end

    configure :development, :production do
      enable :logging
      disable :run
    end

    post '/watches' do
      customer_id, video_id = params['customer_id'].to_s, params['video_id'].to_s
      halt 422 if customer_id.empty? || video_id.empty?
      storage.register_watch(customer_id, video_id)
      status 204
    end

    get '/customers/:id' do
      count = storage.get_watches_for_customer(params['id'])
      "{\"watches\": #{count}}"
    end

    get '/videos/:id' do
      count = storage.get_watches_for_video(params['id'])
      "{\"watches\": #{count}}"
    end

  end
end


text:
package com.crawljax.core;

import com.crawljax.core.configuration.CrawlSpecification;
import com.crawljax.core.configuration.CrawljaxConfiguration;
import com.crawljax.core.state.CrawlPath;
import com.crawljax.core.state.Eventable;
import com.crawljax.core.state.StateFlowGraph;
import com.crawljax.core.state.StateVertix;

import org.apache.commons.configuration.ConfigurationException;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import java.io.File;
import java.util.Collection;
import java.util.List;

/**
 * Test class for the Crawler testing.
 *
 * @author Stefan Lenselink <S.R.Lenselink@student.tudelft.nl>
 * @version $Id: CrawlerTest.java 446 2010-09-16 09:17:24Z slenselink@google.com $
 */
public class CrawlerTest {

	private Collection<List<Eventable>> paths;
	private StateVertix index;

	private CrawljaxConfiguration buildController() throws ConfigurationException {
		CrawljaxConfiguration config = new CrawljaxConfiguration();
		CrawlSpecification spec = new CrawlSpecification(
		        "file://" + new File("src/test/site/crawler/index.html").getAbsolutePath());
		spec.click("a");
		config.setCrawlSpecification(spec);
		return config;
	}

	@Before
	public void setupController() throws ConfigurationException, CrawljaxException {
		CrawljaxController controller = new CrawljaxController(buildController());
		controller.run();
		paths = controller.getSession().getCrawlPaths();
		index = controller.getSession().getInitialState();
		// controller.run();
		// Crawler c = controller.getCrawler();
		// firstPath = c.getExacteventpath();
		// for (Eventable eventable : firstPath) {
		// last = eventable;
		// }
		// newPath = new ArrayList<Eventable>();
		// newPath.addAll(firstPath);
		// newPath.remove(last);
	}

	@Test
	public void testCrawler() throws ConfigurationException {
		final TestController controller = new TestController(buildController(), index);

		// Prevent dead-lock
		// controller.getBrowserPool().freeBrowser(controller.getCrawler().getBrowser());

		for (final List<Eventable> path : paths) {
			Crawler c = new Crawler(controller, path, "Follow Path") {
				@Override
				public void run() {
					try {
						super.init();
					} catch (InterruptedException e) {
						Assert.fail(e.getMessage());
					}
					CrawlPath newPath = controller.getSession().getCurrentCrawlPath();
					Assert
					        .assertEquals(
					                "Path found by Controller driven Crawling equals the path found in the Crawler", path, newPath);
					super.shutdown();
				}
			};
			c.run();
		}

		controller.getBrowserPool().shutdown();
	}

	private static class TestController extends CrawljaxController {
		CrawlSession localSession;
		StateFlowGraph g;
		StateVertix i;

		public TestController(CrawljaxConfiguration config, StateVertix index)
		        throws ConfigurationException {
			super(config);
			i = index;
			g = new StateFlowGraph(i);
			localSession =
			        new CrawlSession(this.getBrowserPool(), g, i, System.currentTimeMillis());
		}

		@Override
		public CrawlSession getSession() {
			return localSession;
		}
	}
}


text:
//
//  WBTextPart.h
//  新浪微博
//
//  Created by 王万杰 on 15/10/18.
//  Copyright © 2015年 王万杰. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface WBTextPart : NSObject
/** 这段文字的内容 */
@property (nonatomic, copy) NSString *text;
/** 这段文字的范围 */
@property (nonatomic, assign) NSRange range;
/** 是否为特殊文字 */
@property (nonatomic, assign, getter = isSpecical) BOOL special;
/** 是否为表情 */
@property (nonatomic, assign, getter = isEmotion) BOOL emotion;
@end


text:
<TITLE>Review for Grosse Pointe Blank (1997)</TITLE>
<LINK REL="STYLESHEET" TYPE="text/css" HREF="/ramr.css">

Grosse Pointe Blank (1997)

reviewed by
Walter Frith

                           GROSSE POINTE BLANK
                       A film review by Walter Frith
                        Copyright 1997 Walter Frith

The comparisons to 1994's 'Pulp Fiction are becoming absurd.  That film was
in a class by itself and will be recognizable in nostalgic flashbacks years
from now.  'Two Days in the Valley' (1996) and a few other 'Pulp Fiction'
wannabes are a waste of time and conversation.

'Grosse Pointe Blank' is being compared to 'Pulp Fiction' and that is the
most ludicrous insult of them all.  Martin Blank (John Cusack) is a freelance
hitman and former government assassin who returns to his Michigan hometown
for his ten year high school reunion.  Along the way he finds some time to
spend with his psychiatrist (Alan Arkin) and rubs elbows with a fellow hitman
(Dan Aykroyd) whose trying to recruit Cusack into joining him in business as
a partner.  Upon returning to the place where he grew up, he visits his
mother living in a mental institution, visits his father's grave and stops by
to view the place his old house used to be and he is stunned to see it is now
the site of a convenience store.

Throughout the course of the picture he is tailed by two government watchdogs
and another assassin working in tow with Aykroyd to eventually kill him and
he finally meets his high school sweetheart, the girl he stood up on prom
night (Minnie Driver).  She is stunned to see him again and plays hard to get
in a lovable fashion which brings back the good old days for the two of them.

'Grosse Pointe Blank' starts off in a most quirky and unusual fashion with a
likable tone and feel to it but as soon as Cusack and Driver meet, this
motion picture takes a sharp turn in the direction of being unbearably
abysmal; full of dialogue that has no coherent structure and has situations
and characters straight from the mannequins reject pile.

It's such a disappointment to see John Cusack in a role that undercuts his
value as an actor and Cusack is an extremely respectable star who has made a
name for himself by wanting a low but noticeable profile in Hollywood since
most of his films are critical rather than financial successes.  'Grosse
Pointe Blank' leaves a bad taste in your mouth after you view it and revels
in its own imagined glory as it builds itself up to be more than it really is
and in the final payoff it falls flat on its face being full of meandering
dark humour and heartless characters, some of whom redeem themselves too late
and others who are unnecessary in the film's attempt to entertain.

OUT OF 5> zero

The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).

The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.

Please direct comments/criticisms of the review to relevant newsgroups.

Broken URLs inthe reviews are the responsibility of the author.

The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.

Related links: index of all rec.arts.movies.reviews reviews


text:
#include "test/frame_generator_capturer.h"

#include <algorithm>
#include <cmath>
#include <limits>
#include <memory>
#include <utility>
#include <vector>

#include "absl/strings/match.h"
#include "api/test/create_frame_generator.h"
#include "rtc_base/checks.h"
#include "rtc_base/critical_section.h"
#include "rtc_base/logging.h"
#include "rtc_base/task_queue.h"
#include "rtc_base/time_utils.h"
#include "system_wrappers/include/clock.h"
#include "test/testsupport/file_utils.h"

namespace webrtc {
namespace test {
namespace {
std::string TransformFilePath(std::string path) {
  static const std::string resource_prefix = "res://";
  int ext_pos = path.rfind(".");
  if (ext_pos < 0) {
    return test::ResourcePath(path, "yuv");
  } else if (absl::StartsWith(path, resource_prefix)) {
    std::string name = path.substr(resource_prefix.length(), ext_pos);
    std::string ext = path.substr(ext_pos, path.size());
    return test::ResourcePath(name, ext);
  }
  return path;
}
}  // namespace

FrameGeneratorCapturer::FrameGeneratorCapturer(
    Clock* clock,
    std::unique_ptr<FrameGeneratorInterface> frame_generator,
    int target_fps,
    TaskQueueFactory& task_queue_factory)
    : clock_(clock),
      sending_(true),
      sink_wants_observer_(nullptr),
      frame_generator_(std::move(frame_generator)),
      source_fps_(target_fps),
      target_capture_fps_(target_fps),
      first_frame_capture_time_(-1),
      task_queue_(task_queue_factory.CreateTaskQueue(
          "FrameGenCapQ",
          TaskQueueFactory::Priority::HIGH)) {
  RTC_DCHECK(frame_generator_);
  RTC_DCHECK_GT(target_fps, 0);
}

FrameGeneratorCapturer::~FrameGeneratorCapturer() {
  Stop();
}

std::unique_ptr<FrameGeneratorCapturer> FrameGeneratorCapturer::Create(
    Clock* clock,
    TaskQueueFactory& task_queue_factory,
    FrameGeneratorCapturerConfig::SquaresVideo config) {
  return std::make_unique<FrameGeneratorCapturer>(
      clock,
      CreateSquareFrameGenerator(config.width, config.height,
                                 config.pixel_format, config.num_squares),
      config.framerate, task_queue_factory);
}
std::unique_ptr<FrameGeneratorCapturer> FrameGeneratorCapturer::Create(
    Clock* clock,
    TaskQueueFactory& task_queue_factory,
    FrameGeneratorCapturerConfig::SquareSlides config) {
  return std::make_unique<FrameGeneratorCapturer>(
      clock,
      CreateSlideFrameGenerator(
          config.width, config.height,
          /*frame_repeat_count*/ config.change_interval.seconds<double>() *
              config.framerate),
      config.framerate, task_queue_factory);
}
std::unique_ptr<FrameGeneratorCapturer> FrameGeneratorCapturer::Create(
    Clock* clock,
    TaskQueueFactory& task_queue_factory,
    FrameGeneratorCapturerConfig::VideoFile config) {
  RTC_CHECK(config.width && config.height);
  return std::make_unique<FrameGeneratorCapturer>(
      clock,
      CreateFromYuvFileFrameGenerator({TransformFilePath(config.name)},
                                      config.width, config.height,
                                      /*frame_repeat_count*/ 1),
      config.framerate, task_queue_factory);
}

std::unique_ptr<FrameGeneratorCapturer> FrameGeneratorCapturer::Create(
    Clock* clock,
    TaskQueueFactory& task_queue_factory,
    FrameGeneratorCapturerConfig::ImageSlides config) {
  std::unique_ptr<FrameGeneratorInterface> slides_generator;
  std::vector<std::string> paths = config.paths;
  for (std::string& path : paths)
    path = TransformFilePath(path);

  if (config.crop.width || config.crop.height) {
    TimeDelta pause_duration =
        config.change_interval - config.crop.scroll_duration;
    RTC_CHECK_GE(pause_duration, TimeDelta::Zero());
    int crop_width = config.crop.width.value_or(config.width);
    int crop_height = config.crop.height.value_or(config.height);
    RTC_CHECK_LE(crop_width, config.width);
    RTC_CHECK_LE(crop_height, config.height);
    slides_generator = CreateScrollingInputFromYuvFilesFrameGenerator(
        clock, paths, config.width, config.height, crop_width, crop_height,
        config.crop.scroll_duration.ms(), pause_duration.ms());
  } else {
    slides_generator = CreateFromYuvFileFrameGenerator(
        paths, config.width, config.height,
        /*frame_repeat_count*/ config.change_interval.seconds<double>() *
            config.framerate);
  }
  return std::make_unique<FrameGeneratorCapturer>(
      clock, std::move(slides_generator), config.framerate, task_queue_factory);
}

std::unique_ptr<FrameGeneratorCapturer> FrameGeneratorCapturer::Create(
    Clock* clock,
    TaskQueueFactory& task_queue_factory,
    const FrameGeneratorCapturerConfig& config) {
  if (config.video_file) {
    return Create(clock, task_queue_factory, *config.video_file);
  } else if (config.image_slides) {
    return Create(clock, task_queue_factory, *config.image_slides);
  } else if (config.squares_slides) {
    return Create(clock, task_queue_factory, *config.squares_slides);
  } else {
    return Create(clock, task_queue_factory,
                  config.squares_video.value_or(
                      FrameGeneratorCapturerConfig::SquaresVideo()));
  }
}

void FrameGeneratorCapturer::SetFakeRotation(VideoRotation rotation) {
  rtc::CritScope cs(&lock_);
  fake_rotation_ = rotation;
}

void FrameGeneratorCapturer::SetFakeColorSpace(
    absl::optional<ColorSpace> color_space) {
  rtc::CritScope cs(&lock_);
  fake_color_space_ = color_space;
}

bool FrameGeneratorCapturer::Init() {
  // This check is added because frame_generator_ might be file based and should
  // not crash because a file moved.
  if (frame_generator_.get() == nullptr)
    return false;

  frame_task_ = RepeatingTaskHandle::DelayedStart(
      task_queue_.Get(),
      TimeDelta::Seconds(1) / GetCurrentConfiguredFramerate(), [this] {
        InsertFrame();
        return TimeDelta::Seconds(1) / GetCurrentConfiguredFramerate();
      });
  return true;
}

void FrameGeneratorCapturer::InsertFrame() {
  rtc::CritScope cs(&lock_);
  if (sending_) {
    FrameGeneratorInterface::VideoFrameData frame_data =
        frame_generator_->NextFrame();
    // TODO(srte): Use more advanced frame rate control to allow arbritrary
    // fractions.
    int decimation =
        std::round(static_cast<double>(source_fps_) / target_capture_fps_);
    for (int i = 1; i < decimation; ++i)
      frame_data = frame_generator_->NextFrame();

    VideoFrame frame = VideoFrame::Builder()
                           .set_video_frame_buffer(frame_data.buffer)
                           .set_rotation(fake_rotation_)
                           .set_timestamp_us(clock_->TimeInMicroseconds())
                           .set_ntp_time_ms(clock_->CurrentNtpInMilliseconds())
                           .set_update_rect(frame_data.update_rect)
                           .set_color_space(fake_color_space_)
                           .build();
    if (first_frame_capture_time_ == -1) {
      first_frame_capture_time_ = frame.ntp_time_ms();
    }

    TestVideoCapturer::OnFrame(frame);
  }
}

void FrameGeneratorCapturer::Start() {
  {
    rtc::CritScope cs(&lock_);
    sending_ = true;
  }
  if (!frame_task_.Running()) {
    frame_task_ = RepeatingTaskHandle::Start(task_queue_.Get(), [this] {
      InsertFrame();
      return TimeDelta::Seconds(1) / GetCurrentConfiguredFramerate();
    });
  }
}

void FrameGeneratorCapturer::Stop() {
  rtc::CritScope cs(&lock_);
  sending_ = false;
}

void FrameGeneratorCapturer::ChangeResolution(size_t width, size_t height) {
  rtc::CritScope cs(&lock_);
  frame_generator_->ChangeResolution(width, height);
}

void FrameGeneratorCapturer::ChangeFramerate(int target_framerate) {
  rtc::CritScope cs(&lock_);
  RTC_CHECK(target_capture_fps_ > 0);
  if (target_framerate > source_fps_)
    RTC_LOG(LS_WARNING) << "Target framerate clamped from " << target_framerate
                        << " to " << source_fps_;
  if (source_fps_ % target_capture_fps_ != 0) {
    int decimation =
        std::round(static_cast<double>(source_fps_) / target_capture_fps_);
    int effective_rate = target_capture_fps_ / decimation;
    RTC_LOG(LS_WARNING) << "Target framerate, " << target_framerate
                        << ", is an uneven fraction of the source rate, "
                        << source_fps_
                        << ". The framerate will be :" << effective_rate;
  }
  target_capture_fps_ = std::min(source_fps_, target_framerate);
}

void FrameGeneratorCapturer::SetSinkWantsObserver(SinkWantsObserver* observer) {
  rtc::CritScope cs(&lock_);
  RTC_DCHECK(!sink_wants_observer_);
  sink_wants_observer_ = observer;
}

void FrameGeneratorCapturer::AddOrUpdateSink(
    rtc::VideoSinkInterface<VideoFrame>* sink,
    const rtc::VideoSinkWants& wants) {
  TestVideoCapturer::AddOrUpdateSink(sink, wants);
  rtc::CritScope cs(&lock_);
  if (sink_wants_observer_) {
    // Tests need to observe unmodified sink wants.
    sink_wants_observer_->OnSinkWantsChanged(sink, wants);
  }
  UpdateFps(GetSinkWants().max_framerate_fps);
}

void FrameGeneratorCapturer::RemoveSink(
    rtc::VideoSinkInterface<VideoFrame>* sink) {
  TestVideoCapturer::RemoveSink(sink);

  rtc::CritScope cs(&lock_);
  UpdateFps(GetSinkWants().max_framerate_fps);
}

void FrameGeneratorCapturer::UpdateFps(int max_fps) {
  if (max_fps < target_capture_fps_) {
    wanted_fps_.emplace(max_fps);
  } else {
    wanted_fps_.reset();
  }
}

void FrameGeneratorCapturer::ForceFrame() {
  // One-time non-repeating task,
  task_queue_.PostTask([this] { InsertFrame(); });
}

int FrameGeneratorCapturer::GetCurrentConfiguredFramerate() {
  rtc::CritScope cs(&lock_);
  if (wanted_fps_ && *wanted_fps_ < target_capture_fps_)
    return *wanted_fps_;
  return target_capture_fps_;
}

}  // namespace test
}  // namespace webrtc


text:
gem "minitest"
require "minitest/autorun"
require "minitest/focus"
require "minitest/hooks/default"
require "google/cloud/datastore"
require "securerandom"

module Acceptance
  ##
  # This class can be used with the spec DSL.
  # To do so, add :datastore to describe:
  #
  #   describe "My Datastore Test", :datastore do
  #     it "does a thing" do
  #       your.code.must_be :thing?
  #     end
  #   end
  class DatastoreTest < Minitest::Test
    # Add spec DSL
    extend Minitest::Spec::DSL

    # Register this spec type for when :datastore is used.
    register_spec_type self do |_desc, *addl|
      addl.include? :datastore
    end

    def self.run_one_method klass, method_name, reporter
      result = nil
      reporter.prerecord klass, method_name
      (1..3).each do |try|
        result = Minitest.run_one_method klass, method_name
        break if result.passed? || result.skipped?
        puts "Retrying #{klass}##{method_name} (#{try})"
      end
      reporter.record result
    end
  end
end

def time_plus_random
  "#{Time.now.to_i}_#{SecureRandom.hex 4}"
end

def task_entity key
  datastore.entity key do |t|
    t["category"] = "Personal"
    t["created"] = Time.utc 1999, 12, rand(1..31)
    t["done"] = false
    t["priority"] = 4
    t["percent_complete"] = 10.0
    t["description"] = "A task description."
    t["tag"] = ["fun", "programming"]
  end
end

def find_or_save_task_list task_list_key
  tl = datastore.find task_list_key
  if tl.nil?
    wait_until description: "find task_list #{task_list_key.name}" do
      tl = datastore.entity task_list_key
      datastore.save tl
      sleep 1
      tl = datastore.find task_list_key
    end
  end
  tl
end

def find_or_save_task task_key
  t = datastore.find task_key
  if t.nil?
    wait_until description: "find task #{task_key.name}" do
      t = task_entity task_key
      datastore.save t
      sleep 1
      t = datastore.find task_key
    end
  end
  t
end

# Keep trying a block of code until the code of block yield a true statement or
# raise error after timeout
def wait_until timeout: 60, description: "execute block"
  t_begin = Time.now
  delay = 1
  loop do
    break if yield
    sleep delay
    raise "Timeout attempting to #{description} after #{timeout}s" if (Time.now - t_begin) > timeout
    delay += 1
  end
end


text:
Code for Rails::Engine+RSpec+Capybara tutorial

Possibly useful for testing an library that relies on access to a mountable engine. See [scopable_views](https://github.com/mikebannister/scopable_views)


text:
<!DOCTYPE html>

	<meta charset="utf-8">
	<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
	<meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
	<link rel="stylesheet" type="text/css" href="../resources/syntax/shCore.css">
	<link rel="stylesheet" type="text/css" href="../resources/demo.css">

	<title>Editor examples - Editor bubble editing examples</title>

Editor example Editor bubble editing examples

Editor has three different Editor modes:

Primary editing

Bubble editing

Inline editing

The examples in this section show the bubble editing option, which displays one or more form fields in a bubble above the fields being edited.

Bubble editing is designed to have all the fast editing options of inline editing (i.e. a single click to activate) without the potential layout issues that
				inline editing presents (for example a textarea or wysiwyg input control wouldn't fit into a table without causing the cell to resize).

Bubble editing

								Simple bubble editing

								Multiple fields in a bubble

								Form control and display options

								Default control and display options

								Bubble editing with in table row controls

Please refer to the DataTables documentation for full information about its API properties and methods.

					Additionally, there are a wide range of extensions and plug-ins which extend the capabilities of DataTables.

DataTables designed and created by SpryMedia Ltd © 2007-2015

					DataTables is licensed under the MIT license.


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Security.Claims;
using System.Security.Principal;
using System.Web;
using System.Web.Security;
using Microsoft.AspNet.Identity;
using Newtonsoft.Json;
using Umbraco.Core.Configuration;

namespace Umbraco.Core.Security
{

    /// <summary>
    /// A custom user identity for the Umbraco backoffice
    /// </summary>
    /// <remarks>
    /// This inherits from FormsIdentity for backwards compatibility reasons since we still support the forms auth cookie, in v8 we can
    /// change over to 'pure' asp.net identity and just inherit from ClaimsIdentity.
    /// </remarks>
    [Serializable]
    public class UmbracoBackOfficeIdentity : FormsIdentity
    {
        public static UmbracoBackOfficeIdentity FromClaimsIdentity(ClaimsIdentity identity)
        {
            foreach (var t in RequiredBackOfficeIdentityClaimTypes)
            {
                //if the identity doesn't have the claim, or the claim value is null
                if (identity.HasClaim(x => x.Type == t) == false || identity.HasClaim(x => x.Type == t && x.Value.IsNullOrWhiteSpace()))
                {
                    throw new InvalidOperationException("Cannot create a " + typeof(UmbracoBackOfficeIdentity) + " from " + typeof(ClaimsIdentity) + " since the required claim " + t + " is missing");
                }
            }

            var username = identity.GetUserName();
            var session = identity.FindFirstValue(Constants.Security.SessionIdClaimType);
            var securityStamp = identity.FindFirstValue(Microsoft.AspNet.Identity.Constants.DefaultSecurityStampClaimType);
            var startContentId = identity.FindFirstValue(Constants.Security.StartContentNodeIdClaimType);
            var startMediaId = identity.FindFirstValue(Constants.Security.StartMediaNodeIdClaimType);

            var culture = identity.FindFirstValue(ClaimTypes.Locality);
            var id = identity.FindFirstValue(ClaimTypes.NameIdentifier);
            var realName = identity.FindFirstValue(ClaimTypes.GivenName);

            if (username == null || startContentId == null || startMediaId == null
                || culture == null || id == null
                || realName == null || session == null)
                throw new InvalidOperationException("Cannot create a " + typeof(UmbracoBackOfficeIdentity) + " from " + typeof(ClaimsIdentity) + " since there are missing required claims");

            int[] startContentIdsAsInt;
            int[] startMediaIdsAsInt;
            if (startContentId.DetectIsJson() == false || startMediaId.DetectIsJson() == false)
                throw new InvalidOperationException("Cannot create a " + typeof(UmbracoBackOfficeIdentity) + " from " + typeof(ClaimsIdentity) + " since the data is not formatted correctly - either content or media start Ids are not JSON");

            try
            {
                startContentIdsAsInt = JsonConvert.DeserializeObject<int[]>(startContentId);
                startMediaIdsAsInt = JsonConvert.DeserializeObject<int[]>(startMediaId);
            }
            catch (Exception e)
            {
                throw new InvalidOperationException("Cannot create a " + typeof(UmbracoBackOfficeIdentity) + " from " + typeof(ClaimsIdentity) + " since the data is not formatted correctly - either content or media start Ids could not be parsed as JSON", e);
            }

            var roles = identity.FindAll(x => x.Type == DefaultRoleClaimType).Select(role => role.Value).ToList();
            var allowedApps = identity.FindAll(x => x.Type == Constants.Security.AllowedApplicationsClaimType).Select(app => app.Value).ToList();

            var userData = new UserData
            {
                SecurityStamp = securityStamp,
                SessionId = session,
                AllowedApplications = allowedApps.ToArray(),
                Culture = culture,
                Id = id,
                Roles = roles.ToArray(),
                Username = username,
                RealName = realName,
                StartContentNodes = startContentIdsAsInt,
                StartMediaNodes = startMediaIdsAsInt
            };

            return new UmbracoBackOfficeIdentity(identity, userData);
        }

        /// <summary>
        /// Create a back office identity based on user data
        /// </summary>
        /// <param name="userdata"></param>
        public UmbracoBackOfficeIdentity(UserData userdata)
            //This just creates a temp/fake ticket
            : base(new FormsAuthenticationTicket(userdata.Username, true, 10))
        {
            if (userdata == null) throw new ArgumentNullException("userdata");
            UserData = userdata;
            AddUserDataClaims();
        }

        /// <summary>
        /// Create a back office identity based on an existing claims identity
        /// </summary>
        /// <param name="claimsIdentity"></param>
        /// <param name="userdata"></param>
        public UmbracoBackOfficeIdentity(ClaimsIdentity claimsIdentity, UserData userdata)
            //This just creates a temp/fake ticket
            : base(new FormsAuthenticationTicket(userdata.Username, true, 10))
        {
            if (claimsIdentity == null) throw new ArgumentNullException("claimsIdentity");
            if (userdata == null) throw new ArgumentNullException("userdata");

            if (claimsIdentity is FormsIdentity)
            {
                //since it's a forms auth ticket, it is from a cookie so add that claim
                AddClaim(new Claim(ClaimTypes.CookiePath, "/", ClaimValueTypes.String, Issuer, Issuer, this));
            }

            _currentIssuer = claimsIdentity.AuthenticationType;
            UserData = userdata;
            AddExistingClaims(claimsIdentity);
            Actor = claimsIdentity;
            AddUserDataClaims();
        }

        /// <summary>
        /// Create a new identity from a forms auth ticket
        /// </summary>
        /// <param name="ticket"></param>
        public UmbracoBackOfficeIdentity(FormsAuthenticationTicket ticket)
            : base(ticket)
        {
            //since it's a forms auth ticket, it is from a cookie so add that claim
            AddClaim(new Claim(ClaimTypes.CookiePath, "/", ClaimValueTypes.String, Issuer, Issuer, this));

            UserData = JsonConvert.DeserializeObject<UserData>(ticket.UserData);
            AddUserDataClaims();
        }

        /// <summary>
        /// Used for cloning
        /// </summary>
        /// <param name="identity"></param>
        private UmbracoBackOfficeIdentity(UmbracoBackOfficeIdentity identity)
            : base(identity)
        {
            if (identity.Actor != null)
            {
                _currentIssuer = identity.AuthenticationType;
                AddExistingClaims(identity);
                Actor = identity.Clone();
            }

            UserData = identity.UserData;
            AddUserDataClaims();
        }

        public const string Issuer = "UmbracoBackOffice";
        private readonly string _currentIssuer = Issuer;

        /// <summary>
        /// Used during ctor to add existing claims from an existing ClaimsIdentity
        /// </summary>
        /// <param name="claimsIdentity"></param>
        private void AddExistingClaims(ClaimsIdentity claimsIdentity)
        {
            foreach (var claim in claimsIdentity.Claims)
            {
                //In one special case we will replace a claim if it exists already and that is the
                // Forms auth claim for name which automatically gets added
                TryRemoveClaim(FindFirst(x => x.Type == claim.Type && x.Issuer == "Forms"));

                AddClaim(claim);
            }
        }

        /// <summary>
        /// Returns the required claim types for a back office identity
        /// </summary>
        /// <remarks>
        /// This does not incude the role claim type or allowed apps type since that is a collection and in theory could be empty
        /// </remarks>
        public static IEnumerable<string> RequiredBackOfficeIdentityClaimTypes
        {
            get
            {
                return new[]
                {
                    ClaimTypes.NameIdentifier, //id
                    ClaimTypes.Name,  //username
                    ClaimTypes.GivenName,
                    Constants.Security.StartContentNodeIdClaimType,
                    Constants.Security.StartMediaNodeIdClaimType,
                    ClaimTypes.Locality,
                    Constants.Security.SessionIdClaimType,
                    Microsoft.AspNet.Identity.Constants.DefaultSecurityStampClaimType
                };
            }
        }

        /// <summary>
        /// Adds claims based on the UserData data
        /// </summary>
        private void AddUserDataClaims()
        {
            //This is the id that 'identity' uses to check for the user id
            if (HasClaim(x => x.Type == ClaimTypes.NameIdentifier) == false)
                AddClaim(new Claim(ClaimTypes.NameIdentifier, UserData.Id.ToString(), ClaimValueTypes.Integer32, Issuer, Issuer, this));

            if (HasClaim(x => x.Type == ClaimTypes.Name) == false)
                AddClaim(new Claim(ClaimTypes.Name, UserData.Username, ClaimValueTypes.String, Issuer, Issuer, this));

            if (HasClaim(x => x.Type == ClaimTypes.GivenName) == false)
                AddClaim(new Claim(ClaimTypes.GivenName, UserData.RealName, ClaimValueTypes.String, Issuer, Issuer, this));

            if (HasClaim(x => x.Type == Constants.Security.StartContentNodeIdClaimType) == false)
                AddClaim(new Claim(Constants.Security.StartContentNodeIdClaimType, JsonConvert.SerializeObject(StartContentNodes), ClaimValueTypes.Integer32, Issuer, Issuer, this));

            if (HasClaim(x => x.Type == Constants.Security.StartMediaNodeIdClaimType) == false)
                AddClaim(new Claim(Constants.Security.StartMediaNodeIdClaimType, JsonConvert.SerializeObject(StartMediaNodes), ClaimValueTypes.Integer32, Issuer, Issuer, this));

            if (HasClaim(x => x.Type == ClaimTypes.Locality) == false)
                AddClaim(new Claim(ClaimTypes.Locality, Culture, ClaimValueTypes.String, Issuer, Issuer, this));

            if (HasClaim(x => x.Type == Constants.Security.SessionIdClaimType) == false && SessionId.IsNullOrWhiteSpace() == false)
            {
                AddClaim(new Claim(Constants.Security.SessionIdClaimType, SessionId, ClaimValueTypes.String, Issuer, Issuer, this));

                //The security stamp claim is also required... this is because this claim type is hard coded
                // by the SecurityStampValidator, see: https://katanaproject.codeplex.com/workitem/444
                if (HasClaim(x => x.Type == Microsoft.AspNet.Identity.Constants.DefaultSecurityStampClaimType) == false)
                {
                    AddClaim(new Claim(Microsoft.AspNet.Identity.Constants.DefaultSecurityStampClaimType, SecurityStamp, ClaimValueTypes.String, Issuer, Issuer, this));
                }
            }

            //Add each app as a separate claim
            if (HasClaim(x => x.Type == Constants.Security.AllowedApplicationsClaimType) == false)
            {
                foreach (var application in AllowedApplications)
                {
                    AddClaim(new Claim(Constants.Security.AllowedApplicationsClaimType, application, ClaimValueTypes.String, Issuer, Issuer, this));
                }
            }

            //Claims are added by the ClaimsIdentityFactory because our UserStore supports roles, however this identity might
            // not be made with that factory if it was created with a FormsAuthentication ticket so perform the check
            if (HasClaim(x => x.Type == DefaultRoleClaimType) == false)
            {
                //manually add them based on the UserData
                foreach (var roleName in UserData.Roles)
                {
                    AddClaim(new Claim(RoleClaimType, roleName, ClaimValueTypes.String, Issuer, Issuer, this));
                }
            }

        }

        protected internal UserData UserData { get; private set; }

        /// <summary>
        /// Gets the type of authenticated identity.
        /// </summary>
        /// <returns>
        /// The type of authenticated identity. This property always returns "UmbracoBackOffice".
        /// </returns>
        public override string AuthenticationType
        {
            get { return _currentIssuer; }
        }

        public int[] StartContentNodes
        {
            get { return UserData.StartContentNodes; }
        }

        public int[] StartMediaNodes
        {
            get { return UserData.StartMediaNodes; }
        }

        public string[] AllowedApplications
        {
            get { return UserData.AllowedApplications; }
        }

        public object Id
        {
            get { return UserData.Id; }
        }

        public string RealName
        {
            get { return UserData.RealName; }
        }

        public string Username
        {
            get { return UserData.Username; }
        }

        public string Culture
        {
            get { return UserData.Culture; }
        }

        public string SessionId
        {
            get { return UserData.SessionId; }
        }

        public string SecurityStamp
        {
            get { return UserData.SecurityStamp; }
        }

        public string[] Roles
        {
            get { return UserData.Roles; }
        }

        /// <summary>
        /// Gets a copy of the current <see cref="T:UmbracoBackOfficeIdentity"/> instance.
        /// </summary>
        /// <returns>
        /// A copy of the current <see cref="T:UmbracoBackOfficeIdentity"/> instance.
        /// </returns>
        public override ClaimsIdentity Clone()
        {
            return new UmbracoBackOfficeIdentity(this);
        }

    }
}


text:
<?php
namespace Application\Model;

use Zend\Db\TableGateway\TableGateway;
use Zend\Db\Sql\Expression;
use Zend\Db\Sql\Sql;

use Application\Model\Entity\PhieuChi;

class PhieuChiTable
{

    protected $tableGateway;

    public function __construct(TableGateway $tableGateway)
    {
        $this->tableGateway = $tableGateway;
    }

    public function getPhieuChiAndUserByArrayConditionAnd2ArrayColumn($array_conditions=array(), $array_columns_1=array(), $array_columns_2=array()){
        /*
            chuyền vào 2 tham số:   1 tham số là mảng điều kiện,
                                    1 tham số là mảng cột ở bảng 1 cần lấy ra,
                                    1 tham số là mảng cột ở bảng 2 cần lấy ra,
        */
        $adapter = $this->tableGateway->adapter;
        $sql = new Sql($adapter);
        // select
        $sqlSelect = $sql->select();
        $sqlSelect->from(array('t1'=>'phieu_chi'));
        $sqlSelect->join(array('t2'=>'user'), 't1.id_user=t2.user_id', $array_columns_2, 'LEFT');
        if($array_columns_1){
            $sqlSelect->columns($array_columns_1);
        }
        if($array_conditions){
            $sqlSelect->where($array_conditions);
        }
        $statement = $this->tableGateway->getSql()->prepareStatementForSqlObject($sqlSelect);
        $resultSets = $statement->execute();
        $allRow = array();
        foreach ($resultSets as $key => $resultSet) {
            $allRow[] = $resultSet;
        }
        return $allRow;
    }

}


text:
namespace nau
{
	namespace event_
	{
			class TimeSensor: public Sensor
			{

			public:

				typedef enum {ENABLED, LOOP, COUNT_BOOLPROP} BoolProp;
				typedef enum {SECONDS_TO_START, CYCLE_INTERVAL, COUNT_FLOATPROP} FloatProp;
				static const std::string FloatPropNames[COUNT_FLOATPROP];
				static const std::string BoolPropNames[COUNT_BOOLPROP];

			protected:

				std::vector<bool> BoolProps;
				std::vector<float> FloatProps;

			private:
				float startTime;
				float stopTime;
				float fraction;

			public:
				TimeSensor(std::string name, bool enabled, int secondsToStart,
					int cycleInterval, bool loop);
				TimeSensor(const TimeSensor &c);
				TimeSensor(void);
				~TimeSensor(void);

				bool getEnabled(void);
				int getSecondsToStart(void);
				bool getLoop(void);
				float getCycleInterval(void);

				void removeTimeListener(void);
				void addTimeListener(void);
				void eventReceived(const std::string &sender, const std::string &eventType,
					const std::shared_ptr<IEventData> &evt);

				void init();

				const std::string &getBoolPropNames(unsigned int i);
				const std::string &getFloatPropNames(unsigned int i);

				void setBool(unsigned int prop, bool value);
				void setFloat(unsigned int prop, float value);

				float getFloat(unsigned int prop);
				bool getBool(unsigned int prop);

				unsigned int getFloatPropCount() {return COUNT_FLOATPROP;};
				unsigned int getBoolPropCount() {return COUNT_BOOLPROP;};

			};
	};
};
#endif


text:
<?php

namespace app\modules\comunicacaointerna\models;

use Yii;

/**
 * This is the model class for table "cargos_car".
 *
 * @property string $car_codcargo
 * @property string $car_cargo
 *
 * @property ColaboradorCol[] $colaboradorCols
 */
class Cargos extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'cargos_car';
    }

    /**
     * @return \yii\db\Connection the database connection used by this AR class.
     */
    public static function getDb()
    {
        return Yii::$app->get('db_base');
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['car_cargo'], 'required'],
            [['car_cargo'], 'string', 'max' => 45]
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'car_codcargo' => 'Car Codcargo',
            'car_cargo' => 'Car Cargo',
        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getColaboradorCols()
    {
        return $this->hasMany(ColaboradorCol::className(), ['col_codcargo' => 'car_codcargo']);
    }
}


text:
@charset "utf-8";

/*
作者:新鲜人
地址:http://www.htmlit.com.cn
邮箱:u2lei@yahoo.com.cn
     xinxr@msn.com
*/
* { padding: 0; margin: 0; box-sizing: border-box; }
body { min-width: 980px; padding: 0; margin: 0; font-family: "Microsoft YaHei", STHeiti, "Hiragino Sans GB", "WenQuanYi Micro Hei", "Heiti SC", NSimSun, SimSun, Arial, Helvetica, sans-serif; color: #333333; font-size: 14px; line-height: 20px; }
div,
h1,
h2,
h3,
h4,
p,
form,
ul,
label,
input,
textarea,
select,
img,
span { margin: 0; padding: 0; }
table { border-collapse: collapse; }
a { text-decoration: none; color: #333333; }
a:hover { color: #d60000; }
.clear { clear: both; }
img { border: none; }
h1,
h2,
h3,
h4,
h5,
h6 { display: block; font-weight: bold; }
h1 { font-size: 2em; margin: .67em 0; }
h2 { font-size: 1.5em; margin: .83em 0; }
h3 { font-size: 1.17em; margin: 1em 0; }
h4 { font-size: 1em; margin: 1.33em 0; }
h5 { font-size: 0.83em; margin: 1.67em 0; }
h6 { font-size: 0.67em; margin: 2.33em 0; }
ul,
ol,
dl { padding: 0; margin: 0; }
dd { padding: 0; margin: 0; }
ul { list-style: none; }
li { list-style-type: none; }
ol { list-style-type: decimal; margin-left: 2em; }
label { cursor: pointer; }

/**/
table { border-collapse: collapse; border: 1px solid #E1E1E1; background: #ffffff; line-height: 120%; }
table label { -ms-text-size-adjust: 100%; /*用于解决IE10 for WP8字体过大的问题*/ }
td,
th { border: 1px solid #E1E1E1; margin: 0; padding: 3px 5px; text-indent: 0; vertical-align: middle; }
tr img { margin-bottom: -4px; }
tr.color1 { background: #ededed; }
tr.color2 { background: #F4F4F4; }
tr.color3 { background: #ffffff; }
tr.color4 { background: #ffffdd; }

/*后台顶部*/
.header { margin-bottom: 5px; height: 85px; padding: 0; background: #3a6ea5; position: relative; }
.header .top { }

/**/
.logo { width: 200px; height: 70px; padding: 10px 0 0 0; left: 20px; }
.logo img { width: 200px; height: 70px; padding: 0 0 0 0; background: url("../image/admin/logo.png") center center no-repeat; }

/**/
.user { position: absolute; right: 13px; top: 10px; width: 400px; height: 40px; text-align: right; color: #ffffff; }
.user #avatar { float: right; width: 40px; height: 40px; margin-left: 10px; margin-top: 0px; }
.username { padding: 0; height: 20px; line-height: 20px; overflow: hidden; }
.userbtn { padding: 0; height: 20px; line-height: 20px; }
.userbtn a { padding: 0; margin-left: 15px; color: #ffffff; height: 20px; line-height: 20px; vertical-align: top; }
.userbtn a.logout { padding-left: 20px; background: url(../image/common/tuic_2.png) no-repeat left center; }
.userbtn .logout:hover { padding-left: 20px; color: #000000; background: url(../image/common/tuic_1.png) no-repeat left center; }
.userbtn a.profile { padding-left: 20px; background: url(../image/common/home_2.png) no-repeat left center; }
.userbtn .profile:hover { padding-left: 20px; color: #000000; background: url(../image/common/home_1.png) no-repeat left center; }

/**/
.menu { height: 30px; position: absolute; right: 10px; bottom: 0px; }
.menu ul { float: right; margin: 0; padding: 0; }
.menu ul li { float: left; line-height: 30px; padding: 0; height: 30px; margin: 0 3px; text-align: center; }
.menu ul li a { float: left; line-height: 30px; height: 30px; padding: 0px 15px; color: #333333; background: #ffffff; }
.menu ul li a:hover { float: left; line-height: 30px; height: 30px; padding: 0px 15px; color: #ffffff; background: #b0cdee; }
.menu ul li.on { font-weight: bold; }

/*左边导航*/
.left { float: left; width: 140px; padding: 0px; overflow: hidden; margin: 0 0 0 0; position: absolute; }
.left #leftmenu { }
.left #leftmenu li { float: left; width: 140px; height: 32px; margin-bottom: 5px; background: #ededed; cursor: pointer; }
.left #leftmenu a { float: left; width: 140px; height: 32px; line-height: 35px; cursor: pointer; }
.left #leftmenu a:hover { color: #000000; background: #b0cdee; }
.left #leftmenu span { float: left; width: auto; height: 32px; line-height: 32px; text-align: left; cursor: pointer; margin-left: 25px; padding-left: 22px; }

/*导航高亮*/
.left #leftmenu .on a,
.left #leftmenu #on a:hover { color: #ffffff; background: #3399cc; }
.left #leftmenu li.sub { float: left; width: 140px; height: auto; margin-bottom: 0; border-bottom: 5px solid #fff; cursor: pointer; background: white; }
.left #leftmenu li.sub span { height: 25px; line-height: 25px; text-align: left; width: 105px; padding-left: 35px; padding-right: 0px; overflow: hidden; }
.left #leftmenu li.sub a { height: 25px; line-height: 25px; }
.left #leftmenu li.sub a:hover { background: white; }
.left #leftmenu li.sub span.m-now { font-weight: bold; }

/*导航图标区*/
#leftmenu li span { background-repeat: no-repeat; background-position: 100px 8px; background-image: url(../image/common/window_1.png); }
#leftmenu li.on span { background-image: url(../image/common/window_2.png); }
#leftmenu #nav_build span { background-image: url(../image/common/rebuild_1.png); }
#leftmenu #nav_home span { background-image: url(../image/common/home_1.png); }
#leftmenu #nav_new span { background-image: url(../image/common/new_1.png); }
#leftmenu #nav_article span { background-image: url(../image/common/article_1.png); }
#leftmenu #nav_page span { background-image: url(../image/common/page_1.png); }
#leftmenu #nav_category span { background-image: url(../image/common/category_1.png); }
#leftmenu #nav_tags span { background-image: url(../image/common/tags_1.png); }
#leftmenu #nav_comment span { background-image: url(../image/common/comments_1.png); }
#leftmenu #nav_quoted span { background-image: url(../image/common/quoted_1.png); }
#leftmenu #nav_upload span { background-image: url(../image/common/accessories_1.png); }
#leftmenu #nav_theme span { background-image: url(../image/common/themes_1.png); }
#leftmenu #nav_plugin span { background-image: url(../image/common/plugin_1.png); }
#leftmenu #nav_module span { background-image: url(../image/common/link_1.png); }
#leftmenu #nav_member span { background-image: url(../image/common/user_1.png); }

/*高亮导航图标区*/
#leftmenu #nav_build.on span { background-image: url(../image/common/rebuild_2.png); }
#leftmenu #nav_home.on span { background-image: url(../image/common/home_2.png); }
#leftmenu #nav_new.on span { background-image: url(../image/common/new_2.png); }
#leftmenu #nav_article.on span { background-image: url(../image/common/article_2.png); }
#leftmenu #nav_page.on span { background-image: url(../image/common/page_2.png); }
#leftmenu #nav_category.on span { background-image: url(../image/common/category_2.png); }
#leftmenu #nav_tags.on span { background-image: url(../image/common/tags_2.png); }
#leftmenu #nav_comment.on span { background-image: url(../image/common/comments_2.png); }
#leftmenu #nav_quoted.on span { background-image: url(../image/common/quoted_2.png); }
#leftmenu #nav_upload.on span { background-image: url(../image/common/accessories_2.png); }
#leftmenu #nav_theme.on span { background-image: url(../image/common/themes_2.png); }
#leftmenu #nav_plugin.on span { background-image: url(../image/common/plugin_2.png); }
#leftmenu #nav_module.on span { background-image: url(../image/common/link_2.png); }
#leftmenu #nav_member.on span { background-image: url(../image/common/user_2.png); }
#leftmenu li span { background-repeat: no-repeat; background-position: 0px 8px; }
#leftmenu li.split { height: 0px !important; background: #fff; }
#leftmenu li.split hr { display: none; }

/*主要内容区*/
.main { padding-left: 150px; padding-right: 10px; }

/*后台首页*/
#divMain { float: left; width: 100%; padding: 0px; margin: 0px; }
#divMain a,
#divMain2 a { color: #1d4c7d; }
#divMain a:hover,
#divMain2  a:hover { color: #d60000; }
#divMain2 { padding: 0px; margin: 0px; }
.divHeader { height: 1.8em; line-height: 1.8em; font-size: 1.5em; padding: 5px 0 42px 0; }
.divHeader2 { height: 1.8em; line-height: 1.8em; font-size: 1.5em; padding: 5px 0 42px 0; border-bottom: 5px solid #e0e0e0; margin-bottom:5px; }
.main>#divMain>div[class^="divHeader"],.main>#divMain2>div[class^="divHeader"]{padding-left:40px;background:url('../image/admin/none.gif') 3px 9px no-repeat;background-size:32px;}

/*表   格*/
.tableBorder { line-height: 1.8em; margin-bottom: 0.8em; margin-top: 0.2em; -ms-text-size-adjust: 100%; /*用于解决IE10 for WP8字体过大的问题*/ }
.tableBorder th { text-align: left; }
.tableBorder-thcenter th { text-align: center; }
.ui-sortable tr.color4 { cursor: move; }
.noteinfo { font-weight: normal; font-size: 0.9em; color: #666; font-style: italic; }
.tableFull { width: 100%; }
.tdCenter { text-align: center; }
.td20 { width: 20%; }
.td30 { width: 30%; }
.td5 { width: 5%; }
.td10 { width: 10%; }
.td15 { width: 15%; }
.td25 { width: 25%; }
.table_hover > tbody > tr > td:hover,
.table_hover > tbody > tr > th:hover,
.table_hover > tbody > tr:hover > td,
.table_hover > tbody > tr:hover > th {
  background-color: #ffffdd;
}
.table_striped > tbody > tr:nth-of-type(odd) {
  background-color: #F4F4F4;
}
.table_striped > thead > tr {
  background-color: #ededed;
}
/*表   单*/
form { border: 0px solid black; padding: 0.0em; margin: 0.5em 0; }
form p { padding: 0.5em 0  0.5em 0; line-height: 1.5em; }
input { padding: 0.25em 0.25em 0.25em 0.25em; border: 1px solid #ccc; background-position: bottom; background: #fff; font-size: 1em; }
input[type="radio"] { border: none; background: none; }
select { padding: 0.15em 0.25em 0.20em 0.25em; border: 1px solid #ccc; background-position: bottom; background: #fff; font-size: 1.0em; }
textarea { border: 1px solid #ccc; background-position: bottom; background: #fff; font-size: 1em; }
input.button,
input[type="submit"],
input[type="button"] { color: #ffffff; font-size: 1.1em; height: 29px; padding: 2px 18px 3px 18px; margin: 0 0.5em; background: #3a6ea5; border: 1px solid #3399cc; cursor: pointer; }
input.button:hover { background: #3399cc; }
input.button2 { width: auto; }
input[disabled],
input[disabled]:hover { background: #eee; border: 1px solid #ccc; cursor: not-allowed; color: black; }
input[readonly],
input[readonly]:hover { background: #eee; border: 1px solid #ccc; cursor: not-allowed; color: #808080; }
select.edit { width: 300px; }
input.edit { width: 293px; }
.form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; width: 100%; margin-bottom: 10px; }
.form-group label { padding-top: 7px; margin-bottom: 0; position: relative; min-height: 1px; max-width: 100%; display: inline-block; }
.form-group label.title { padding-top: 7px; width: 12%; float: left; font-weight: bold; }
.form-group label[for="NoRefresh"] { width: 26%; }
.form-group select,
.form-group input[type="text"],
.form-group input[type="number"],
.form-group input[type="password"],
.form-group textarea { width: 80%; float: left; position: relative; min-height: 1px; padding-right: 15px; padding-left: 15px; display: block; padding: 6px !important; }
.form-group select { width: 230px; }
.form-group .imgcheck { margin-top: 8px; margin-left: 0px; }
textarea#editor_content { width: 100%; height: 300px; margin: 0; padding: 0.5em 0.5em; }
textarea#editor_intro { width: 100%; height: 150px; margin: 0; padding: 0.5em 0.5em; }

/*提示DIV*/
div.hint { width: 100%; margin: 0 0 0.2em 0; }
div.hint p { padding: 0.2em 0.5em 0.3em 2.2em; line-height: 1.5em; }
div.hint font { color: black; }
div.hint p.hint_good { background: #d5ffce url(../image/admin/ok.png) no-repeat 8px center; }
div.hint p.hint_bad { background: #ffcece url(../image/admin/exclamation.png) no-repeat 8px center; }
div.hint p.hint_tips { background: #dbe3ff url(../image/admin/information.png) no-repeat 8px center; }

/*后台*/
form.search { background: #f0f0f0; padding: 0.5em; -ms-text-size-adjust: 100%; /*用于解决IE10 for WP8字体过大的问题*/ }
hr { width: 100%; height: 1px; border: none; padding: 0; visibility: hidden; }

/*后台编辑页,文章编辑和页面编辑*/
#divEditRight { float: right; width: 270px; text-align: right; margin-left: -270px }
#divEditPost { margin-top: 30px; }
#divEditLeft { float: left; width: 100%; }

/*文章编辑提交区随动*/
#divBox { width: 270px; position: relative; }
#divFloat { width: 258px; }
#divFloat input.button { margin: 0.2em 0; }
.boxfloat { position: fixed; _position: absolute; top: 0px; z-index: 295; }
.editmod2 { margin: 0.2em 0; padding-right: 275px; }
#divIntro { padding-bottom: 20px; }
.editmod { margin: 1em 0; }
.editmod3 { margin: 0; width: 99%; }
.editinputname { padding: 0 2px 0 3px; line-height: 1em; font-size: 1.1em; font-weight: bold; display: inline-block; }
div.post_edit input#edtTitle { margin: 5px 0 0 0; padding: 3px; line-height: 1.8em; height: 1.8em; font-size: 1.2em; width: 99%; color: #333; }
div.post_edit input#edtAlias,
input#edtTag { margin-top: 5px; padding: 3px; width: 50%; }
#ulTag { margin: 0 3em; }
#ajaxtags { background: #f8f8f8; box-shadow: 0 0 10px #aaa; padding: .5em; }
#ajaxtags a { margin-right: .5em; }
#ajaxtags a.selected { color: black; background: #F8F889; }
#editor_txt { width: 100%; height: 300px; }

/*后台主题管理页*/
div.theme { width: 230px; height: 320px; }
div.theme img { margin-bottom: -3px; }
div.theme-now { float: left; background: #b0cdee; padding: .6em 1em; margin: 0 1em 1em 0; }
div.theme-other { float: left; background: #f0f0f0; padding: .6em 1em; margin: 0 1em 1em 0; }
div.theme-other a { cursor: pointer; }
div.theme-other .theme-name img { opacity: 0.50; }
div.theme>.theme-name,div.theme>.theme-author,div.theme>.theme-style,div.theme>p{height:2.4em;}
div.theme>.theme-name{overflow: hidden;white-space :nowrap;}
div.theme-now .betterTip img { box-shadow: 0 0 10px #3a6ea5; }
div.theme-now .betterTip img,
div.theme-other .betterTip img { border: 2px solid #f6f6f6; }
div.theme-other .betterTip img { box-shadow: 0 0 10px #aaa; }
div.theme-other .betterTip img:hover { border: 2px solid #b0cdee; box-shadow: 0 0 10px #3399cc; }
div.theme-now div,
div.theme-other div { max-width: 220px;     /*overflow:hidden;*/ padding: 0.5em 0 0.5em 0; }
input.theme-config,
input.theme-activate { float: right; height: 26px; width: 46px; margin: 0; padding: 2px 5px 3px 5px; font-size: 1em; }
input.theme-config { margin-top: -3px; }
.hidden { display: none; }
.pagebar { padding: 1em 0 2em 0; }
span.title { font-weight: bold; }
span.star { display: inline-block; margin: 6px; color: red; }
span.note { font-size: 0.9em; }
.pagebar span { color: #333; font-weight: bolder; padding: 3px 5px 2px 5px; border: 1px solid #999; background: #aaa; margin: 1px; }
.pagebar a { border: 1px solid #999; background: #eee; padding: 2px; padding: 2px 5px 2px 5px; margin: 1px; }

/*正文DIV下的导航条*/
.SubMenu { padding: 0 0 0px 0; margin: 0 0 5px 0; width: 100%; text-align: left; font-size: 1em; height: 30px; line-height: 30px; border-bottom: 0px solid #3399cc; display: none; }
.SubMenu span { float: left; margin: 0 0 0 0; text-align: center; padding: 0px 10px; cursor: pointer; color: #333333; }
.SubMenu span.m-left,
.SubMenu span.m-right { float: left; }
.SubMenu a:hover { background: #b0cdee; text-decoration: none; color: black; }
.SubMenu a { color: black; background: #e0e1e2; margin: 0 5px 0 0; float: left; }
.SubMenu span.m-now { background: #3399cc; color: white; }

/* 网站设置页 */
.content-box ul { padding: 10px 0 0 0px; }
.content-box li { float: left; padding: 0 0 0 0; height: 2em; line-height: 2em; margin: 0; }
.content-box .content-box-tabs a.current { background: #ededed; padding: 5px 10px; margin: 0 9px 0 0; line-height: 2em; height: 2em; color: black; font-weight: bolder; }
.content-box .content-box-tabs a { border: 0px solid #7190ba; padding: 5px 10px; margin: 0 9px 0 0; line-height: 2em; height: 2em; }
.totoro { padding: 10px; }
.totoro dd { line-height: 28px; margin-bottom: 5px; }
.totoro .totorotxt { font-size: 12px; }
#totorobox textarea { background: #ffffff; padding: 10px 0; border: none; }

/*checkbox*/
.imgcheck { background: url(../image/admin/checkbox.png) no-repeat 0 bottom; width: 40px; height: 17px; display: inline-block;/*	float:left;*/ cursor: pointer; margin-bottom: -3px; margin-left: 5px; }
.imgcheck-on { background: url(../image/admin/checkbox.png) no-repeat 0 top; }
#batch iframe { float: left; margin: 5px 5px 0 8px; }
#batch p { float: left; }
#batch img { float: left; margin: 7px 5px 0 9px; }
#batch a,
p.hint a { background: url(../image/admin/bullet_go.png) no-repeat 4px 1px; padding-left: 20px; font-weight: bold; }
#batch { width: 100%; margin: 0 0 5px 0; background: #dbe3ff; float: left; padding: 0 0 0 0; }
#batch p { padding: 0.3em 0.5em 0.3em 0; font-size: 1.0em; }
span.button { cursor: pointer; }
a.button,
span.button { border-radius: 2px; padding: 2px 3px 2px 3px; line-height: 1.0em; font-size: 1em; }
a.button:hover,
span.button:hover { box-shadow: 0 0 1px #000; border-radius: 2px; -ms-border-radius: 2px; padding: 2px 3px 2px 3px; }

/*侧栏管理*/
.widget-left { float: left; clear: left; width: 100%; margin-right: -290px; overflow: hidden; }
.widget-list { min-width: 530px; margin-right: 290px; border: 2px solid #EEE; }
.siderbar-list { float: right; width: 290px; margin-left: 0; }
.widget-list-header,
.siderbar-header,
.siderbar-note { clear: both; background: #EDEDED; padding: 5px; font-size: 1.1em; font-weight: bold; text-align: center; margin-bottom: 3px; }
.widget { width: 252px; border: 1px solid #ccc; margin: 3px 4px 3px 4px; padding: 0px; float: left; }
.widget img { margin: 3px; margin-bottom: -3px; }
.widget-title { margin: 0px; padding: 6px; color: #333; cursor: move; }
.widget-title span { display: inline-block; }
.widget_ishidden_true img.more-action { opacity: 0.40; }
.widget-action { float: right; }
.siderbar-drop { float: right; background: #fefefe; border: 2px solid #eee; margin: 0 5px 10px 15px; }
.siderbar-sort-list { float: right; width: 262px; min-height: 30px; position: relative; z-index: 0; }
.siderbar-header:hover { cursor: pointer; color: #000000; background: #b0cdee; }
.siderbar-header .ui-icon { float: right; }
.widget-list-note,
.siderbar-note { color: #666; background: #fff; margin: 0; padding: 0; text-align: center; }
.siderbar-note { position: absolute; z-index: 1; top: 0; left: 0; margin-top: 3px; width: 252px; }
.siderbar-sort-list .widget { position: relative; z-index: 2; }
.widget_source_system .widget-title { background: #e3e4e4; }
.widget_source_user .widget-title { background: #c6d4e5; }
.widget_source_theme .widget-title { background: #d7e3bc; }
.widget_source_plugin .widget-title { background: #d4cddd; }
.widget_source_other .widget-title { background: #ded9c0; }

/*.custom-state-active{background: #B5DCF0;}*/
.siderbar-list .roll { display: none; }
#dialog-confirm,
#dialog-form { display: none; }
#dialog-form form { padding-left: 10px; }
.edui-default .edui-editor { width: 100% !important; }
.plugin-note { cursor: pointer; }
#loading { display: none; position: fixed; z-index: 1000; top: 0; left: 0; height: 100%; width: 100%; background: rgba(170, 170, 170, .3) url('../image/admin/loading-big.gif') 50% 50% no-repeat; }
.login { height: 100px; margin: 0 auto; padding-left: 10px; }
.login dd { width: 180px; float: left; }


text:
#include "Config.h"
#include "Publisher.h"
#include <rt_tests_support/Logger.h>
#include <communication_tests/timestamp_msg.h>

Publisher::Publisher(const std::string& topic) :
	nodeHandle(Config::getConfig()->nodeHandle),
	rosPublisher(nodeHandle->advertise<communication_tests::timestamp_msg>(topic, 1000))
{
}

void Publisher::publish()
{
	Config* config = Config::getConfig();
	ros::Rate publishFrequency(config->pubFrequency);
	int sequenceNumber = 0;
	communication_tests::timestamp_msg message;
	message.payload.clear();
	for(int i = 0; i < config->payloadLength; i++)
	{
		message.payload.push_back(0xFF);
	}
	for(int i = 0; i < config->amountMessages; i++)
	{
		message.seq = i;
		message.last_msg = (i == (config->amountMessages-1));
		struct timespec ts;
		clock_gettime(CLOCK_MONOTONIC_RAW, &ts);
		message.sec = ts.tv_sec;
		message.nsec = ts.tv_nsec;
		rosPublisher.publish(message);
		publishFrequency.sleep();
	}
}

Publisher::~Publisher()
{
}


text:
<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/ads/googleads/v11/services/keyword_plan_idea_service.proto

namespace Google\Ads\GoogleAds\V11\Services;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * The suggested text and AdGroup/Campaign pairing for a given keyword.
 *
 * Generated from protobuf message google.ads.googleads.v11.services.AdGroupKeywordSuggestion
 */
class AdGroupKeywordSuggestion extends \Google\Protobuf\Internal\Message
{
    /**
     * The original keyword text.
     *
     * Generated from protobuf field string keyword_text = 1;
     */
    protected $keyword_text = '';
    /**
     * The normalized version of keyword_text for BROAD/EXACT/PHRASE suggestions.
     *
     * Generated from protobuf field string suggested_keyword_text = 2;
     */
    protected $suggested_keyword_text = '';
    /**
     * The suggested keyword match type.
     *
     * Generated from protobuf field .google.ads.googleads.v11.enums.KeywordMatchTypeEnum.KeywordMatchType suggested_match_type = 3;
     */
    protected $suggested_match_type = 0;
    /**
     * The suggested AdGroup for the keyword.
     * Resource name format: `customers/{customer_id}/adGroups/{ad_group_id}`
     *
     * Generated from protobuf field string suggested_ad_group = 4;
     */
    protected $suggested_ad_group = '';
    /**
     * The suggested Campaign for the keyword.
     * Resource name format: `customers/{customer_id}/campaigns/{campaign_id}`
     *
     * Generated from protobuf field string suggested_campaign = 5;
     */
    protected $suggested_campaign = '';

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $keyword_text
     *           The original keyword text.
     *     @type string $suggested_keyword_text
     *           The normalized version of keyword_text for BROAD/EXACT/PHRASE suggestions.
     *     @type int $suggested_match_type
     *           The suggested keyword match type.
     *     @type string $suggested_ad_group
     *           The suggested AdGroup for the keyword.
     *           Resource name format: `customers/{customer_id}/adGroups/{ad_group_id}`
     *     @type string $suggested_campaign
     *           The suggested Campaign for the keyword.
     *           Resource name format: `customers/{customer_id}/campaigns/{campaign_id}`
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Ads\GoogleAds\V11\Services\KeywordPlanIdeaService::initOnce();
        parent::__construct($data);
    }

    /**
     * The original keyword text.
     *
     * Generated from protobuf field string keyword_text = 1;
     * @return string
     */
    public function getKeywordText()
    {
        return $this->keyword_text;
    }

    /**
     * The original keyword text.
     *
     * Generated from protobuf field string keyword_text = 1;
     * @param string $var
     * @return $this
     */
    public function setKeywordText($var)
    {
        GPBUtil::checkString($var, True);
        $this->keyword_text = $var;

        return $this;
    }

    /**
     * The normalized version of keyword_text for BROAD/EXACT/PHRASE suggestions.
     *
     * Generated from protobuf field string suggested_keyword_text = 2;
     * @return string
     */
    public function getSuggestedKeywordText()
    {
        return $this->suggested_keyword_text;
    }

    /**
     * The normalized version of keyword_text for BROAD/EXACT/PHRASE suggestions.
     *
     * Generated from protobuf field string suggested_keyword_text = 2;
     * @param string $var
     * @return $this
     */
    public function setSuggestedKeywordText($var)
    {
        GPBUtil::checkString($var, True);
        $this->suggested_keyword_text = $var;

        return $this;
    }

    /**
     * The suggested keyword match type.
     *
     * Generated from protobuf field .google.ads.googleads.v11.enums.KeywordMatchTypeEnum.KeywordMatchType suggested_match_type = 3;
     * @return int
     */
    public function getSuggestedMatchType()
    {
        return $this->suggested_match_type;
    }

    /**
     * The suggested keyword match type.
     *
     * Generated from protobuf field .google.ads.googleads.v11.enums.KeywordMatchTypeEnum.KeywordMatchType suggested_match_type = 3;
     * @param int $var
     * @return $this
     */
    public function setSuggestedMatchType($var)
    {
        GPBUtil::checkEnum($var, \Google\Ads\GoogleAds\V11\Enums\KeywordMatchTypeEnum\KeywordMatchType::class);
        $this->suggested_match_type = $var;

        return $this;
    }

    /**
     * The suggested AdGroup for the keyword.
     * Resource name format: `customers/{customer_id}/adGroups/{ad_group_id}`
     *
     * Generated from protobuf field string suggested_ad_group = 4;
     * @return string
     */
    public function getSuggestedAdGroup()
    {
        return $this->suggested_ad_group;
    }

    /**
     * The suggested AdGroup for the keyword.
     * Resource name format: `customers/{customer_id}/adGroups/{ad_group_id}`
     *
     * Generated from protobuf field string suggested_ad_group = 4;
     * @param string $var
     * @return $this
     */
    public function setSuggestedAdGroup($var)
    {
        GPBUtil::checkString($var, True);
        $this->suggested_ad_group = $var;

        return $this;
    }

    /**
     * The suggested Campaign for the keyword.
     * Resource name format: `customers/{customer_id}/campaigns/{campaign_id}`
     *
     * Generated from protobuf field string suggested_campaign = 5;
     * @return string
     */
    public function getSuggestedCampaign()
    {
        return $this->suggested_campaign;
    }

    /**
     * The suggested Campaign for the keyword.
     * Resource name format: `customers/{customer_id}/campaigns/{campaign_id}`
     *
     * Generated from protobuf field string suggested_campaign = 5;
     * @param string $var
     * @return $this
     */
    public function setSuggestedCampaign($var)
    {
        GPBUtil::checkString($var, True);
        $this->suggested_campaign = $var;

        return $this;
    }

}


text:
import * as React from 'react';
import { render } from '../../../../../../__tests__/utils/test-utils';
import { ModuleFormContactMessage } from '../message';

describe('ModuleFormContactMessage', function fnDescribe() {
    const props = {
        btnLabel: 'click',
        btnTitle: 'title',
        headline: 'headline',
        text: 'text',
        onReset: jest.fn(),
        resetUrl: 'resetUrl'
    };

    it('should render correctly', function fnIt() {
        const { asFragment } = render(<ModuleFormContactMessage {...props} />);
        expect(asFragment()).toMatchSnapshot();
    });
});


text:
package scheduler;

import lombok.AllArgsConstructor;
import lombok.Data;
import org.joda.time.DateTime;

/**
 * Created by Rogier on 17-10-14.
 */
@AllArgsConstructor
@Data
public class Task {

	private String inputFile;
	private Node assignedNode;
	private String outputBucket;
	private String outputFile;
	private Task.Status status;
	private DateTime created_at;

	enum Status {
		QUEUED,
		STARTED,
		FAILED,
		FINISHED
	}

	public Task(String inputFile) {
		this.inputFile = inputFile;
	}

	public boolean equals(Object other) {
		if (other instanceof Task) {
			Task that = (Task) other;
			return this.inputFile.equals(that.inputFile);
		}
		return false;
	}

	public String toString() {
		return String.format("[%s] %s %s", status, inputFile, outputFile);
	}

}


text:
<?php

class	LoggerCore extends ObjectModel
{
	/** @var integer Log id */
	public		$id_log;

	/** @var integer Log severity */
	public		$severity;

	/** @var integer Error code */
	public		$error_code;

	/** @var string Message */
	public 		$message;

	/** @var string Object type (eg. Order, Customer...) */
	public		$object_type;

	/** @var integer Object ID */
	public 		$object_id;

	/** @var string Object creation date */
	public 		$date_add;

	/** @var string Object last modification date */
	public 		$date_upd;

	protected	$fieldsRequired = array('severity', 'message');
	protected	$fieldsSize = array();
	protected	$fieldsValidate = array('id_log' => 'isUnsignedId', 'severity' => 'isInt', 'error_code' => 'isUnsignedInt',
	'message' => 'isMessage', 'object_id' => 'isUnsignedInt', 'object_type' => 'isName');

	protected 	$table = 'log';
	protected 	$identifier = 'id_log';

	protected static $_is_present = array();

	public function getFields()
	{
		parent::validateFields();

		$fields['severity'] = intval($this->severity);
		$fields['error_code'] = intval($this->error_code);
		$fields['message'] = pSQL($this->message);
		$fields['object_type'] = pSQL($this->object_type);
		$fields['object_id'] = intval($this->object_id);
		$fields['date_add'] = pSQL($this->date_add);
		$fields['date_upd'] = pSQL($this->date_upd);

		return $fields;
	}

	public static function sendByMail($log)
	{
		/* Send e-mail to the shop owner only if the minimal severity level has been reached */
		if (intval(Configuration::get('PS_LOGS_BY_EMAIL')) <= intval($log->severity))
			Mail::Send((int)Configuration::get('PS_LANG_DEFAULT'), 'log_alert', Mail::l('Log: You have a new alert from your shop', (int)Configuration::get('PS_LANG_DEFAULT')), array(), Configuration::get('PS_SHOP_EMAIL'));
	}

	/**
	 * add a log item to the database and send a mail if configured for this $severity
	 *
	 * @param string $message the log message
	 * @param int $severity
	 * @param int $errorCode
	 * @param string $objectType
	 * @param int $objectId
	 * @param boolean $allowDuplicate if set to true, can log several time the same information (not recommended)
	 * @return boolean true if succeed
	 */
	public static function addLog($message, $severity = 1, $errorCode = NULL, $objectType = NULL, $objectId = NULL, $allowDuplicate = false)
	{
		$log = new Logger();
		$log->severity = intval($severity);
		$log->error_code = intval($errorCode);
		$log->message = pSQL($message);
		$log->date_add = date('Y-m-d H:i:s');
		$log->date_upd = date('Y-m-d H:i:s');
		if (!empty($objectType) AND !empty($objectId))
		{
			$log->object_type = pSQL($objectType);
			$log->object_id = intval($objectId);
		}

		self::sendByMail($log);

		if ($allowDuplicate or !$log->_isPresent() )
		{
			$res = $log->add();
			if ($res)
			{
				self::$_is_present[$log->getHash()] = isset(self::$_is_present[$log->getHash()])?self::$_is_present[$log->getHash()] + 1:1;
				return true;
			}
		}
		return false;
	}

	/**
	 * this function md5($this->message.$this->severity.$this->error_code.$this->object_type.$this->object_id)
	 *
	 * @return string hash
	 */
	public function getHash(){
		if (empty($this->hash))
			$this->hash = md5($this->message.$this->severity.$this->error_code.$this->object_type.$this->object_id);

		return $this->hash;
	}

	/**
	 * check if this log message already exists in database.
	 *
	 * @param mixed $message
	 * @return true if exists
	 */
	private function _isPresent()
	{
		if (!isset(self::$_is_present[md5($this->message)]))
			self::$_is_present[$this->getHash()] = Db::getInstance()->getValue('SELECT COUNT(*)
				FROM `'._DB_PREFIX_.'log`
				WHERE
					`message` = \''.$this->message.'\'
					AND `severity` = \''.$this->severity.'\'
					AND `error_code` = \''.$this->error_code.'\'
					AND `object_type` = \''.$this->object_type.'\'
					AND `object_id` = \''.$this->object_id.'\'
				');

		return self::$_is_present[$this->getHash()];
	}

}


text:
package org.mrgeo.hdfs.input.image;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.SequenceFile.Reader;
import org.apache.hadoop.mapreduce.InputSplit;
import org.apache.hadoop.mapreduce.RecordReader;
import org.apache.hadoop.mapreduce.TaskAttemptContext;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
import org.mrgeo.data.raster.RasterWritable;
import org.mrgeo.data.tile.TileIdWritable;
import org.mrgeo.mapreduce.splitters.TiledInputSplit;

import java.io.IOException;

public class HdfsMrsPyramidRecordReader extends RecordReader<TileIdWritable, RasterWritable>
{
private Reader reader;
private TileIdWritable key;
private RasterWritable value;
private long startTileId;
private long endTileId;
private long recordCount;
private boolean more = true;

// Factory for creating instances of SequenceFile.Reader
private ReaderFactory readerFactory;

// Default constructor injects Default Reader Factory
public HdfsMrsPyramidRecordReader()
{
  readerFactory = new ReaderFactory();
}

// Constructor for injecting a ReaderFactory implementation
public HdfsMrsPyramidRecordReader(ReaderFactory readerFactory)
{
  this.readerFactory = readerFactory;
}

@Override
public TileIdWritable getCurrentKey()
{
  return key;
}

@Override
public RasterWritable getCurrentValue()
{
  return value;
}

@Override
// TODO eaw this should probably throw an UnsupportedOperationException since it does not meet the contract on getProgress because recordCount is never updated
public float getProgress() throws IOException, InterruptedException
{
  if (startTileId == endTileId)
  {
    return 0.0f;
  }
  else
  {
    return Math.min(1.0f, (recordCount - startTileId) / (float) (endTileId - startTileId));
  }
}

@Override
public void close() throws IOException
{
  reader.close();
}

@Override
public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,
    InterruptedException
{
  // TODO eaw - Better to use isAssignableFrom so it doesn't break if TiledInputSplit is ever subclassed
  if (split instanceof TiledInputSplit)
  {
    TiledInputSplit tiledInputSplit = (TiledInputSplit) split;
    startTileId = tiledInputSplit.getStartTileId();
    endTileId = tiledInputSplit.getEndTileId();
    // TODO, can use tiledInputSplit instead of casting split again
    FileSplit fileSplit = (FileSplit) ((TiledInputSplit) split).getWrappedSplit();
    Configuration conf = context.getConfiguration();
    Path path = fileSplit.getPath();
    FileSystem fs = path.getFileSystem(conf);

    // Use a factory to create the reader reader to make this class easier to test and support decoupling the reader
    // lifecycle from this object's lifecycle.
    reader = readerFactory.createReader(fs, path, conf);

    try
    {
      key = (TileIdWritable) reader.getKeyClass().newInstance();
      value = (RasterWritable) reader.getValueClass().newInstance();
    }
    catch (InstantiationException | IllegalAccessException e)
    {
      throw new IOException(e);
    }
  }
  else
  {
    // TODO eaw - IllegalArgumentException would be more appropriate here
    throw new IOException("Expected a TiledInputSplit but received " + split.getClass().getName());
  }
}

@Override
public boolean nextKeyValue() throws IOException, InterruptedException
{
  // TODO eaw evaluate whether it is needed to store more as an instance member.  If not, use a local variable instead
  if (more)
  {
    more = reader.next(key, value);
    if (!more)
    {
      key = null;
      value = null;
    }
    else {
      recordCount++;
    }
  }
  return more;
}

// Default ReaderFactory
static class ReaderFactory
{
  public Reader createReader(FileSystem fs, Path path, Configuration config) throws IOException
  {
    return new Reader(fs, path, config);
  }
}
}


text:
<?php

namespace CUES\AdminBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class CUESAdminBundle extends Bundle
{
}


text:
package ru.r2cloud.util;

import java.util.logging.LogManager;

public class ShutdownLoggingManager extends LogManager {
	static ShutdownLoggingManager instance;

	public ShutdownLoggingManager() {
		instance = this;
	}

	@Override
	public void reset() { /* don't reset yet. */
	}

	private void reset0() {
		super.reset();
	}

	public static void resetFinally() {
		instance.reset0();
	}
}


text:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true"
        android:drawable="@drawable/icon_minus"  />

    <item
	    android:drawable="@drawable/icon_plus" />
</selector>


text:
<?php
/*
 * Created on Jul 2, 2007
 *
 */

use crazedsanity\database\Database;
use crazedsanity\version\Version;
use crazedsanity\core\ToolBox;

class cs_webdbupgrade extends crazedsanity\database\Upgrade {
}//end upgrade{}


text:
import cookieconsent from 'cookieconsent'

if (window.config?.cookieconsent) {
  const container = document.getElementById('cookieconsent-container')
  // if there is nothing in the container, then init the cookieconsent
  if (container.innerHTML === '') {
    cookieconsent.initialise(window.config.cookieconsent)
  }
}


text:
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.jvnet.jaxb2.maven2</groupId>
		<artifactId>maven-jaxb2-plugin-tests-gh-issue-19</artifactId>
		<version>0.12.1-SNAPSHOT</version>
	</parent>
	<artifactId>maven-jaxb2-plugin-tests-gh-issue-19-a</artifactId>
	<packaging>jar</packaging>
	<name>Maven JAXB 2.x Plugin Tests [GitHub Issue #19:a]</name>
	<build>
		<defaultGoal>test</defaultGoal>
		<plugins>
			<plugin>
				<groupId>org.jvnet.jaxb2.maven2</groupId>
				<artifactId>maven-jaxb2-plugin</artifactId>
				<configuration>
					<schemaIncludes>
						<include>a/a.xsd</include>
					</schemaIncludes>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>