text:
#include "render_context.h"
#include <ncore/utils/karma.h>
#include <ncore/sys/registry.h>
#include <ncore/sys/path.h>

#include "user32_hooker.h"
#include "input_hooker.h"

#include "../common/key_event.h"
#include "../common/mouse_event.h"

namespace maku
{
namespace render
{

const int kSize = 30;
const uint32_t max_skip_frame_count = 200;
const uint32_t kPipeReadBufSize = 2 * 1024 * 1024;
const uint32_t kPipeWriteBufSize = 16 * 1024 * 1024;

RenderContext * render_context2_ = NULL;

RenderContext::RenderContext(void)
    : image_buf_(15*1024*1024), cursor_pos_(0, 0)
{
    show_ = false;
    shield_ = false;
    need_restart_ = false;
    delay_count_ = 0;

    ui_handle_ = NULL;
    cur_frame_count_ = 0;
    width_ = 0;
    height_ = 0;
    memset(image_buf_.data(), 0, 15*1024*1024);
    memset(cursor_buf_.data(), 0, cursor_buf_.capacity());

    msg_handle_[kStatusChangedEvent] = &RenderContext::OnStatusChangedEvent;
    msg_handle_[kPaintEvent] = &RenderContext::OnPaintEvent;
    msg_handle_[kCursorChangedEvent] = &RenderContext::OnCursorChangedEvent;
}

RenderContext::~RenderContext(void)
{
    ;
}

void RenderContext::Draw(Canvas * canvas)
{
    char* buf = image_buf_.data();
    Bitmap bmp_info;
    bmp_info.bits = buf;
    bmp_info.width = width_;
    bmp_info.height = height_;
    bmp_info.pitch = width_*4;
    Rect dest(0, 0, canvas->GetWidth(), canvas->GetHeight());
    canvas->DrawBitmap(bmp_info, dest);

    if(shield_)
    {//绘制光标
        PipeCursorChangedEvent * e = (PipeCursorChangedEvent *)cursor_buf_.data();

        bmp_info.bits = cursor_buf_.data();
        bmp_info.width = 32;
        bmp_info.height = 32;
        bmp_info.pitch = bmp_info.width * 4;
        //根据光标位置以及热点进行绘制
        dest.SetXYWH(cursor_pos_.x() - e->xhotspot,
                        cursor_pos_.y() - e->yhotspot,
                        bmp_info.width, bmp_info.height);
        canvas->DrawBitmap(bmp_info, dest);
    }
}

void RenderContext::HandleHookMsg(const MSG & msg)
{
    HandleMsg(msg);
}
//post msg to back client
void RenderContext::HandleMsg(const MSG & msg)
{
    if (msg.message == WM_CUSTOM_MESSAGE &&
        msg.wParam == WPARAM_HOTKEY)
        PostPipeMsg(kHotKey, NULL, 0);
    else if (msg.message >= WM_KEYFIRST && msg.message <= WM_KEYLAST)
        HandleKeyMsg(msg);
    else if(msg.message >= WM_MOUSEFIRST && msg.message <= WM_MOUSELAST)
        HandleMouseMsg(msg);
    else if (msg.message >= WM_NCMOUSEMOVE && msg.message <= WM_NCXBUTTONDBLCLK)
        HandleMouseMsg(msg);
}

void RenderContext::HandleKeyMsg(const MSG & msg)
{
    PipeTextEvent pipe_text;
    ZeroMemory(&pipe_text, sizeof(pipe_text));
    PipeKeyEvent pipe_key;
    ZeroMemory(&pipe_key, sizeof(pipe_key));
    const uint16_t kMSB = 0x8000;

    uint32_t value = static_cast<uint32_t>(msg.wParam);
    if( (User32Hooker::OrgGetAsyncKeyState(VK_LSHIFT) & kMSB) ||
        (User32Hooker::OrgGetAsyncKeyState(VK_RSHIFT) & kMSB) )
    {
        value |= KeyEvent::kShift;
    }

    if( (User32Hooker::OrgGetAsyncKeyState(VK_LCONTROL) & kMSB) ||
        (User32Hooker::OrgGetAsyncKeyState(VK_RCONTROL) & kMSB) )
    {
        value |= KeyEvent::kControl;
    }

    if( (User32Hooker::OrgGetAsyncKeyState(VK_LMENU) & kMSB) ||
        (User32Hooker::OrgGetAsyncKeyState(VK_RMENU) & kMSB) )
    {
        value |= KeyEvent::kAlt;
    }

    KeyEvent::KeyValue key_value = static_cast<KeyEvent::KeyValue>(value);
    pipe_key.value = key_value;

    switch (msg.message)
    {
    case WM_KEYDOWN:
        pipe_key.type = KeyEvent::kKeyDown;
        PostPipeMsg(kKeyEvent, &pipe_key, sizeof(pipe_key));
        break;
    case WM_KEYUP:
        pipe_key.type = KeyEvent::kKeyUp;
        PostPipeMsg(kKeyEvent, &pipe_key, sizeof(pipe_key));
        break;
    case WM_CHAR:
        pipe_text.text = (wchar_t)msg.wParam;
        PostPipeMsg(kTextEvent, &pipe_text, sizeof(pipe_text));
        break;
    }
}

void RenderContext::HandleMouseMsg(const MSG & msg)
{
    PipeMouseEvent pipe_mouse;
    ZeroMemory(&pipe_mouse, sizeof(pipe_mouse));
    pipe_mouse.x = static_cast<int16_t>(msg.lParam);
    pipe_mouse.y = static_cast<int16_t>(msg.lParam >> 16);
    uint32_t button = 0;
    if(msg.wParam & MK_LBUTTON)
        button |= MouseEvent::kLeft;
    if(msg.wParam & MK_RBUTTON)
        button |= MouseEvent::kRight;
    if(msg.wParam & MK_MBUTTON)
        button |= MouseEvent::kMiddle;
    if(msg.wParam & MK_XBUTTON1)
        button |= MouseEvent::kXButton1;
    if(msg.wParam & MK_XBUTTON2)
        button |= MouseEvent::kXButton2;
    pipe_mouse.state = button;

    switch (msg.message)
    {
    case WM_NCMOUSEMOVE:
    case WM_MOUSEMOVE:
            pipe_mouse.type = MouseEvent::kMouseMove;
        break;
    case WM_NCLBUTTONDBLCLK:
    case WM_LBUTTONDBLCLK:
            pipe_mouse.button = MouseEvent::kLeft;
            pipe_mouse.type = MouseEvent::kMouseDoubleClick;
        break;
    case WM_NCLBUTTONDOWN:
    case WM_LBUTTONDOWN:
            pipe_mouse.button = MouseEvent::kLeft;
            pipe_mouse.type = MouseEvent::kMouseDown;
        break;
    case WM_NCLBUTTONUP:
    case WM_LBUTTONUP:
            pipe_mouse.button = MouseEvent::kLeft;
            pipe_mouse.type = MouseEvent::kMouseUp;
        break;
    case WM_NCRBUTTONDBLCLK:
    case WM_RBUTTONDBLCLK:
            pipe_mouse.button = MouseEvent::kRight;
            pipe_mouse.type = MouseEvent::kMouseDoubleClick;
        break;
    case WM_NCRBUTTONDOWN:
    case WM_RBUTTONDOWN:
            pipe_mouse.button = MouseEvent::kRight;
            pipe_mouse.type = MouseEvent::kMouseDown;
        break;
    case WM_NCRBUTTONUP:
    case WM_RBUTTONUP:
            pipe_mouse.button = MouseEvent::kRight;
            pipe_mouse.type = MouseEvent::kMouseUp;
        break;
    case WM_MOUSELEAVE:
            pipe_mouse.type = MouseEvent::kMouseLeave;
        break;
    case WM_MOUSEWHEEL:
            pipe_mouse.dy = HIWORD(msg.wParam);
            pipe_mouse.type = MouseEvent::kMouseWheel;
        break;
    case WM_MOUSEHWHEEL:
            pipe_mouse.dx = HIWORD(msg.wParam);
            pipe_mouse.type = MouseEvent::kMouseWheel;
        break;
    }
    //记录鼠标光标位置
    cursor_pos_.set_x(pipe_mouse.x);
    cursor_pos_.set_y(pipe_mouse.y);
    PostPipeMsg(kMouseEvent, &pipe_mouse, sizeof(pipe_mouse));
}

RenderContext * RenderContext::Get()
{
    if(render_context2_ == NULL)
    {
        render_context2_ = new RenderContext();
    }
    return render_context2_;
}

void RenderContext::ExitRenderUIProcess()
{
    memset(image_buf_.data(), 0, image_buf_.capacity());
    if(ui_handle_)
    {
        ::CloseHandle(ui_handle_);
        ui_handle_ = 0;
    }
}

bool RenderContext::IsSkip()
{//是否需要跳帧
    bool bret = cur_frame_count_ < max_skip_frame_count;
    if(bret)
        cur_frame_count_++;
    return  bret;
}

bool RenderContext::StartRenderUIProcess()
{
    using namespace ncore;

    ExitRenderUIProcess();
    FiniPipe();
    memset(image_buf_.data(), 0, image_buf_.capacity());

    if( !InitializePipe() )//初始化管道
        return false;

    const char * parts[] = {work_dir_.data(), "maku_ui.exe"};
    auto ui_path8 = Path::JoinPath(parts);
    auto ui_path = Karma::FromUTF8(ui_path8);

    auto value_path = Karma::FromUTF8(work_dir_);
    PROCESS_INFORMATION processInfo;
    STARTUPINFO startUpInfo;
    memset(&processInfo, 0, sizeof(PROCESS_INFORMATION));
    memset(&startUpInfo, 0, sizeof(STARTUPINFO));
    startUpInfo.cb = sizeof(STARTUPINFO);
    startUpInfo.dwFlags = STARTF_USESHOWWINDOW;
    startUpInfo.wShowWindow = SW_HIDE;

    auto cmd_line8 = Karma::Format("-flag=%u -width=%d -height=%d",
                                   device_flag_, width_, height_);
    auto cmd_line16 = Karma::FromUTF8(cmd_line8);
    wchar_t cmd_line[256] = {0};
    memcpy_s(cmd_line, 256 * 2, cmd_line16.data(), cmd_line16.size() * 2);

    //开始创建进程
    if (!CreateProcess(ui_path.data(), cmd_line, NULL, NULL, FALSE, NULL, NULL,
        value_path.data(), &startUpInfo, &processInfo))
        return false;

    //等待进程初始化
    ::WaitForInputIdle(processInfo.hProcess, INFINITE);
    ::CloseHandle(processInfo.hThread);
    ui_handle_ = processInfo.hProcess;

    return true;
}

bool RenderContext::InitializePipe()
{
    pipe_obj_.reset(new ncore::NamedPipeServer);

    device_flag_ = ::GetTickCount();
    bool bret = false;
    char name[MAX_PATH];
    sprintf_s(name, "%s%u", kPipeName, device_flag_);

	return pipe_obj_->init(name, ncore::PipeDirection::kDuplex,
		ncore::PipeOption::kNone,
		ncore::PipeTransmissionMode::kStream, 2,
        kPipeWriteBufSize, kPipeReadBufSize, 0);
}

void RenderContext::FiniPipe()
{
    pipe_obj_.reset();
}

bool RenderContext::PostPipeMsg(uint32_t msg_type, void * buf, uint32_t size)
{
    if (pipe_obj_ == 0)
        return false;

    locker_.Acquire();
    uint32_t total_size = sizeof(PipeMsgHeader) + size;
	ncore::Buffer pipe_buff(total_size);
    PipeMsgHeader * msg_header;
    msg_header = reinterpret_cast<PipeMsgHeader*>(pipe_buff.data());
    msg_header->type = msg_type;
    if (size != 0)
        memcpy_s(msg_header + 1, size, buf, size);

    uint32_t trans_data = 0;
    bool ret = pipe_obj_->Write((void*)pipe_buff.data(),
        pipe_buff.capacity(), trans_data);
    locker_.Release();
    return ret;
}

bool RenderContext::PeekPipeMsg(uint32_t & bytes_avail)
{
    if (pipe_obj_)
    {
        uint32_t bytes_msg = 0;
        uint32_t byte_read = 0;
        char buffer[100] = {0};
        if (pipe_obj_->Peek(buffer, 0, byte_read, bytes_avail, bytes_msg))
            return true;
    }
    return false;
}

bool RenderContext::RecvPipeMsg()
{
    if (pipe_obj_)
    {
        uint32_t bytes_avail = 0;
        if (PeekPipeMsg(bytes_avail))
        {
            if (bytes_avail >= sizeof(PipeMsgHeader))
            {
                uint32_t transfer = 0;
                uint32_t size = sizeof(PipeMsgHeader);
				ncore::Buffer recv_buf(size);
                pipe_obj_->Read(recv_buf.data(), size, transfer);

                const PipeMsgHeader * msg_header =
                    reinterpret_cast<PipeMsgHeader*>(recv_buf.data());

                MsgHandle msg_handle = msg_handle_[msg_header->type];
                if (msg_handle != NULL)
                {
                    (this->*msg_handle)();
                }
                return true;
            }
        }//peek
        else
        {
            HandleRecvFail();
        }
    }
    return false;
}

void RenderContext::HandleRecvFail()
{
    if(ui_handle_ != 0)
    {
        DWORD wait_ret = ::WaitForSingleObject(ui_handle_, 0);
        if(WAIT_OBJECT_0 == wait_ret)
        {
            ExitRenderUIProcess();
            FiniPipe();
            memset(image_buf_.data(), 0xff, image_buf_.capacity());
            //InputHooker::SetCallOut(false);
            //show_ = false;
            //shield_ = false;

            //width_ = height_ = 0;
            //cur_frame_count_ = 0;
            need_restart_ = true;
            delay_count_ = ::GetTickCount();
        }
    }
}

void RenderContext::OnStatusChangedEvent()
{
    uint32_t transfer = 0;
    uint32_t size = sizeof(PipeStatusChangedEvent);
	ncore::Buffer recv_buf(size);
    pipe_obj_->Read(recv_buf.data(), size, transfer);
    const PipeStatusChangedEvent * sc =
        reinterpret_cast<PipeStatusChangedEvent*>(recv_buf.data());

    show_ = sc->show;
    shield_ = sc->shield;

    InputHooker::CallOut(sc->shield);
}

void RenderContext::OnCursorChangedEvent()
{//保存鼠标信息
    uint32_t transfer = 0;
    if(!pipe_obj_->Read(cursor_buf_.data(), cursor_buf_.capacity(), transfer))
        return;

    if(transfer != cursor_buf_.capacity())
        return;
}

void RenderContext::OnPaintEvent()
{
    uint32_t transfer = 0;
    ncore::FixedBuffer<sizeof(PipePaintEvent)> recv_buf;
    pipe_obj_->Read(recv_buf.data(), recv_buf.capacity(), transfer);
    const PipePaintEvent * pe =
        reinterpret_cast<PipePaintEvent*>(recv_buf.data());

	ncore::Buffer data_buffer(pe->width * 4);
    uint32_t dst_pitch = width_ * 4;

	Rect intersect_rect;
    intersect_rect.SetLTRB(0, 0, width_, height_);
    Rect src_rect;
    src_rect.SetXYWH(pe->left, pe->top,  pe->width, pe->height);
    intersect_rect.Intersect(src_rect);

    for(uint32_t i = 0; i < pe->height; ++i)
    {
        pipe_obj_->Read(data_buffer.data(), data_buffer.capacity(), transfer);
        //交集为空则跳过 仅读取管道中数据
        if(intersect_rect.isEmpty())
            continue;
        //当前读取的像素所在行
        int col = i + pe->top;
        //当前的像素行在 交集区域中 需要复制
        if(col >= intersect_rect.top() && col < intersect_rect.bottom())
        {
            char * dst = image_buf_.data() + dst_pitch *col;
            dst += intersect_rect.left() * 4;
            //定位到需要复制的像素起始内存
            char * src = data_buffer.data();
            src += (intersect_rect.left() - src_rect.left()) * 4;
            memcpy(dst, src, intersect_rect.width() * 4);
        }
    }
}

void RenderContext::UpdateStatus(uint32_t width, uint32_t height)
{
    if(IsSkip())
        return ;

    if(width_ != width || height_ != height)
    {
        ExitRenderUIProcess();
        FiniPipe();
        //不再恢复状态
        //InputHooker::SetCallOut(false);
        //show_ = false;
        //shield_ = false;

        width_ = width;
        height_ = height;
        need_restart_ = true;
        delay_count_ = ::GetTickCount();
    }

    if(need_restart_ && ::GetTickCount() - delay_count_ >= 2000)
    {
        need_restart_ = false;
        StartRenderUIProcess();
    }
    while(RecvPipeMsg());//处理管道消息
}

bool RenderContext::IsPresent()
{
    return show_;
}

void RenderContext::SetWorkDirectory(const char * work_dir)
{
    if (work_dir)
        work_dir_ = work_dir;
}

}
}


