text:
<!DOCTYPE html>

    <title>Unicorn Admin</title>
    <meta charset="UTF-8"/>
    <link rel="stylesheet" href="css/bootstrap.min.css"/>
    <link rel="stylesheet" href="css/bootstrap-responsive.min.css"/>
    <link rel="stylesheet" href="css/unicorn.main.css"/>
    <link rel="stylesheet" href="css/unicorn.grey.css" class="skin-color"/>

Unicorn Admin

    <input type="text" placeholder="Search here..."/>
    <button type="submit" class="tip-right" title="Search"></button>

 Profile

 Messages 5

new message

inbox

outbox

trash

 Settings

 Logout

     Grid Layout

 Dashboard

             Form elements 3

Common elements

Validation

Wizard

 Buttons & icons

 Interface elements

 Tables

 Grid Layout

             Sample pages 4

Invoice

Support chat

Calendar

Gallery

             Charts & graphs

             Widgets

    Style:

Grid Layout

            5

         Home
        Grid Layout

Span12

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span6

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span6

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span4

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span4

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span4

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span5

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span3

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span4

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span3

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span3

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span3

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Span3

                        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
                        labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco
                        laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
                        voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
                        non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

                2012 © Unicorn Admin. Brought to you by diablo9983


text:
<?php

namespace Magento\SalesRule\Observer;

class CheckSalesRulesAvailability
{
    /**
     * @var \Magento\SalesRule\Model\ResourceModel\Rule\CollectionFactory
     */
    protected $_collectionFactory;

    /**
     * @var \Magento\Framework\Message\ManagerInterface
     */
    protected $messageManager;

    /**
     * @param \Magento\SalesRule\Model\ResourceModel\Rule\CollectionFactory $collectionFactory
     * @param \Magento\Framework\Message\ManagerInterface $messageManager
     */
    public function __construct(
        \Magento\SalesRule\Model\ResourceModel\Rule\CollectionFactory $collectionFactory,
        \Magento\Framework\Message\ManagerInterface $messageManager
    ) {
        $this->_collectionFactory = $collectionFactory;
        $this->messageManager = $messageManager;
    }

    /**
     * Check rules that contains affected attribute
     * If rules were found they will be set to inactive and notice will be add to admin session
     *
     * @param string $attributeCode
     * @return $this
     */
    public function checkSalesRulesAvailability($attributeCode)
    {
        /* @var $collection \Magento\SalesRule\Model\ResourceModel\Rule\Collection */
        $collection = $this->_collectionFactory->create()->addAttributeInConditionFilter($attributeCode);

        $disabledRulesCount = 0;
        foreach ($collection as $rule) {
            /* @var $rule \Magento\SalesRule\Model\Rule */
            $rule->setIsActive(0);
            /* @var $rule->getConditions() \Magento\SalesRule\Model\Rule\Condition\Combine */
            $this->_removeAttributeFromConditions($rule->getConditions(), $attributeCode);
            $this->_removeAttributeFromConditions($rule->getActions(), $attributeCode);
            $rule->save();

            $disabledRulesCount++;
        }

        if ($disabledRulesCount) {
            $this->messageManager->addWarning(
                __(
                    '%1 Cart Price Rules based on "%2" attribute have been disabled.',
                    $disabledRulesCount,
                    $attributeCode
                )
            );
        }

        return $this;
    }

    /**
     * Remove catalog attribute condition by attribute code from rule conditions
     *
     * @param \Magento\Rule\Model\Condition\Combine $combine
     * @param string $attributeCode
     * @return void
     */
    protected function _removeAttributeFromConditions($combine, $attributeCode)
    {
        $conditions = $combine->getConditions();
        foreach ($conditions as $conditionId => $condition) {
            if ($condition instanceof \Magento\Rule\Model\Condition\Combine) {
                $this->_removeAttributeFromConditions($condition, $attributeCode);
            }
            if ($condition instanceof \Magento\SalesRule\Model\Rule\Condition\Product) {
                if ($condition->getAttribute() == $attributeCode) {
                    unset($conditions[$conditionId]);
                }
            }
        }
        $combine->setConditions($conditions);
    }
}

redpajama_set_name: RedPajamaGithub


text:
module.exports = function(grunt) {
	grunt.initConfig({
		pkg: grunt.file.readJSON('package.json'),
		watch: {

			// Set our watch options for livereload
			options: {
				livereload: {
					options: {
						livereload: true
					},
					files: ['public/**/*']
				}
			},

			// Watch our Sass files for changes...
			sass: {
				files: [ 'source/css/**/*.{scss,sass}' ],
				tasks: [ 'compass' ]
			},

			// Keep an eye on the Pattern Lab pattern templates...
			patterns: {
				files: [
					'source/_patterns/**/*.mustache',
					'source/_patterns/**/*.json',
					'source/_data/*.json'
				],
				tasks: [ 'shell:patternlab' ],
				options: {
					spawn: false,
					livereload: true
				}
			}
		},

		// Process our .scss files using Compass.
		compass: {
			dist: {
				options: {
					sassDir: 'source/css/',
					cssDir: 'public/css/'
				}
			}
		},

		// Rebuilds our Pattern Lab site if a template file has changed.
		shell: {
			patternlab: {
				command: "php core/builder.php -pg"
			}
		}

	});

	grunt.loadNpmTasks('grunt-contrib-watch');
	grunt.loadNpmTasks('grunt-contrib-compass');
	grunt.loadNpmTasks('grunt-shell');

	grunt.registerTask('default',["watch"]);

};


text:
package org.jkiss.dbeaver.ext.import_config.wizards;

import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.swt.SWT;
import org.eclipse.ui.IImportWizard;
import org.eclipse.ui.IWorkbench;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration;
import org.jkiss.dbeaver.model.connection.DBPDriverLibrary;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.registry.*;
import org.jkiss.dbeaver.registry.driver.DriverDescriptor;
import org.jkiss.dbeaver.runtime.ui.DBUserInterface;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dialogs.SelectObjectDialog;
import org.jkiss.utils.CommonUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public abstract class ConfigImportWizard extends Wizard implements IImportWizard {

	private ConfigImportWizardPage mainPage;
    private Map<String, DriverDescriptor> driverClassMap = new HashMap<>();

    public ConfigImportWizard() {
		super();
	}

	@Override
    public void init(IWorkbench workbench, IStructuredSelection selection) {
		setWindowTitle("Import Configuration"); //NON-NLS-1
		setNeedsProgressMonitor(true);
		mainPage = createMainPage(); //NON-NLS-1
	}

    protected abstract ConfigImportWizardPage createMainPage();

    @Override
    public void addPages() {
        super.addPages();
        addPage(mainPage);
    }

    @Override
    public boolean performFinish() {
        final ImportData importData = mainPage.getImportData();
        try {
            for (ImportConnectionInfo connectionInfo : importData.getConnections()) {
                if (connectionInfo.isChecked() && !findOrCreateDriver(connectionInfo)) {
                    return false;
                }
            }
            // Flush drivers configuration
            DataSourceProviderRegistry.getInstance().saveDrivers();
        } catch (DBException e) {
            DBUserInterface.getInstance().showError("Import driver", null, e);
            return false;
        }

        try {
            for (ImportConnectionInfo connectionInfo : importData.getConnections()) {
                if (connectionInfo.isChecked()) {
                    importConnection(connectionInfo);
                }
            }
        } catch (DBException e) {
            DBUserInterface.getInstance().showError("Import driver", null, e);
            return false;
        }

        return true;
    }

    private boolean findOrCreateDriver(ImportConnectionInfo connectionInfo) throws DBException
    {
        final ImportDriverInfo driverInfo = connectionInfo.getDriverInfo();
        if (CommonUtils.isEmpty(driverInfo.getDriverClass())) {
            throw new DBException("Cannot create driver '" + driverInfo.getName() + "' - no driver class specified");
        }
        String sampleURL = driverInfo.getSampleURL();
        if (CommonUtils.isEmpty(sampleURL)) {
            throw new DBException("Cannot create driver '" + driverInfo.getName() + "' - no connection URL pattern specified");
        }
        {
            DriverDescriptor driver = driverClassMap.get(driverInfo.getDriverClass());
            if (driver != null) {
                connectionInfo.setDriver(driver);
                return true;
            }
        }
        final DataSourceProviderRegistry registry = DataSourceProviderRegistry.getInstance();
        List<DriverDescriptor> matchedDrivers = new ArrayList<>();
        for (DataSourceProviderDescriptor dataSourceProvider : registry.getDataSourceProviders()) {
            for (DriverDescriptor driver : dataSourceProvider.getEnabledDrivers()) {
                final String driverClassName = driver.getDriverClassName();
                if (driverClassName != null && driverClassName.equals(driverInfo.getDriverClass())) {
                    matchedDrivers.add(driver);
                }
            }
        }

        DriverDescriptor driver;
        if (matchedDrivers.isEmpty()) {
            // Create new driver
            final DataSourceProviderDescriptor genericProvider = registry.getDataSourceProvider("generic");
            if (genericProvider == null) {
                throw new DBException("Generic datasource provider not found");
            }

            driver = genericProvider.createDriver();
            driver.setName(driverInfo.getName());
            driver.setDriverClassName(driverInfo.getDriverClass());
            driver.setSampleURL(driverInfo.getSampleURL());
            driver.setConnectionProperties(driverInfo.getProperties());
            driver.setDescription(driverInfo.getDescription());
            driver.setDriverDefaultPort(driverInfo.getDefaultPort());
            for (String path : driverInfo.getLibraries()) {
                driver.addDriverLibrary(path, DBPDriverLibrary.FileType.jar);
            }
            driver.setModified(true);
            genericProvider.addDriver(driver);
            connectionInfo.setDriver(driver);
        } else if (matchedDrivers.size() == 1) {
            // Use the only found driver
            driver = matchedDrivers.get(0);
            connectionInfo.setDriver(driver);
        } else {
            // Let user to choose correct driver
            driver = SelectObjectDialog.selectObject(
                getShell(), "Choose driver for connection '" + connectionInfo.getAlias() + "'", matchedDrivers);
            if (driver == null) {
                return false;
            }
            connectionInfo.setDriver(driver);
        }

        if (driver != null) {
            driverClassMap.put(driver.getDriverClassName(), driver);
            return true;
        }
        return false;
    }

    private void importConnection(ImportConnectionInfo connectionInfo) throws DBException
    {
        try {
            adaptConnectionUrl(connectionInfo);
        } catch (DBException e) {
            UIUtils.showMessageBox(getShell(), "Extract URL parameters", e.getMessage(), SWT.ICON_WARNING);
        }
        final DataSourceRegistry dataSourceRegistry = DBeaverCore.getInstance().getProjectRegistry().getActiveDataSourceRegistry();

        String name = connectionInfo.getAlias();
        for (int i = 0; ; i++) {
            if (dataSourceRegistry.findDataSourceByName(name) == null) {
                break;
            }
            name = connectionInfo.getAlias() + " " + (i + 1);
        }

        DBPConnectionConfiguration config = new DBPConnectionConfiguration();
        config.setProperties(connectionInfo.getProperties());
        config.setProviderProperties(connectionInfo.getProviderProperties());
        config.setUrl(connectionInfo.getUrl());
        config.setUserName(connectionInfo.getUser());
        config.setUserPassword(connectionInfo.getPassword());
        config.setHostName(connectionInfo.getHost());
        config.setHostPort(connectionInfo.getPort());
        config.setDatabaseName(connectionInfo.getDatabase());
        DataSourceDescriptor dataSource = new DataSourceDescriptor(
            dataSourceRegistry,
            DataSourceDescriptor.generateNewId(connectionInfo.getDriver()),
            connectionInfo.getDriver(),
            config);
        dataSource.setName(name);
        dataSource.setSavePassword(!CommonUtils.isEmpty(config.getUserPassword()));
        dataSourceRegistry.addDataSource(dataSource);
    }

    protected void adaptConnectionUrl(ImportConnectionInfo connectionInfo) throws DBException
    {
        String sampleURL = connectionInfo.getDriverInfo().getSampleURL();
        if (connectionInfo.getDriver() != null) {
            sampleURL = connectionInfo.getDriver().getSampleURL();
        }
        //connectionInfo.getDriver()
        String url = connectionInfo.getUrl();
        if (url != null) {
            // Parse url
            final DriverDescriptor.MetaURL metaURL = DriverDescriptor.parseSampleURL(sampleURL);
            int sourceOffset = 0;
            List<String> urlComponents = metaURL.getUrlComponents();
            for (int i = 0, urlComponentsSize = urlComponents.size(); i < urlComponentsSize; i++) {
                String component = urlComponents.get(i);
                if (component.length() > 2 && component.charAt(0) == '{' && component.charAt(component.length() - 1) == '}' &&
                    metaURL.getAvailableProperties().contains(component.substring(1, component.length() - 1))) {
                    // Property
                    int partEnd;
                    if (i < urlComponentsSize - 1) {
                        // Find next component
                        final String nextComponent = urlComponents.get(i + 1);
                        partEnd = url.indexOf(nextComponent, sourceOffset);
                        if (partEnd == -1) {
                            if (nextComponent.equals(":")) {
                                // Try to find another divider - dbvis sometimes contains bad sample URLs (e.g. for Oracle)
                                partEnd = url.indexOf("/", sourceOffset);
                            }
                            if (partEnd == -1) {
                                if (connectionInfo.getHost() == null) {
                                    throw new DBException("Can't parse URL '" + url + "' with pattern '" + sampleURL + "'. String '" + nextComponent + "' not found after '" + component);
                                } else {
                                    // We have connection properties anyway
                                    url = null;
                                    break;
                                }
                            }
                        }
                    } else {
                        partEnd = url.length();
                    }

                    String propertyValue = url.substring(sourceOffset, partEnd);
                    switch (component) {
                        case "{host}":
                            connectionInfo.setHost(propertyValue);
                            break;
                        case "{port}":
                            connectionInfo.setPort(propertyValue);
                            break;
                        case "{database}":
                            connectionInfo.setDatabase(propertyValue);
                            break;
                        default:
                            if (connectionInfo.getHost() == null) {
                                throw new DBException("Unsupported property " + component);
                            }
                    }
                    sourceOffset = partEnd;
                } else {
                    // Static string
                    sourceOffset += component.length();
                }
            }
        }
        if (url == null) {
            if (connectionInfo.getDriver() == null) {
                throw new DBCException("Can't detect target driver for '" + connectionInfo.getAlias() + "'");
            }
            if (connectionInfo.getHost() == null) {
                throw new DBCException("No URL and no host name - can't import connection '" + connectionInfo.getAlias() + "'");
            }
            // No URL - generate from props
            DBPConnectionConfiguration conConfig = new DBPConnectionConfiguration();
            conConfig.setHostName(connectionInfo.getHost());
            conConfig.setHostPort(connectionInfo.getPort());
            conConfig.setDatabaseName(connectionInfo.getDatabase());
            url = connectionInfo.getDriver().getDataSourceProvider().getConnectionURL(connectionInfo.getDriver(), conConfig);
            connectionInfo.setUrl(url);
        }
    }

}