text:
package io.bootique.metrics.health.sink;

import org.slf4j.Logger;

/**
 * A {@link ReportSink} writing to an Slf4J logger.
 */
public class Slf4JReportSink implements ReportSink {

    private static final String LINE_BREAK = System.lineSeparator();
    private static int LINE_BREAK_LEN = LINE_BREAK.length();

    // accumulate lines in the buffer, flushing every now and then
    private StringBuilder buffer;
    private Logger logger;

    public Slf4JReportSink(Logger logger) {
        this.logger = logger;
    }

    @Override
    public ReportSink append(String string) {

        StringBuilder buffer = createOrInitLineBuffer();

        // call logger once per line...
        int i = string.indexOf(LINE_BREAK);
        if (i < 0) {
            buffer.append(string);
        } else {
            buffer.append(string.substring(0, i));
            flush();
            append(string.substring(i + LINE_BREAK_LEN));
        }

        return this;
    }

    @Override
    public ReportSink appendln(String string) {
        append(string);
        flush();
        return this;
    }

    @Override
    public void close() {
        flush();
    }

    private StringBuilder createOrInitLineBuffer() {
        return buffer != null ? buffer : (buffer = new StringBuilder());
    }

    private void flush() {
        if (buffer != null) {
            String line = buffer.toString();
            this.buffer = null;
            logger.info(line);
        }
    }
}