text:
from module_kits.vtk_kit.mixins import SimpleVTKClassModuleBase
import vtk

class vtkPlaneSource(SimpleVTKClassModuleBase):
    def __init__(self, module_manager):
        SimpleVTKClassModuleBase.__init__(
            self, module_manager,
            vtk.vtkPlaneSource(), 'Processing.',
            (), ('vtkPolyData',),
            replaceDoc=True,
            inputFunctions=None, outputFunctions=None)


text:
<?php

namespace ServerGrove\Bundle\DemoBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;

class DefaultController extends Controller
{
    /**
     * @Route("/hello/{name}")
     * @Route("/", defaults={"name" = "Boca Raton"})
     * @Template()
     */
    public function indexAction($name)
    {
        return array('name' => $name);
    }
}


text:
nodecast-core
=============

ChromeCast Emulation with Node.js


text:
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
    def lowestCommonAncestor(self, root, p, q):
        """
        :type root: TreeNode
        :type p: TreeNode
        :type q: TreeNode
        :rtype: TreeNode
        """
        # Op1
        path1, path2 = [], []
        if not self.findPath(root, path1, p) or not self.findPath(root, path2, q):
            return None
        ans = None
        for i in range(min(len(path1), len(path2))):
            if path1[i].val == path2[i].val:
                ans = path1[i]
            else:
                break
        return ans

    def findPath(self, root, path, target):
        if root is None:
            return False
        path.append(root)
        if root == target:
            return True
        if root.left and self.findPath(root.left, path, target) or \
                root.right and self.findPath(root.right, path, target):
            return True
        path.pop()
        return False

    # Op2
    def lowestCommonAncestor(self, root, p, q):
        if root is None:
            return None
        if root == p or root == q:
            return root
        leftLCA = self.lowestCommonAncestor(root.left, p, q)
        rightLCA = self.lowestCommonAncestor(root.right, p, q)
        if leftLCA and rightLCA:
            return root
        return leftLCA if leftLCA else rightLCA

mytree = TreeNode(5)
mytree2 = TreeNode(5)
print(mytree == mytree2)


text:
<?php

namespace Chevron\HTML\Traits;

trait ElementPatternTrait {

	/**
	 * Array of common tags that are self empty
	 */
	protected $emptyTags = ["param", "embed", "iframe", "script"];

	/**
	 * Array of common tags that are self closing
	 */
	protected $selfClosingTags = ["hr", "br", "meta", "link", "base", "img", "input"];

	/**
	 * method to determine if the current tag is empty
	 * @return bool
	 */
	protected function isEmptyTag(){
		return in_array($this->tag, $this->emptyTags);
	}

	/**
	 * method to determine if the current tag is self closing
	 * @return bool
	 */
	protected function isSelfClosingTag(){
		return in_array($this->tag, $this->selfClosingTags);
	}

	/**
	 * method to return the correct printf pattern
	 * @return string
	 */
	protected function getPattern(){

		$pattern = '<%1$s%2$s>%3$s</%1$s>';

		if( $this->isEmptyTag() ){
			$pattern = '<%1$s%2$s></%1$s>';
		}

		if( $this->isSelfClosingTag() ){
			$pattern = '<%1$s%2$s />';
		}

		return $pattern;
	}

}


text:
<?php
// auto-generated by sfDatabaseConfigHandler
// date: 2011/11/17 22:10:12

return array(
'doctrine' => new sfDoctrineDatabase(array (
  'dsn' => 'mysql:dbname=hormigon_lareja;host=localhost',
  'username' => 'hormigon',
  'password' => 'H0rm160n',
  'encoding' => 'utf8',
  'attributes' =>
  array (
    'DEFAULT_TABLE_TYPE' => 'INNODB',
    'DEFAULT_TABLE_CHARSET' => 'utf8',
    'DEFAULT_TABLE_COLLATE' => 'utf8_general_ci',
  ),
  'name' => 'doctrine',
)),);


text:
import Debug.Trace

--------------------------------------------------
-- Links
--------------------------------------------------

links_bidirectional = [
  (1,2),
  (1,5),
  (2,3),
  (2,6),
  (3,4),
  (3,8),
  (3,7),
  (4,8),
  (4,7),
  (5,6),
  (6,7),
  (7,8)
  ]

links_unidirectional =
  links_bidirectional ++ reverse
  where
    reverse = map (\ (s,e) -> (e,s)) links_bidirectional

links = links_bidirectional  -- deprecated

--------------------------------------------------
-- Logic
--------------------------------------------------

maxInt :: Int
maxInt = maxBound::Int

-- Get the number of hops between a pair of cores
linkCost :: (Int, Int) -> Int
linkCost (x,y)
  | x == y     = trace ("linkCost eq with " ++ show (x,y)) (0)
  | otherwise  = trace ("linkCost other with " ++ show (x,y)) nb_min_costs_plus
  where
    nb_min_costs_plus  | nb_min_costs == maxInt    = maxInt
                       | otherwise                 = nb_min_costs + 1
    nb_min_costs    | (length nb_costs) == 0    = maxInt
                    | otherwise                 = trace ("calculating minimum for list " ++ show nb_costs) minimum nb_costs -- get minimum of these costs
    nb_costs = trace ("calculating nb cost for " ++ show nb_list) (map linkCost nb_list) -- get cost of these links
    nb_list = trace ("getting nbs reached by links " ++ show nb ) (map (\ (s,e) -> (e,y)) nb) -- prepare input tuples for recursive call
    nb = filter ((==x).fst) links_unidirectional -- find links to neighbors