redpajama_set_name: RedPajamaGithub


text:
<法規>
<法規性質>法律</法規性質>
<英文法規名稱>Uniforms Act of the Army</英文法規名稱>
<中文法規名稱>陸軍服制條例</中文法規名稱>
<法規網址>https://law.moj.gov.tw/Eng/LawClass/LawAll.aspx?pcode=F0060002</法規網址>
<最新英文異動日期>20071107</最新英文異動日期>
<廢止註記>廢</廢止註記>
<附件 />
<沿革內容><![CDATA[1.Promulgated on January 20, 1936
2.Amended on March 24, 1959
3.Amended on November 7, 2007]]></沿革內容>
<前言><![CDATA[]]></前言>
<法規內容>
  <條文>
    <條號>Article 1</條號>
    <條文內容><![CDATA[The Army Uniforms are based on this Act .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 2</條號>
    <條文內容><![CDATA[Army Officers , Trainees , Students , Non Commissioned Officers , Enlisted Soldiers,should wear uniforms as required in this Act,and should also wear the required badge ( symbol ) .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 3</條號>
    <條文內容><![CDATA[There are four kinds of Army Uniforms   as follows :
1 -  Ceremonial Uniform .
2 -  Gala Uniform .
3 -  Daily Uniform .
4 -  Ordinary Uniform .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 4</條號>
    <條文內容><![CDATA[The Ceremonial Uniform is worn on the following occasions :
1-  Attending a grand ceremony of our own and  foreign  countrirs  or day time banquet .
2-  To call on the President or Head of State of our Allies .
3-  Formal visit or Repaying visit to a high ranking officials of our Allies .
4-  Attending all kinds of Military Occasion or other Ceremonies .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 5</條號>
    <條文內容><![CDATA[Wearing the Gala Uniform  on the following occasions :
1-  Attending a Grand Evening Banquet in  our country .
2-  Accompanying the President to attend an Evening Banquet .
3-  Attending an International Evening Banquet .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 6</條號>
    <條文內容><![CDATA[Wearing the Daily Uniform  on the following occasions :
1- Accompanying the President on a field trip .
2- Ordinary working days or outing .
3- Attending all kinds of meeting .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 7</條號>
    <條文內容><![CDATA[Wearing the Ordinary Uniform  on the following occasions :
1-  Ordinary working days or outing .
2-  No operating inside the camp .
3-  Patroling the battle field .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 8</條號>
    <條文內容><![CDATA[If the Ceremonial Uniform or the Gala Uniform is not ready  , it can be replaced with the Daily Uniform .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 9</條號>
    <條文內容><![CDATA[The Ceremonial Uniform and the Gala Uniform are only suitable for Officers of Second Lieutenant or above ; The Daily Uniform and the Ordinary Uniform are suitable for all the Army Officers , Non Commissioned Officers , Enlisted Soldiers and Students .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 10</條號>
    <條文內容><![CDATA[The Army Trainees wear all kinds of uniforms according to their original rank . During their training period what kind of special badge wear is determined by the Ministry of National Defense .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 11</條號>
    <條文內容><![CDATA[The Army Uniform Style and the required Badge    ( Symbol ) are based on the Attached Drawings -1 ~ 7 of this Act  ( Reference : Page-5475-5491 of May Issue (9) , 1994 of decrees of the Republic of China's Existing Law .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 12</條號>
    <條文內容><![CDATA[The Uniforms for the Honoring Guard, Band of the Army,all kinds of working uniforms and other special uniforms and badge ( symbol ) that are not specified in this Act are determined by the Ministry of National Defense according to their needs .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 13</條號>
    <條文內容><![CDATA[Those awardung with Decorations , Medals , should wear as required .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 14</條號>
    <條文內容><![CDATA[The seasonal uniforms changing time is regulated by the Ministry of National Defense .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 15</條號>
    <條文內容><![CDATA[The Army personnel being assigned to serve in the Navy , Air Force , or vise a versa , their uniforms required are according to the Uniforms Act of their original military branch .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 16</條號>
    <條文內容><![CDATA[When the Reserved Military Men of the Army attend a grand ceremony , they are suitable to use the uniform as per requirements stipulated in this Regulation .]]></條文內容>
  </條文>
  <條文>
    <條號>Article 17</條號>
    <條文內容><![CDATA[The Enforcement Date of this Act will be as ordered .]]></條文內容>
  </條文>
</法規內容>
</法規>


text:
#ifndef GLT_ARCBALL_CAMERA_H
#define GLT_ARCBALL_CAMERA_H

#include <array>
#include <SDL.h>
#include <glm/glm.hpp>

namespace glt {
/*
 * A simple arcball camera that moves around the camera's focal point
 * Controls:
 * left mouse + drag: rotate camera round focal point
 * right mouse + drag: translate camera
 * shift + right mouse + drag +/- y: zoom in/out
 * r key: reset camera to original look_at matrix
 */
class ArcBallCamera {
	// We store the unmodified look at matrix along with
	// decomposed translation and rotation components
	glm::mat4 look_at, translation;
	glm::quat rotation;
	// camera is the full camera transform,
	// inv_camera is stored as well to easily compute
	// eye position and world space rotation axes
	glm::mat4 camera, inv_camera;
	// Motion and rotation speeds
	float motion_speed, rotation_speed;
	// Inverse x, y window dimensions
	std::array<float, 2> inv_screen;

public:
	/*
	 * Create an arcball camera with some look at matrix
	 * motion speed: units per second speed of panning the camera
	 * rotation speed: radians per second speed of rotation the camera
	 * inv_screen: { 1 / WIN_X_SIZE, 1 / WIN_Y_SIZE }
	 */
	ArcBallCamera(const glm::mat4 &look_at, float motion_speed, float rotation_speed,
			const std::array<float, 2> &inv_screen);
	/*
	 * Handle mouse motion events to move the camera
	 * returns true if the camera has moved
	 */
	bool mouse_motion(const SDL_MouseMotionEvent &mouse, float elapsed);
	/*
	 * Handle mouse scroll events to zoom in/out
	 * returns true if the camera has moved
	 */
	bool mouse_scroll(const SDL_MouseWheelEvent &scroll, float elapsed);
	/*
	 * Handle keyboard events to reset the camera
	 * returns true if the camera has moved
	 */
	bool keypress(const SDL_KeyboardEvent &key);
	/*
	 * Get the camera transformation matrix
	 */
	const glm::mat4& transform() const;
	/*
	 * Get the camera inverse transformation matrix
	 */
	const glm::mat4& inv_transform() const;
	/*
	 * Get the eye position of the camera in world space
	 */
	glm::vec3 eye_pos() const;

private:
	/*
	 * Handle rotation events
	 */
	void rotate(const SDL_MouseMotionEvent &mouse, float elapsed);
	/*
	 * Handle panning/zooming events
	 */
	void pan(const SDL_MouseMotionEvent &mouse, float elapsed);
};
/*
 * Project the point in [-1, 1] screen space onto the arcball sphere
 */
glm::vec3 screen_to_arcball(const glm::vec2 &p);
}

#endif


text:
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="e5d5968a-8f20-496e-9038-3ca60f9ade67" name="Default" comment="" />
    <ignored path="bowser.iws" />
    <ignored path=".idea/workspace.xml" />
    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
    <option name="TRACKING_ENABLED" value="true" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
  <component name="CreatePatchCommitExecutor">
    <option name="PATCH_PATH" value="" />
  </component>
  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
  <component name="FavoritesManager">
    <favorites_list name="bowser" />
  </component>
  <component name="FileEditorManager">
    <leaf>
      <file leaf-file-name="package.json" pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/package.json">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="-5.625">
              <caret line="9" column="17" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
      <file leaf-file-name="bower.json" pinned="false" current-in-tab="true">
        <entry file="file://$PROJECT_DIR$/bower.json">
          <provider selected="true" editor-type-id="text-editor">
            <state vertical-scroll-proportion="0.15254237">
              <caret line="9" column="17" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" />
              <folding />
            </state>
          </provider>
        </entry>
      </file>
    </leaf>
  </component>
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  </component>
  <component name="IdeDocumentHistory">
    <option name="CHANGED_PATHS">
      <list>
        <option value="$PROJECT_DIR$/.editorconfig" />
        <option value="$PROJECT_DIR$/.npmignore" />
        <option value="$PROJECT_DIR$/src/copyright.js" />
        <option value="$PROJECT_DIR$/make/build.js" />
        <option value="$PROJECT_DIR$/.gitignore" />
        <option value="$PROJECT_DIR$/README.md" />
        <option value="$PROJECT_DIR$/src/bowser.js" />
        <option value="$PROJECT_DIR$/src/useragents.js" />
        <option value="$PROJECT_DIR$/package.json" />
        <option value="$PROJECT_DIR$/bower.json" />
      </list>
    </option>
  </component>
  <component name="JsBuildToolGruntFileManager" detection-done="true" />
  <component name="JsBuildToolPackageJson" detection-done="true">
    <package-json value="$PROJECT_DIR$/package.json" />
  </component>
  <component name="JsGulpfileManager">
    <detection-done>true</detection-done>
  </component>
  <component name="ProjectFrameBounds">
    <option name="y" value="23" />
    <option name="width" value="1920" />
    <option name="height" value="1053" />
  </component>
  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
    <OptionsSetting value="true" id="Add" />
    <OptionsSetting value="true" id="Remove" />
    <OptionsSetting value="true" id="Checkout" />
    <OptionsSetting value="true" id="Update" />
    <OptionsSetting value="true" id="Status" />
    <OptionsSetting value="true" id="Edit" />
    <ConfirmationsSetting value="0" id="Add" />
    <ConfirmationsSetting value="0" id="Remove" />
  </component>
  <component name="ProjectView">
    <navigator currentView="ProjectPane" proportions="" version="1">
      <flattenPackages />
      <showMembers />
      <showModules />
      <showLibraryContents />
      <hideEmptyPackages />
      <abbreviatePackageNames />
      <autoscrollToSource />
      <autoscrollFromSource />
      <sortByType />
      <manualOrder />
      <foldersAlwaysOnTop value="true" />
    </navigator>
    <panes>
      <pane id="ProjectPane">
        <subPane>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="bowser" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
          </PATH>
          <PATH>
            <PATH_ELEMENT>
              <option name="myItemId" value="bowser" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
            </PATH_ELEMENT>
            <PATH_ELEMENT>
              <option name="myItemId" value="bowser" />
              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
            </PATH_ELEMENT>
          </PATH>
        </subPane>
      </pane>
      <pane id="Scratches" />
      <pane id="Scope" />
    </panes>
  </component>
  <component name="PropertiesComponent">
    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
    <property name="WebServerToolWindowFactoryState" value="false" />
    <property name="HbShouldOpenHtmlAsHb" value="" />
    <property name="js-jscs-nodeInterpreter" value="$USER_HOME$/.nvm/versions/node/v4.2.4/bin/node" />
    <property name="editor.config.accepted" value="true" />
  </component>
  <component name="RunManager">
    <configuration default="true" type="BashConfigurationType" factoryName="Bash">
      <option name="INTERPRETER_OPTIONS" value="" />
      <option name="INTERPRETER_PATH" value="/bin/bash" />
      <option name="WORKING_DIRECTORY" value="" />
      <option name="PARENT_ENVS" value="true" />
      <option name="SCRIPT_NAME" value="" />
      <option name="PARAMETERS" value="" />
      <module name="" />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="DartCommandLineRunConfigurationType" factoryName="Dart Command Line Application">
      <method />
    </configuration>
    <configuration default="true" type="DartTestRunConfigurationType" factoryName="Dart Test">
      <method />
    </configuration>
    <configuration default="true" type="JavaScriptTestRunnerKarma" factoryName="Karma" config-file="">
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
      <method />
    </configuration>
    <configuration default="true" type="NodeJSConfigurationType" factoryName="Node.js" working-dir="">
      <method />
    </configuration>
    <configuration default="true" type="cucumber.js" factoryName="Cucumber.js">
      <option name="cucumberJsArguments" value="" />
      <option name="executablePath" />
      <option name="filePath" />
      <method />
    </configuration>
    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
      <node-options />
      <gulpfile />
      <tasks />
      <arguments />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
      <command value="run-script" />
      <scripts />
      <envs />
      <method />
    </configuration>
    <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha">
      <node-options />
      <working-directory>$PROJECT_DIR$</working-directory>
      <pass-parent-env>true</pass-parent-env>
      <envs />
      <ui>bdd</ui>
      <extra-mocha-options />
      <test-kind>DIRECTORY</test-kind>
      <test-directory />
      <recursive>false</recursive>
      <method />
    </configuration>
  </component>
  <component name="ShelveChangesManager" show_recycled="false" />
  <component name="SvnConfiguration">
    <configuration />
  </component>
  <component name="TaskManager">
    <task active="true" id="Default" summary="Default task">
      <changelist id="e5d5968a-8f20-496e-9038-3ca60f9ade67" name="Default" comment="" />
      <created>1460663203148</created>
      <option name="number" value="Default" />
      <updated>1460663203148</updated>
    </task>
    <servers />
  </component>
  <component name="ToolWindowManager">
    <frame x="0" y="23" width="1920" height="1053" extended-state="6" />
    <editor active="false" />
    <layout>
      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.22696155" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
      <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
    </layout>
  </component>
  <component name="Vcs.Log.UiProperties">
    <option name="RECENTLY_FILTERED_USER_GROUPS">
      <collection />
    </option>
    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
      <collection />
    </option>
  </component>
  <component name="VcsContentAnnotationSettings">
    <option name="myLimit" value="2678400000" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager />
    <watches-manager />
  </component>
  <component name="editorHistoryManager">
    <entry file="file://$PROJECT_DIR$/src/useragents.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/bowser.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/package.json">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/README.md">
      <provider editor-type-id="MarkdownPreviewEditor">
        <state />
      </provider>
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="57" column="25" selection-start-line="57" selection-start-column="25" selection-end-line="57" selection-end-column="25" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/useragents.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="291" column="160" selection-start-line="291" selection-start-column="154" selection-end-line="291" selection-end-column="160" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/package.json">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="6" column="12" selection-start-line="6" selection-start-column="12" selection-end-line="6" selection-end-column="12" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/bowser.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="219" column="42" selection-start-line="219" selection-start-column="42" selection-end-line="219" selection-end-column="42" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/README.md">
      <provider editor-type-id="MarkdownPreviewEditor">
        <state />
      </provider>
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/package.json">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="6" column="12" selection-start-line="6" selection-start-column="12" selection-end-line="6" selection-end-column="12" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.travis.yml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="5" column="27" selection-start-line="5" selection-start-column="13" selection-end-line="5" selection-end-column="27" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/bowser.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="219" column="42" selection-start-line="219" selection-start-column="42" selection-end-line="219" selection-end-column="42" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.editorconfig">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="14" column="28" selection-start-line="14" selection-start-column="28" selection-end-line="14" selection-end-column="28" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/useragents.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/test/test.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="12" column="59" selection-start-line="12" selection-start-column="59" selection-end-line="12" selection-end-column="59" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.editorconfig">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0990099">
          <caret line="6" column="7" selection-start-line="6" selection-start-column="7" selection-end-line="6" selection-end-column="7" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/LICENSE">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/test/test.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.14851485">
          <caret line="9" column="5" selection-start-line="9" selection-start-column="5" selection-end-line="9" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.travis.yml">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.11551155">
          <caret line="7" column="11" selection-start-line="7" selection-start-column="11" selection-end-line="7" selection-end-column="11" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.npmignore">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.04950495">
          <caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/Makefile">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.14851485">
          <caret line="9" column="7" selection-start-line="9" selection-start-column="7" selection-end-line="9" selection-end-column="7" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/make/build.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0660066">
          <caret line="4" column="25" selection-start-line="4" selection-start-column="25" selection-end-line="4" selection-end-column="25" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/.gitignore">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.077220075">
          <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/bowser.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.0">
          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="404" selection-end-column="0" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/useragents.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.9009901">
          <caret line="1256" column="15" selection-start-line="1256" selection-start-column="15" selection-end-line="1256" selection-end-column="15" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/src/bowser.js">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.5346535">
          <caret line="197" column="42" selection-start-line="197" selection-start-column="42" selection-end-line="197" selection-end-column="42" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/README.md">
      <provider editor-type-id="MarkdownPreviewEditor">
        <state />
      </provider>
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.2215909">
          <caret line="13" column="25" selection-start-line="13" selection-start-column="25" selection-end-line="13" selection-end-column="25" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/package.json">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="-5.625">
          <caret line="9" column="17" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" />
          <folding />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/bower.json">
      <provider selected="true" editor-type-id="text-editor">
        <state vertical-scroll-proportion="0.15254237">
          <caret line="9" column="17" selection-start-line="9" selection-start-column="17" selection-end-line="9" selection-end-column="17" />
          <folding />
        </state>
      </provider>
    </entry>
  </component>
</project>


text:
require 'google/protobuf'

require 'google/ads/google_ads/v11/enums/extension_setting_device_pb'
require 'google/ads/google_ads/v11/enums/extension_type_pb'
require 'google/api/field_behavior_pb'
require 'google/api/resource_pb'

Google::Protobuf::DescriptorPool.generated_pool.build do
  add_file("google/ads/googleads/v11/resources/campaign_extension_setting.proto", :syntax => :proto3) do
    add_message "google.ads.googleads.v11.resources.CampaignExtensionSetting" do
      optional :resource_name, :string, 1
      optional :extension_type, :enum, 2, "google.ads.googleads.v11.enums.ExtensionTypeEnum.ExtensionType"
      proto3_optional :campaign, :string, 6
      repeated :extension_feed_items, :string, 7
      optional :device, :enum, 5, "google.ads.googleads.v11.enums.ExtensionSettingDeviceEnum.ExtensionSettingDevice"
    end
  end
end

module Google
  module Ads
    module GoogleAds
      module V11
        module Resources
          CampaignExtensionSetting = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.ads.googleads.v11.resources.CampaignExtensionSetting").msgclass
        end
      end
    end
  end
end


text:
<?php

/**
 * Uninitializes newt interface
 *
 * @phpstub
 *
 * @return int Returns 1 on success, 0 on failure.
 */
function newt_finished()
{
}


text:
namespace cc {

// Latency timing data for Main Frame lifecycle updates triggered by cc.
// The data is captured in LocalFrameViewUKMAggregator and passed back through
// the proxy when a main frame ends. LayerTreeHost updates the update_layers_
// value in LayerTreeHost::UpdateLayers.
// TODO(schenney): Include work done in LayerTreeHost::AnimateLayers?
struct CC_EXPORT BeginMainFrameMetrics {
  base::TimeDelta handle_input_events;
  base::TimeDelta animate;
  base::TimeDelta style_update;
  base::TimeDelta layout_update;
  base::TimeDelta prepaint;
  base::TimeDelta compositing_assignments;
  base::TimeDelta compositing_inputs;
  base::TimeDelta paint;
  base::TimeDelta composite_commit;
  base::TimeDelta update_layers;
  // True if we should measure smoothness in TotalFrameCounter and
  // DroppedFrameCounter. Currently true when first contentful paint is done.
  bool should_measure_smoothness = false;

  BeginMainFrameMetrics();

  BeginMainFrameMetrics(const BeginMainFrameMetrics& other);
  BeginMainFrameMetrics& operator=(const BeginMainFrameMetrics& other);
};

}  // namespace cc

#endif  // CC_METRICS_BEGIN_MAIN_FRAME_METRICS_H_


text:
function CreateMosaicConfig($stateProvider) {
    'ngInject';

    $stateProvider
        .state('app.createMosaic', {
            url: '/create-mosaic',
            controller: 'CreateMosaicCtrl',
            controllerAs: '$ctrl',
            templateUrl: 'modules/mosaics/create/createMosaic.html',
            title: 'Create a mosaic'
        });

};

export default CreateMosaicConfig;


text:
.class Lcom/android/settings/security/OwnerInfoPreferenceController$1;
.super Ljava/lang/Object;
.source "OwnerInfoPreferenceController.java"

# interfaces
.implements Landroid/support/v7/preference/Preference$OnPreferenceClickListener;

# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
    value = Lcom/android/settings/security/OwnerInfoPreferenceController;->updateEnableState()V
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation

# instance fields
.field final synthetic this$0:Lcom/android/settings/security/OwnerInfoPreferenceController;

# direct methods
.method constructor <init>(Lcom/android/settings/security/OwnerInfoPreferenceController;)V
    .locals 0

    iput-object p1, p0, Lcom/android/settings/security/OwnerInfoPreferenceController$1;->this$0:Lcom/android/settings/security/OwnerInfoPreferenceController;

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

# virtual methods
.method public onPreferenceClick(Landroid/support/v7/preference/Preference;)Z
    .locals 1

    iget-object v0, p0, Lcom/android/settings/security/OwnerInfoPreferenceController$1;->this$0:Lcom/android/settings/security/OwnerInfoPreferenceController;

    invoke-static {v0}, Lcom/android/settings/security/OwnerInfoPreferenceController;->-get0(Lcom/android/settings/security/OwnerInfoPreferenceController;)Landroid/app/Fragment;

    move-result-object v0

    invoke-static {v0}, Lcom/android/settings/OwnerInfoSettings;->show(Landroid/app/Fragment;)V

    const/4 v0, 0x1

    return v0
.end method


text:
<!DOCTYPE HTML>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Mars Rover Problem with Jasmine v2.0.0</title>

  <link rel="shortcut icon" type="image/png" href="lib/jasmine-2.0.0/jasmine_favicon.png">
  <link rel="stylesheet" type="text/css" href="lib/jasmine-2.0.0/jasmine.css">

  <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
  <script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>

  <!-- include source files here... -->
  <script type="text/javascript" src="src/Cardinal.js"></script>
  <script type="text/javascript" src="src/Plateau.js"></script>
  <script type="text/javascript" src="src/MarsRover.js"></script>
  <script type="text/javascript" src="src/Position.js"></script>
  <script type="text/javascript" src="src/Main.js"></script>

  <!-- include spec files here... -->
  <script type="text/javascript" src="spec/Cardinal.js"></script>
  <script type="text/javascript" src="spec/Plateau.js"></script>
  <script type="text/javascript" src="spec/MarsRover.js"></script>
  <script type="text/javascript" src="spec/Position.js"></script>

</head>

<body>
</body>
</html>


text:
package org.mindinformatics.gwt.domeo.services.extractors;

import java.util.Map;

/**
 * @author Paolo Ciccarese <paolo.ciccarese@gmail.com>
 */
public interface IExtractorsManager {
	/**
	 * Call for parametrization and start of the extraction pipeline.
	 */
	public void parametrizeExtractorAndProcess();

	/**
	 * Call for the execution pipeline start with a specific set
	 * of paramenters
	 * @param params	The list of parameters for pipeline parametrization
	 */
	public void processDocumentExtraction(Map<String, String> params);
}


text: Use at your own discretion how you please. @kaarmann.