main :: IO()
main = print (linkCost (1,3))

--------------------------------------------------
-- Playground
--------------------------------------------------

skt :: (Int, Int) -> Int
skt (a,b) = b

-- Get the number of hops between a pair of cores
linkCostTest :: (Int, Int) -> IO()
linkCostTest (x,y) = print nb_list
  where
    nb_list = map (\ (s,e) -> (e,y)) nb
    nb = filter ((==x).fst) links -- find links to neighbors

test :: IO()
test = print (length links_unidirectional)


text:
const ACTION_TYPES = require('./TYPES');

/**
 * Register messages for a locale
 * @param {String} locale
 * @param {Map<String:String>} messages
 * @return {Action}
 */
function registerLocale(locale, messages) {
    return { type: ACTION_TYPES.I18N_REGISTER_LOCALE, locale, messages };
}

/**
 * Register multiple locales
 * @param {Map<String:Object>} locales
 * @return {Action}
 */
function registerLocales(locales) {
    return (dispatch) => {
        for (const locale in locales) {
            if (!locales.hasOwnProperty(locale)) {
                continue;
            }

            dispatch(registerLocale(locale, locales[locale]));
        }
    };
}

module.exports = {
    registerLocale,
    registerLocales
};


text:
if [ ! -d $LOG_DIR ];
then
  mkdir -p $LOG_DIR
fi
ccArgs='-client-net-ip-address '$CLIENT_NET_IP
ccArgs=$ccArgs' -client-net-port '$CLIENT_NET_PORT
ccArgs=$ccArgs' -cluster-net-ip-address '$CLUSTER_NET_IP
ccArgs=$ccArgs' -cluster-net-port '$CLUSTER_NET_PORT
ccArgs=$ccArgs' -http-port '$HTTP_PORT

if [ ! -z $HEARTBEAT_PERIOD ]
then
ccArgs=$ccArgs' -heartbeat-period '$HEARTBEAT_PERIOD
fi

if [ ! -z $MAX_HEARTBEAT_LAPSE_PERIODS ]
then
ccArgs=$ccArgs' -max-heartbeat-lapse-periods '$MAX_HEARTBEAT_LAPSE_PERIODS
fi

if [ ! -z $PROFILE_DUMP_PERIOD ]
then
ccArgs=$ccArgs' -profile-dump-period '$PROFILE_DUMP_PERIOD
fi

if [ ! -z $DEFAULT_MAX_JOB_ATTEMPTS ]
then
ccArgs=$ccArgs' -default-max-job-attempts '$DEFAULT_MAX_JOB_ATTEMPTS
fi

if [ ! -z $JOB_HISTORY_SIZE ]
then
ccArgs=$ccArgs' -job-history-size '$JOB_HISTORY_SIZE
fi

if [ ! -z $RESULT_TIME_TO_LIVE ]
then
ccArgs=$ccArgs' "-result-time-to-live '$RESULT_TIME_TO_LIVE
fi

if [ ! -z $RESULT_SWEEP_THRESHOLD ]
then
ccArgs=$ccArgs' -result-sweep-threshold '$RESULT_SWEEP_THRESHOLD
fi

if [ ! -z $CC_ROOT ]
then
ccArgs=$ccArgs' -cc-root '$CC_ROOT
fi
cd $WORKING_DIR
DATE=`date`

cat <<EOF >> $LOG_DIR/cc.log
--------------------------------------------------------------------------------
LOG START: $DATE
--------------------------------------------------------------------------------
EOF
$ASTERIX_HOME/bin/asterixcc echo $ccArgs >> $LOG_DIR/cc.log 2>&1


text:
import { Observable } from 'rxjs';
import { hasValue } from '@uiux/fn';

export function hasValuePipe<T>(): any {
  return (source: Observable<T>): Observable<T> => {
    return new Observable((observer) => {
      return source.subscribe({
        next(x: any) {
          if (hasValue(x)) {
            observer.next(x);
          }
        },
        error(err) {
          observer.error(err);
        },
        complete() {
          observer.complete();
        },
      });
    });
  };
}


text:
package integration_test

import (
	"github.com/cloudfoundry/libbuildpack/cutlass"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

var _ = Describe("pushing a static app with dummy file in root", func() {
	var app *cutlass.App
	AfterEach(func() {
		if app != nil {
			app.Destroy()
		}
		app = nil
	})

	BeforeEach(func() {
		app = cutlass.New(Fixtures("public_unspecified"))
		PushAppAndConfirm(app)
	})

	It("should only have dummy file in public", func() {
		files, err := app.Files("app")
		Expect(err).To(BeNil())

		Expect(files).To(ContainElement("app/public/dummy_file"))
		Expect(files).ToNot(ContainElement("app/dummy_file"))
	})
})


text:
<!doctype html>

  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">

  <title>dragula-element demo</title>

  <link rel="import" href="../../../iron-demo-helpers/demo-snippet.html">
  <link rel="import" href="../../../iron-demo-helpers/demo-pages-shared-styles.html">
  <link rel="import" href="custom-mirror.html">

Mirrors can be custom made!

    <custom-mirror></custom-mirror>


text:
typedef struct uieventnode
	{
	short			x,y;					// Location of the event (if any)
	CampaignTime	time;
	uchar			flags;
	Team			team;					// The team which benifited the most from this
	_TCHAR			*eventText;				// The text output
	uieventnode		*next;
	} CampUIEventElement;

// ============================
// Functions
// ============================

extern void DisposeEventList (CampUIEventElement* root);

extern void SendCampUIMessage (FalconCampEventMessage *message);

extern void TrimEventList (CampUIEventElement *root, int length);

#endif


text:
import os
import tempfile
import struct
import re
from subprocess import Popen, PIPE
from nose.plugins.skip import Skip, SkipTest
import ubpf.assembler
import testdata
VM = os.path.join(os.path.dirname(os.path.realpath(__file__)), "..", "vm", "test")

def check_datafile(filename):
    """
    Given assembly source code and an expected result, run the eBPF program and
    verify that the result matches.
    """
    data = testdata.read(filename)
    if 'asm' not in data and 'raw' not in data:
        raise SkipTest("no asm or raw section in datafile")
    if 'result' not in data and 'error' not in data and 'error pattern' not in data:
        raise SkipTest("no result or error section in datafile")
    if not os.path.exists(VM):
        raise SkipTest("VM not found")

    if 'raw' in data:
        code = b''.join(struct.pack("=Q", x) for x in data['raw'])
    else:
        code = ubpf.assembler.assemble(data['asm'])

    memfile = None

    cmd = [VM]
    if 'mem' in data:
        memfile = tempfile.NamedTemporaryFile()
        memfile.write(data['mem'])
        memfile.flush()
        cmd.extend(['-m', memfile.name])

    cmd.append('-')

    vm = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)

    stdout, stderr = vm.communicate(code)
    stdout = stdout.decode("utf-8")
    stderr = stderr.decode("utf-8")
    stderr = stderr.strip()

    if memfile:
        memfile.close()

    if 'error' in data:
        if data['error'] != stderr:
            raise AssertionError("Expected error %r, got %r" % (data['error'], stderr))
    elif 'error pattern' in data:
        if not re.search(data['error pattern'], stderr):
            raise AssertionError("Expected error matching %r, got %r" % (data['error pattern'], stderr))
    else:
        if stderr:
            raise AssertionError("Unexpected error %r" % stderr)

    if 'result' in data:
        if vm.returncode != 0:
            raise AssertionError("VM exited with status %d, stderr=%r" % (vm.returncode, stderr))
        expected = int(data['result'], 0)
        result = int(stdout, 0)
        if expected != result:
            raise AssertionError("Expected result 0x%x, got 0x%x, stderr=%r" % (expected, result, stderr))
    else:
        if vm.returncode == 0:
            raise AssertionError("Expected VM to exit with an error code")

def test_datafiles():
    # Nose test generator
    # Creates a testcase for each datafile
    for filename in testdata.list_files():
        yield check_datafile, filename


text:
import logging

import hashlib
import base64
import random
import re
import json

from django.conf import settings
from django.contrib.auth.models import User
from django.db import models, transaction
from django.db.models import Q

from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic

from django.utils.translation import ugettext_lazy as _

def generate_key():
    """Generate a random API key
    see: http://jetfar.com/simple-api-key-generation-in-python/
    """
    return (base64.b64encode(hashlib.sha256(
            str(random.getrandbits(256))).digest(),
            random.choice(['rA', 'aZ', 'gQ', 'hH', 'hG', 'aR', 'DD']))
            .rstrip('=='))

def hash_secret(secret):
    return hashlib.sha512(settings.SECRET_KEY + secret).hexdigest()

class Key(models.Model):
    """Authentication key"""
    user = models.ForeignKey(User, editable=False, db_index=True, blank=False,
            null=False)
    key = models.CharField(_("Lookup key"),
            max_length=64, editable=False, db_index=True)
    hashed_secret = models.CharField(_("Hashed secret"),
            max_length=128, editable=False, db_index=False)
    description = models.TextField(_("Description of intended use"),
            blank=False)
    is_disabled = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return '<Key %s %s>' % (self.user, self.key)

    def generate_secret(self):
        self.key = generate_key()
        secret = generate_key()
        self.hashed_secret = hash_secret(secret)
        return secret

    def check_secret(self, secret):
        return hash_secret(secret) == self.hashed_secret

    def disable(self):
        self.is_disabled = True
        self.save()

    def log(self, action, content_object=None, notes=None):
        action = KeyAction(key=self, action=action,
                           content_object=content_object, notes=notes)
        action.save()
        return action

class KeyAction(models.Model):
    """Record of an action taken while using a key"""
    key = models.ForeignKey(Key, related_name='history', db_index=True)
    action = models.CharField(max_length=128, blank=False)
    notes = models.TextField(null=True)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')
    created = models.DateTimeField(auto_now_add=True)


text:
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
	xmlns:g="urn:import:com.google.gwt.user.client.ui"
	xmlns:c="urn:import:com.google.gwt.user.cellview.client"
	xmlns:b="urn:import:org.gwtbootstrap3.client.ui"
	xmlns:bh="urn:import:org.gwtbootstrap3.client.ui.html"
	xmlns:t="urn:import:org.sagebionetworks.web.client.view.bootstrap.table">
	<bh:Div>
		<b:Modal ui:field="dialog" title="" closable="true"
			dataBackdrop="STATIC" dataKeyboard="true"
			addStyleNames="modal-fullscreen">
			<b:ModalBody>
				<b:FormGroup ui:field="currentStateUI">
					<b:FormLabel>State</b:FormLabel>
					<g:Label ui:field="stateField2" />
					<b:BlockQuote ui:field="rejectedReasonField" />
				</b:FormGroup>
				<b:FormGroup ui:field="submittedOnUI">
					<b:FormLabel>Submitted On</b:FormLabel>
					<g:Label ui:field="submittedOnField2" />
				</b:FormGroup>
				<b:FormGroup ui:field="projectLeadUI">
					<b:FormLabel>Project Lead</b:FormLabel>
					<g:Label ui:field="projectLeadField" />
				</b:FormGroup>
				<b:FormGroup ui:field="institutionUI">
					<b:FormLabel>Institution</b:FormLabel>
					<g:Label ui:field="institutionField2" />
				</b:FormGroup>
				<b:FormGroup ui:field="intendedDataUseUI">
					<b:FormLabel>Intended Data Use</b:FormLabel>
					<b:TextArea ui:field="intendedDataUseField"
						readOnly="true" visibleLines="10" />
				</b:FormGroup>
				<b:FormGroup ui:field="accessorsUI">
					<b:FormLabel>Data Requestors</b:FormLabel>
					<bh:Div ui:field="accessorsContainer" />
				</b:FormGroup>
				<b:FormGroup ui:field="ducUI">
					<b:FormLabel>DUC</b:FormLabel>
					<bh:Div ui:field="ducContainer" />
				</b:FormGroup>
				<b:FormGroup ui:field="irbUI">
					<b:FormLabel>IRB</b:FormLabel>
					<bh:Div ui:field="irbContainer" />
				</b:FormGroup>
				<b:FormGroup ui:field="otherAttachmentsUI">
					<b:FormLabel>Other Attachments</b:FormLabel>
					<bh:Div ui:field="otherAttachmentsContainer" />
				</b:FormGroup>
				<b:FormGroup ui:field="isRenewalUI">
					<b:FormLabel>Is Renewal</b:FormLabel>
					<b:CheckBox ui:field="renewalCheckbox" enabled="false" />
				</b:FormGroup>
				<b:FormGroup ui:field="publicationsUI">
					<b:FormLabel>Publications</b:FormLabel>
					<b:TextArea ui:field="publicationsField" readOnly="true"
						visibleLines="10" />
				</b:FormGroup>
				<b:FormGroup ui:field="summaryOfUseUI">
					<b:FormLabel>Summary Of Use</b:FormLabel>
					<b:TextArea ui:field="summaryOfUseField" readOnly="true"
						visibleLines="10" />
				</b:FormGroup>
			</b:ModalBody>
			<b:ModalFooter>
				<b:Button ui:field="rejectButton" type="WARNING"
					visible="false" text="Reject" />
				<b:Button ui:field="approveButton" type="SUCCESS"
					visible="false" text="Approve" />
				<b:Button ui:field="closeButton" type="DEFAULT"
					text="Close" />
			</b:ModalFooter>
		</b:Modal>
		<bh:Span ui:field="promptModalContainer" />
		<bh:Div ui:field="synAlertContainer" />
		<t:Table
			addStyleNames="table-layout-fixed border-top-1 margin-left-10"
			width="100%">
			<t:TableRow>
				<t:TableData width="100px">
					<b:Button ui:field="moreInfoButton" type="PRIMARY"
						size="EXTRA_SMALL"
						addStyleNames="margin-top-10 margin-right-2 margin-bottom-5"
						text="Show" />
				</t:TableData>
				<t:TableData width="115px">
					<g:Label ui:field="stateField" />
				</t:TableData>
				<t:TableData width="175px">
					<g:Label ui:field="submittedOnField" />
				</t:TableData>
				<t:TableData width="50%">
					<bh:Div ui:field="submittedByContainer" />
				</t:TableData>
				<t:TableData width="50%">
					<g:Label ui:field="institutionField" />
				</t:TableData>
			</t:TableRow>
		</t:Table>
	</bh:Div>

</ui:UiBinder>


text:
<?php

/*-----------------------------------------------------------------------------------------------
==> Instructions:
    - place the tweetledee directory in the public facing directory on your web server (frequently public_html)
    - Access the default user timeline feed (count = 25, includes both RT's & replies) at the following URL:
            e.g. http://<yourdomain>/tweetledee/userrss.php
==> User Timeline RSS feed parameters:
    - 'c' - specify a tweet count (range 1 - 200, default = 25)
            e.g. http://<yourdomain>/tweetledee/userrss.php?c=100
    - 'user' - specify the Twitter user whose timeline you would like to retrieve (default = account associated with access token)
            e.g. http://<yourdomain>/tweetledee/userrss.php?user=cooluser
    - 'xrt' - exclude retweets (1=true, default = false)
            e.g. http://<yourdomain>/tweetledee/userrss.php?xrt=1
    - 'xrp' - exclude replies (1=true, default = false)
            e.g. http://<yourdomain>/tweetledee/userrss.php?xrp=1
    - 'cache_interval' - specify the duration of the cache interval in seconds (default = 90sec)
    - 'recursion_limit' - When a tweet is a reply, specifies the maximum number of "parents" tweets to load (default = 0).
                        A value of 10 can be used without significative performance cost on Raspberry 3.
                        This can be short-handed to 'rl'
--------------------------------------------------------------------------------------------------*/
/*******************************************************************
 *  Includes
 ********************************************************************/
require 'tldlib/debug.php';
// Matt Harris' Twitter OAuth library
require 'tldlib/tmhOAuth.php';
require 'tldlib/tmhUtilities.php';

// include user keys
require 'tldlib/keys/tweetledee_keys.php';

// include Geoff Smith's utility functions
require 'tldlib/tldUtilities.php';

// include Christian Varga's twitter cache
require 'tldlib/tldCache.php';

require 'tldlib/renderers/rss.php';

require 'tldlib/parametersProcessing.php';

$parameters = load_parameters([
    "c",
    "exclude_retweets",
    "exclude_replies",
    "user",
    "cache_interval",
    "recursion_limit"
]);
extract($parameters);
$include_retweets = !$exclude_retweets;

/*******************************************************************
 *  OAuth
 ********************************************************************/

$tldCache = new tldCache([
    'consumer_key'        => $my_consumer_key,
    'consumer_secret'     => $my_consumer_secret,
    'user_token'          => $my_access_token,
    'user_secret'         => $my_access_token_secret,
    'curl_ssl_verifypeer' => false
], $cache_interval);

// request the user information
$data = $tldCache->auth_request();

// Parse information from response
$twitterName = $data['screen_name'];
$fullName = $data['name'];
$twitterAvatarUrl = $data['profile_image_url_https'];
if (!isset($screen_name) || $screen_name == '') {
    $screen_name = $data['screen_name'];
}

/*******************************************************************
 *  Request
 ********************************************************************/

$userTimelineObj = $tldCache->user_request([
    'url' => '1.1/statuses/user_timeline',
    'params' => [
        'include_entities' => true,
        'count' => $count,
        'exclude_replies' => $exclude_replies,
        'include_rts' => $include_retweets,
        'screen_name' => $screen_name,
    ]
]);

// concatenate the URL for the atom href link
if (defined('STDIN')) {
    $thequery = $_SERVER['PHP_SELF'];
} else {
    $thequery = $_SERVER['PHP_SELF'] . '?' . urlencode($_SERVER['QUERY_STRING']);
}

// Start the output
header("Content-Type: application/rss+xml");
header("Content-type: text/xml; charset=utf-8");

$renderer = new RssRenderer($recursion_limit);
$renderer->using_cache($tldCache);
$config = [
    'atom'              =>  $my_domain . $thequery,
    'link'              =>  sprintf('http://www.twitter.com/%s', $screen_name),
    'lastBuildDate'     =>  date(DATE_RSS),
    'title'             =>  sprintf('Twitter user timeline feed for %s', $screen_name),
    'description'       =>  sprintf('Twitter user timeline updates for %s', $screen_name),
    'twitterAvatarUrl'  =>  $twitterAvatarUrl
];
echo $renderer->render_feed($config, $userTimelineObj);


text:
Tame your messy OS X desktop contents with ease using this wrapper for the excellent [ZBackup](https://github.com/zbackup/zbackup).

## Prerequisites

ZBackup - [https://github.com/zbackup/zbackup]()

## Installation

`wget https://raw.githubusercontent.com/Jabbslad/desk/master/desk && chmod +x desk`

## Usage

### Clear Desktop

`desk clear` - archives desktop contents

`desk clear "archive screenshots"` - archives desktop contents with optional comment

### List Desktop Archives

`desk ls` - list desktop archives with comments

### Peek Into Desktop Archive

`desk peek` - list contents of latest archive

`desk peek <name>` - list contents of named archive

### Restore Desktop Archive

`desk restore` - restore latest archive to desktop

`desk restore <name>` - restore named archive to desktop

### Remove Archive

`desk rm <name>` - delete/remove named archive

## License

MIT License

Copyright (c) 2016 Jamie Atkinson

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


text:
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php
thongtin.php


text:
package com.oce.springboot.training.d01.s04.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * A simple Spring configuration, which wires the beans automatically via {@link ComponentScan}ing
 *
 * @author bogdan.solga
 */
@Configuration
@ComponentScan(basePackages = "com.oce.springboot.training.d01.s04")
public class ComponentModelConfig {
}